1.Linux学习路径
2.Linux常用命令
2.1重要快捷键
【Tab】使用Tab键来进行命令补全,可以补全命令/目录/命令参数等。
【Ctrl+c】强行终止当前程序
【Ctrl+d】键盘输入结束或退出终端
【Ctrl+s】暂停当前程序,暂停后按下任意键恢复运行
【Ctrl+z】将当前程序放到后台运行,恢复到前台为命令【fg】
【Ctrl+a】将光标移至输入行头,相当于【Home】键
【Ctrl+e】将光标移至输入行末,相当于【End】键
【Ctrl+k】删除从光标所在位置到行末
【Alt+Backspace】向前删除一个单词
【Shift+PgUp】将终端显示向上滚动
【Shift+PgOn】将终端显示向下滚动
【↑】输入历史输入命令
2.2通配符
通配符是一种特殊语句,主要有星号【*】和问号【?】,用来对字符串进行模糊匹配(比如文件名、参数名)。
终端里面输入的通配符是由Shell处理的,不是由所涉及的命令语句处理的,它只会出现在命令的“参数值”里面,不能出现在命令名称里面。当Shell在“参数值”中遇到了通配符,Shell会将其当作路径或者文件名在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给”命令“,由命令进行处理。
在通配符被处理后,Shell会先完成命令的重组,然后继续处理重组后的命令,直至执行该命令。
Shell常用通配符:
字符 | 含义 |
---|---|
* | 匹配0或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配list中的任意单一字符 |
[^list] | 匹配除list中的任意单一字符以外的字符 |
c1-c2 | 匹配c1-c2中的任意单一字符,如:[0-9],[a-z] |
{string1,string2,...} | 匹配string1或string2{或更多}其一字符串 |
{c1..c2} | 匹配c1-c2中全部字符,如{1..10} |
2.3学会在命令行中获取帮助
使用man
命令,即Manual pages的缩写。Manual pages是UNIX或类UNIX操作系统中在线软件文档的一种普遍形式,内容包括计算机程序(包括库和系统调用)、正式的标准或惯例,甚至是抽象的概念。
你可以使用如下方式获得某个命令的说明或使用方式的详细介绍:
man <command_name>
比如你想查看man命令本身的使用方式,你可以输入:
man man
通常man手册中的内容很多,你可能不太容易想找到你想要的结果,可以使用/<你要搜索的关键字>
进行搜索,查找完毕后使用【n】键切换到下一个关键字所在处,【Shift+n】为上一个关键字所在处,使用【Space】进行翻页,【Enter】向下一行滚动,或使用【k】、【j】进行向前或向后滚动一行。【h】为显示使用帮助,【q】退出。
想要获得更详细的帮助,还可以使用info
命令。如果你知道某个命令的作用,只是想查看它的某个具体参数的作用,那么你可以使用--help
参数,大部分命令都会带有这个参数,如:
ls --help
3.用户管理
3.1查看用户
打开终端,输入命令who am i
或者who mom likes
,输出的第一列表示当前登陆用户的用户名。输入命令whoami
,可以查看当前用户的用户名。
在某些环境中,
who am i
和who mom likes
不会输出任何内容,这是因为当前使用的SHELL不是登录时的SHELL,没有用户与who的stdin关联,因此不会输出任何内容。
who命令其他常用参数:
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i 、mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
3.2创建用户
在Linux系统中,root账户拥有整个系统最高权限,比如新建和添加用户。
su
,su-
与sudo
su <user>
可以切换到用户user,执行时需要输入目标用户的密码,sudo <cmd>
可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户的密码。su - <user>
命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。
创建一个名为wwq的用户:sudo adduser wwq
,这个命令不仅可以添加用户到系统,同时也会默认为新用户在/home
目录下创建一个工作目录:ls /home
。可以使用su - wwq
来切换登录用户。使用exit
命令或者【Ctrl+d】退出当前用户。
3.3用户组
在Linux中,每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。一个用户可以属于多个用户组。
查看用户组方法一:groups <username>
,输出结果冒号之前表示用户,冒号之后表示该用户所属的用户组。每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。
默认情况下,在sudo用户组里的用户可以使用sudo命令获得root权限。
查看用户组方法二:查看/etc/group
文件,使用命令cat /etc/group | sort
。cat
命令用于读取指定文件的内容并打印到终端输出。| sort
表示将读取的文件进行一个字典排序再输出。还可以使用cat /etc/group | grep -E "wwq"
来进行精确查找。
/etc/group
文件格式说明:其内容包括用户组(Group)、用户组口令、GID(组ID)及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:passsword:GID:user_list
其中,psaaword字段为一个x,表示密码不可见。如果用户的GID等于用户组的GID,则最后一个字段user_list是空的,这里的GID是指用户默认所在组的GID,可以使用id
命令查看。
3.4将其他用户加入sudo用户组
先切换至sudo用户组的任意用户下或直接使用root用户,否则会提示该用户不在sudoers文件中。
使用usermod
命令可以为用户添加用户组,同样使用该命令你必须有root权限。如下:
sudo usermod -G sudo wwq
然后使用groups wwq
来查看该用户的用户组。
3.5删除用户和用户组
使用deluser
命令删除用户,如下:
sudo deluser wwq --remove-home
使用--remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用,那么系统会自动在/home
目录下为该用户保留工作目录。
使用groupdel
命令删除用户组,如下:
sudo groupdel wwq
倘若该用户组中仍包含某些用户,则必须删除这些用户后,才能删除群组。
4.文件权限管理
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
4.1查看文件权限
使用ls
命令查看文件权限,如下:
ls -l
或ll
输出信息格式说明:其内容包括文件类型和权限(drwxr-xr-x)、链接数(2)、所有者(wwq)、所属用户组(root)、文件大小(1024)、最后修改时间(1月 14 11:04)和文件名(Documents)。格式如下:
drwxr-xr-x 2 wwq root 1024 1月 14 11:04 Documents
文件类型和权限说明:
-
文件类型
Linux里面一切皆文件,正因为这一点才有了设备文件(
/dev
目录下有各种设备文件,大都跟具体的硬件设备有关)这一说。socket:网络套接字,后续讲解。pipe管道,后续讲解。软链接文件:链接文件分忧硬链接和软链接,硬链接不常用,软链接等同于Windows上的快捷方式。 -
文件权限
-
读权限,表示你可以使用
cat <file name>
之类的命令来读取某个文件的内容。 -
写权限,表示你可以编辑和修改某个文件的内容。
-
执行权限,通常是指可以运行的二进制程序文件或者脚本文件,如果Windows上的exe后缀的文件。不过Linux上不是通过文件后缀名来区分文件类型
注意:一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其他文件。这是因为目录文件实际保存着该目录里面文件的列表等信息。
-
所有者权限,即所有者权限,所属用户组权限,是指你所在用户组中其他用户对于该文件的权限。
-
-
链接数
链接到该文件所在的inode结点的文件名数目。
-
文件大小
以inode结点大小为单位来表示的文件大小,可以使用
ls -lh
更直观的查看文件的大小 -
ls
命令的常用用法:-
显示除了
.
(当前目录)和..
(上级目录)之外的所有文件,包括隐藏文件(Linux下以.
开头的文件为隐藏文件)。ls -a
-
查看某一个目录的完整属性,而不是显示目录里面的文件属性:
ls -dl <目录名>
-
显示所有文件大小:
ls -aSsh
其中小s为显示文件大小,大S为按文件大小排序,其他命令可以使用
man ls
进行查询。
-
4.2变更文件所有者
使用chown
命令可以变更文件所有者:
sudo chown <username> <file name>
4.3修改文件权限
如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改。文件的权限有两种表示方式:
-
方式一:二进制数字表示
每个文件有三组固定的权限,分别对应拥有者、所属用户组、其他用户。文件的读写执行对应字母rwx,以二进制表示就是111,用十进制表示就是7。
如:权限为rwx-rw-rw,换成十进制表示就是766,表示该文件拥有者具有读写执行权限,所属用户组和其他用户具有读写权限,不具有执行权限。
使用
chmod
命令来变更文件权限,如文件权限为rwx-rw-rw,需变更为文件拥有者、所属用户组和其他用户都具有读写执行权限:chmod 777 <file name>
-
方式二:加减赋值操作
要完成上述操作,还可以使用如下命令:
chmod go+x <file name>
g、o、u分别代表group(所属用户组)、other(其他用户)和user(拥有者),+和-分别表示增加和去掉相应的权限。
4.4更多
adduser
和useradd
的区别:
useradd
只创建用户,不会创建用户密码和工作目录,创建完了需要使用passwd <username>
去设置新用户的密码。
adduser
在创建用户的同时,会创建工作目录和密码(提示设置),做这一系列的操作。
其实useradd
、userdel
这类操作更像是一种命令,执行完了就返回。而adduser
更像是一种程序,需要你输入、确定等一系列操作。