本人是为了学习机器人领域知识,使用和开发ROS,因此以Ubuntu20.04为实例进行学习。本文将从Linux基本介绍、Linux目录结构、Vim编辑器、开机重启登录注销、用户管理、一些非常实用的指令以及组管理与权限管理指令这几个方面进行简单介绍,让初学者能够快速入门Ubuntu系统。
目录
前言
Linux系统发展至今,仍生生不息,在很多领域都有着广泛的应用。在人工智能和机器人学习中,都经常使用Linux系统。对于CV领域来说,经常使用服务器来提升算力,使用XShell等远程登陆平台进行开发,经常在Linux平台上进行。对于机器人领域来说,经常使用ROS进行仿真和开发,ROS这类元操作系统主要也是依托于Linux,因此学习Linux,掌握基本的Linux指令,至关重要。
一、Linux基本介绍
Linux系统的发行版本有很多,本人学习使用的版本是Ubuntu20.04,主要是为后续学习机器人以及OpenCV的知识做铺垫。Linux在服务器领域和嵌入式领域应用广泛,随着Ubuntu和Fedora等优秀桌面环境的兴起,Linux在个人桌面占有率不断提高。关于Linux的一些介绍,大家可以在百度或者Google等搜索引擎上搜索,都有详细的介绍。
二、Linux目录结构
关于Linux的文件结构,体现为“一切皆文件”。
主要的目录结构如下:
对于初学者而言,需要了解一下Linux的目录结构,在Ubuntu系统中,查看系统目录如下:
三、Vim编辑器
Vim编辑器是Linux系统内置的文本编辑器,具有程序编辑的能力。
Vim有三种模式,分别为正常模式、插入模式和命令行模式。
我们在终端中输入vim即可进入正常模式。按下i,I,o,O,a,A,r,R等4任何一个字母即可进入编辑模式,也就是插入模式。我们完成编辑之后,输入esc再输入:wq即可完成保存并退出,回退到命令行模式。
四、开机重启登录注销
4.1 关机&重启
- shutdown -h now——立刻进行关机
- halt——关机
- reboot——立刻重启计算机
- sync——把内存的数据同步到磁盘
4.2 用户登录注销
- su——登录root用户
- su -[用户名]——登录指定用户
- logout——在运行级别3(多用户有网络服务)注销登录用户
- exit——在运行级别5(图形化界面)注销登录用户
五、用户管理
5.1 用户基本介绍
Linux是一个多用户多任务的操作系统,要使用系统资源的用户,必须向系统管理员申请一个账号,然后以该账号的身份进入系统。
Linux的管理员即为root用户,在root用户的管理下,可以添加其他的用户,root管理员可以给这些用户添加权限。关于用户、用户组以及管理员、普通用户的示意图如下:
上面示例说明:root用户是管理员,在下面有三个用户组,分别为group1,group2和group3,group1下面有三个普通用户,分别是小明、小红和小黑。
这部分与后面权限管理的内容有关,读者可以看到后面再回顾一下。
5.2 添加/删除/查询用户/修改密码
- useradd [用户名]——添加用户
- userdel [用户名]——删除用户
- id [用户名]——查询用户
- passwd [用户名]——修改或设置当前用户密码
5.3 添加/删除/修改用户组
- groupadd [用户名]——添加用户
- groupdel [用户名]——删除用户
- useradd -g [用户名] [组名]——增加一个用户并指定所属组
- usermod -g [用户名] [组名]——修改用户的组
六、其他常用指令
6.1 文件目录指令
- sudo nautilus——打开文件管理器,并以root管理员权限对文件和目录进行操作
- pwd——显示当前工作目录
- ls——显示当前目录下的所有文件和目录
- cd [绝对路径]——切换到指定目录
- cd .. ——切换到当前目录的上一级目录(相对路径)
- mkdir [创建的目录]——创建目录
- touch [文件名称]——创建空文件
- cp [目录下的文件] [指定目录]——拷贝文件到指定目录
- mv [目录下的文件] [指定目录]——移动文件到指定目录
- rm (-rf) [要删除的文件或目录]——删除文件或目录( -rf 谨慎使用)
- cat [目录下的文件]——查看文件内容
- echo [输出内容]——输出内容到控制台
- > [文件]——输出重定向(覆盖)
- >> [文件]——追加
6.2 时间日期指令
- date——显示当前时间
- cal——查看日历
6.3 搜索查找指令
- find [搜索范围] [-name或-user或-size] [文件名]——找到满足条件文件或目录
- grep [查找内容] [源文件]——过滤查找
6.4 压缩解压指令
- gzip [文件名]——压缩文件为.gz格式
- gunzip [文件名]——解压缩文件
- zip [文件名]——压缩文件和目录
- unzip [文件名]——解压缩文件
- tar -zcvf [文件名]——压缩文件
- tar -zxvf [文件名]——解压缩文件
tar命令的选项如下:
6.5 帮助指令
- man [命令或配置文件]
- help [命令或配置文件]
- [命令] -h
七、组管理与权限管理
7.1 组与权限关系
根据上面的示意图,简要说明一下:小明创建了一个123.txt文件,在初始时,小明是该文件的创建者也是所有者(可以修改所有者,用chown指令),小明所属的组为group1,那么123.txt属于group1这个组,而123.txt与其他组及其成员无关。对于123.txt来说,小明为所有者记为u,group1为该文件的所属组记为g,其他组的成员与该文件无关,记为o。
一般来说,权限根据用户分为三部分,一个是user(缩写为u),一个是group(组内除所有者user之外的成员,缩写为g),一个是其他成员others(缩写为o),我们将对这三种类型的成员进行权限的管理(增加或删除权限)。在 7.3 和 7.4 中,本文还会详细介绍。
7.2 组管理指令
- chown [用户名] [文件名]——修改文件的所有者
- chgrp [组名] [文件名]——修改文件/目录所在的组
- usermod -g [新组名] [用户名]——改变用户所在组
7.3 权限基本介绍
我们输入ll或者ls -l 指令,显示的内容如下格式:
drwxr-xr-x 4 root root 4096 7月 31 11:23 ../
0-9位说明:
第0位确定文件类型(d,1,c,b):
- l是链接,相当于windows的快捷方式;
- d是目录,相当于windows的文件夹;
- c是字符设备文件,比如鼠标和键盘;
- b是块设备,比如硬盘。
- -为普通文件。
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。——User
第4-6位确定所属组(同用户组的)拥有该文件的权限。——Group
第7-9位确定其他用户拥有该文件的权限。——Other
示例详解:
-rwxrw----这10个字符确定了不同用户能对文件干什么
第一个字符代表文件类型:- I d c b(参照上面的说明)
其余字符每3个一组读(r)写(w)执行(x)
- 第一组rwx:文件拥有者的权限是读、写和执行
- 第二组rw-:与文件拥有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
对于上面的示例,我们也可以用数字表示为:r=4,w=2,x=。因此 rwx = 4+2+1=7,数字可以进行组合。
其他说明:
以 drwxr-xr-x 4 root root 4096 7月 31 11:23 ../ 为例
4:对于文件而言是硬连接数为4,对于目录而言是子目录数为4
第一个root:表示文件所属用户为root,即所有者为root
第二个root:表示文件所属组为root
4096:文件大小(字节);如果是文件夹,显示4096,因此该示例为文件夹
7月 31 11:23:最后修改日期
../ :文件名或文件夹名称
上面对于权限的讲解是分三种类别对象来说的,下面我们将对文件和文件夹分别进行权限的分析。
对于文件而言:
- [r]代表可读(read)——可以读取,查看。
- [w]代表可写(write)——可以修改,但是不一定能删除该文件。对目录有写权限才能删除文件。
- [x]代表可执行(execute)——可以被执行。
对于目录而言:
- [r]代表可读(read)——可以读取,可以使用 ls 查看目录内容。
- [w]代表可写(write)——可以修改,对目录内的文件进行创建+删除+重命名。
- [x]代表可执行(execute)——可以进入该目录,可以使用 cd 切换到该目录下。
7.4 权限管理指令
方式一:通过 +、-、= 变更权限
chmod u=rwx,g=x,o=x [文件/目录名]——设置该文件权限为所有者user具有读、写和执行的权限,组内成员具有执行的权限,其他用户具有执行的权限
chmod o+w [文件/目录名]——添加其他用户具有执行的权限
chmod a-x [文件/目录名]——减少所有人(u&g&o)执行的权限
方式二:通过数字变更权限
r = 4,w = 2,x = 1
chmod u=rwx,g=rx,o=x [文件/目录] 相当于是 chmod 751 [文件/目录]
总结
最后,本文简要说一下Linux命令行的一些快捷键操作,如ctrl+c停止,ctrl+z暂停,tab键自动补全命令,这三个经常使用到。本文主要介绍了Linux的一些常用的指令,希望能给初学者一些帮助和启发。Linux中还有很多其他指令,需要大家动手去练习和熟悉。