Linux 入门总结(四) —— Linux 常用命令
目录处理命令
1、命令格式1
2
3
4
5
6
7命令格式:
命令 [-选项] [参数]
说明:
1. 个别命令使用不遵循此格式
2. 当有多个选项时,可以写在一起
3. 简化选项与完整选项,eg:-a 等于 --all
关于选项:在大多数的命令中,选项前面会有一个小横杆,用来标记这是一个选项;选项的作用:使用命令的时候用来做不同的操作,使命令结果呈现不同的形式或者信息内容,就可以加上不同的选项来实现,即选项是用来调整命令功能的。我们使用的选项都是简化选项,完整选项需要两个「-」 来调用,选项的顺序一般都是可以调整的。[] 里的内容是选择性加入的。加了选项是调整功能,加了参数是指定操作对象。
2、目录处理命令 ls1
2
3
4
5
6
7
8
9
10
11
12简介:
英文原意 list;命令所在路径:/bin/ls;作用:显示目录文件
格式:
ls [选项] [文件或目录]
选项:
-a a 表示 all
-l l 表示 long
-d d 表示 directory,显示当前目录本身,而不显示目录下的数据
-h h 表示 human,人性化显示文件大小
-i i 表示 iNode,显示 i 结点号
在 Linux 中,以「.」开头的是隐藏文件。隐藏文件的初衷是为了告诉用户这是一个系统文件,没有特殊情况一般不要修改它。在 Linux 中要想把一个文件隐藏,则需要给它改名,改成以点开头的文件名即可隐藏。
3、ls -l 显示结果分析
- x 表示执行权限,是 execute 的缩写;可执行文件 .exe 的缩写也来源于这个单词。
- 引用计数,代表这个文件曾经被引用或者调用过几次。这个引用计数对文件和目录来讲只在硬链接中才有作用。
- 文件大小默认单位是字节。可以使用 -h 选项来调整。
- 上图中的时间表示该文件最后被修改的时间;如果没有被修改过,则就是它的创建时间。需要注意的是 Linux 中没有创建时间这个概念,它只有文件的最后一次访问时间,文件的状态修改时间,文件的数据修改时间这三个时间。
- i 节点,在 Linux 系统中每个文件或者目录都有它自己的一个唯一标识编号,系统靠这个 i 节点号搜索或者查找文件或者目录。
4、目录处理命令 mkdir1
2
3
4
5
6
7
8
9
10
11
12简介:
英文原意 make directories;命令所在路径:/bin/mkdir;作用:创建新目录
格式:
mkdir [选项] 目录名
选项:
-p p 表示 parents,如果新创建的目录的父目录不存在,则自动递归创建父目录
举例:
# 可同时创建多个目录,多个目录之间以空格进行分割
mkdir /tmp/test1 /tmp/test2 /tmp/test3
目录在 windows 中又称为文件夹。不要轻易在根目录下创建新的目录或者文件。可以在 /tmp 目录下进行练习,该目录是用来存放临时文件的。
5、目录处理命令 cd1
2
3
4
5简介:
英文原意 change directory;命令所在路径:shell 内置命令;作用:切换目录
格式:
cd [目录]
「.」 表示当前目录,「..」表示当期目录的上一级目录。
注意:在 Dos 窗口下 cd.. 中间是可以不加空格的,但是在 Linux 中,中间必须有空格。
6、目录处理命令 pwd1
2
3
4
5简介:
英文原意 print working directory;命令所在路径:/bin/pwd;作用:显示当前所在目录的绝对路径
格式:
pwd
7、目录处理命令 rmdir1
2
3
4
5
6
7
8
9简介:
英文原意 remove empty directories;命令所在路径:/bin/rmdir;作用:删除空目录
格式:
rmdir [空目录]
举例:
# 可同时删除多个空目录,多个空目录之间以空格进行分割
rmdir /tmp/test1 /tmp/test2 /tmp/test3
注意:rmdir 只能删除空的目录!!!要想使用 rmdir 删除目录,必须先把该目录下的所有子目录和文件都删除掉,才可以使用。实际操作中此命令用的并不是很多。
8、目录处理命令 cp1
2
3
4
5
6
7
8
9
10
11
12
13简介:
英文原意 copy;命令所在路径:/bin/cp;作用:复制文件或目录
格式:
cp [选项] [原文件或目录] [目标目录]
选项:
-r 复制目录,copy directories recursively
-p 保留文件属性,same as --preserve=mode,ownership,timestamps
举例:
# 将 /tmp 下 test1、test2、test3 目录一次性复制到 /root 下,并保持目录属性
cp -rp /tmp/test1 /tmp/test2 /tmp/test3 /root
在 cp 复制文件的时候是不需要加选项的;但是要复制目录的话要增加选项 -r;cp 可以同时复制多个文件或者目录。
当把一个文件或目录复制到另一个地方的时候,相当于在另一个地方创建了一个新的文件或目录,所以复制出来的文件或目录的最后更改时间就是当前时间。如果希望复制出来的文件或目录的最后更改时间跟源文件一样,则使用 -p 选项。
在 Linux 中,复制文件或者目录的同时,可以更改目录或者文件的名字。
9、目录处理命令 mv1
2
3
4
5
6
7
8
9
10
11
12简介:
英文原意 move;命令所在路径:/bin/mv;作用:剪切文件、改名
格式:
mv [原文件或目录] [目标目录]
举例:
# /tmp 下 test1、test2、test3 目录一次性剪切到 /root 目录
# 当一次剪切多个目录或文件的时候就不能改名了,改名操作只支持一次一个,不支持一次多个文件或目录进行改名
mv /tmp/test1 /tmp/test2 /tmp/test3 /root
改名:
mv 要改名的文件名 新的文件名
在 Linux 中剪切和改名是同一个命令。在执行复制剪切等命令的时候,如果你的位置是在当前目录的话,可以省略绝对路径,但是在不清楚当前目录的情况下要写绝对路径。mv 命令是不需要加 -r 选项的,直接使用 mv 可以同时剪切一个或多个目录或者文件的,而且在剪切的同时可以改名。
10、目录处理命令 rm1
2
3
4
5
6
7
8
9
10
11
12
13简介:
英文原意 remove;命令所在路径:/bin/rm;作用:删除文件或目录
格式:
rm [选项] [文件或目录]
选项:
-r 删除目录,recursive
-f 强制删除,force
举例:
# 同时删除目录 test1 test2 文件 h1.txt h2.txt
rm -rf test1 test2 h1.txt h2.txt
注意:Linux 中是没有回收站这一说的,文件一旦删除,就没有了。
在删除文件的时候每次都会询问你是否删除,如果你不想有这个提示的话,则可以加 -f 选项。
小结:mkdir 创建一个新的目录,选项 -p 递归创建目录;cd 切换目录;pwd 查看当前的工作目录;rmdir 删除一个空目录;cp 复制文件 -r 复制目录 -p 复制的时候保持文件的属性;mv 剪切或者给一个文件改名;rm 删除文件 -r 删除目录 -f 删除目录或者文件的同时不希望询问确认。
文件处理命令
1、文件处理命令 touch1
2
3
4
5简介:
命令所在路径:/bin/touch;作用:创建空文件
格式:
touch [文件名]
注意:在 Linux 的命令里面,如果这个命令的参数没有详细的指定它的绝对路径,就表示要在当前目录下执行这个操作。要想在其他目录下执行这个操作,一定要指明它的绝对路径。
在 Linux 的文件命名里,除了「/」不能使用外,其它特殊符号都是合法的文件名,其后缀名是可以随便起的,这跟 windows 不一样。注意空格这个特殊符号,在 Linux 中并不建议将空格作为文件名组成部分,由于 Linux 系统把空格作为分隔符,要想使用空格作为文件名则必须用引号扩起来,这样虽然可以用空格作为文件名,但是对以后该文件的查找、修改、复制等操作造成麻烦,所以不建议这样使用。
2、文件处理命令 cat1
2
3
4
5
6
7
8简介:
命令所在路径:/bin/cat;作用:一次性显示整个文件内容
格式:
cat [选项] [文件名]
选项:
-n 显示行号,number
cat 命令适合看简短的文件。cat 不适合浏览比较长的文件。cat 命令会一次性列出文件所有内容
3、文件处理命令 tac1
2
3
4
5简介:
命令所在路径:/usr/bin/tac;作用:一次性显示整个文件内容(反向列示)
格式:
tac [选项] [文件名]
4、文件处理命令 more1
2
3
4
5
6
7
8
9
10
11
12
13简介:
命令所在路径:/bin/more;作用:分页显示文件内容
格式:
more [文件名]
快捷键:
空格或 f 翻页
Enter 换行
q 或 Q 退出
举例:
more /etc/services
more 命令是一个常用的分页显示文件内容的命令。该命令不可以往上翻。
5、文件处理命令 less1
2
3
4
5简介:
命令所在路径:/usr/bin/less;作用:分页显示文件内容(可向上翻页)
格式:
less [文件名]
使用 less 命令,不仅可以像 more 命令一样进行浏览,还可以往上翻,使用 PgUp 表示一页一页往上翻,使用向上的剪头表示一行一行往上翻。还可以进行搜索:直接在 less 的浏览状态里面按一个「/」+ 你要搜索的关键词,就会把行里所有包含这个关键词的进行反白显示,同时如果在你当前查看的页里没有你要得到的搜索的关键词所在行的信息,可以按 n 表示 next 接着往下找。
6、文件处理命令 head1
2
3
4
5
6
7
8
9
10
11简介:
命令所在路径:/usr/bin/head;作用:显示文件前面几行
格式:
head [选项] [文件名]
选项:
-n 指定行数
举例:
head -n 20 /etc/services
如果只想看文件的前几行,则可以使用此命令。如果不用 -n 指定要显示的行数,则默认显示的是前 10 行。
7、文件处理命令 tail1
2
3
4
5
6
7
8
9简介:
命令所在路径:/usr/bin/tail;作用:显示文件后面几行
格式:
tail [选项] [文件名]
选项:
-n 指定行数
-f 动态显示文件末尾内容
显示文件最后面几行内容,默认是 10 行。-f 动态显示文件末尾的内容。使用该命令以后它会显示文件最末尾的位置,但是它并没有回到命令行,如果这时你这个文件的内容进行了变化,在这个命令操作状态下它也会实时变化的。一般来说用的也不会太多,一般用来监控一些日志。
小结:touch 创建一个文件;cat 查看文件的内容(浏览一些短文件),-n 用来显示行号;tac 反向显示文件内容(反向显示并不支持 -n 这个选项);more 分页显示文件内容(主要指一些长的文件,不可以向上翻);less 分页显示文件内容(可以向上/下翻,使用 「/ + 要搜索的关键词」在浏览的过程中遍历整个的文件进行搜索,可以用 n 键查找下一个匹配的位置);head 查看一个文件的前几行,-n 指定要查看前几行,默认为 10 行;tail 查看一个文件的最后几行,-n 指定要查看后几行,-f 动态显示文件最后的内容,默认为 10 行。
8、文件处理命令 ln1
2
3
4
5
6
7
8
9
10
11
12
13
14
15简介:
英文原意 link;命令所在路径:/bin/ln;作用:生成链接文件
格式:
ln [选项] [原文件] [目标文件]
选项:
-s 创建软链接,s 代表 symbolic,make symbolic links instead of hard links,即创建符号链接而不是硬链接
举例:
# 创建 /etc/issue 的软链接 /root/issue.soft
ln -s /etc/issue /root/issue.soft
# 创建文件 /etc/issue 的硬链接 /root/issue.hard
ln /etc/issue /root/issue.hard
9、软链接特征
类似 windows 快捷方式。作用:方便快捷的让你找到你最常使用的一些东西,便于规划,方便管理。
- 在 Linux 系统里面,它前面的 10 个文件权限的标识全部都是 lrwxrwxrwx,意味着所有的人都有全部的操作权限,每个用户在对这个软链接进行操作的时候,到底他能具有什么样的权限,是由这个文件对应的源文件的权限最终决定的。
- 软链接文件大小很小,因为它只是一个符号链接。
- 有一个箭头指向到它所对应的源文件(硬链接是没有箭头指向的)。
10、硬链接特征
- 拷贝「cp -p」+ 同步更新。cp -p 是拷贝文件并且保留文件的属性不变;同步更新即不管是修改原文件还是硬链接文件,两者的内容始终会自动保持一致,即同步更新。
- 通过 i 结点识别,硬链接的 i 节点与源文件的 i 节点一样。
- 不能跨分区。
- 不能针对目录使用。
软链接与硬链接的区别:硬链接就类似于拷贝,但是可以同步更新,源文件即使不在了,硬链接照样可以访问,因为是类似拷贝的。如果软链接源文件不在了,则它会报错找不到源文件。一个文件一定有一个 i 节点,但是一个 i 节点不一定只对应一个文件,硬链接就是一个特殊案例,一个 i 节点映射到了多个文件。注意硬链接在 Linux 中用的非常少!
权限管理命令
1、权限管理命令 chmod1
2
3
4
5
6
7
8
9
10
11
12
13简介:
英文原意 change the permissions mode of a file;命令所在路径:/bin/chmod;作用:改变文件或目录权限
格式:
chmod [选项] [{ugoa}{+-=}{rwx}] [文件或目录]
chmod [选项] [mode] [文件或目录]
选项:
-R 递归修改
举例:
# 可以同时做多个授权,中间用「,」逗号分隔
chmod u+rwx,g+rw,o=r test.txt
一个文件或目录的权限只有两个人可以更改:一个是该文件或目录的所有者,另一个就是管理员 root。
权限数字表示:r=4,w=2,x=1。
2、文件目录权限总结
注意:读写执行权限对目录的含义!!!要想删除一个文件,你必须有这个文件所在的目录的写权限。对于目录,r(查看目录内容)、x(进入目录)权限一般都是一起出现的。
3、权限管理命令 chown1
2
3
4
5
6
7
8
9简介:
英文原意 change file ownership;命令所在路径:/bin/chown;作用:改变文件或目录的所有者
格式:
chown [用户] [文件或目录]
举例:
# 改变文件 test.txt 的所有者为 root
chown root test.txt
在 Linux 系统中,改变一个文件或者目录的所有者,只有管理员 root 可以做这样的操作。
可以使用 useradd 命令来添加一个用户,使用 passwd 为该用户设置一个密码。
4、权限管理命令 chgrp1
2
3
4
5
6
7
8
9简介:
英文原意 change file group ownership;命令所在路径:/bin/chgrp;作用:改变文件或目录的所属组
格式:
chgrp [用户组] [文件或目录]
举例:
# 改变文件 test.txt 的所属组为 family
chgrp family test.txt
在 Linux 系统中,改变一个文件或者目录的所属组,只有管理员 root 可以做这样的操作。
添加用户组命令:groupadd。
所有者:谁创建的文件谁就是文件的所有者;所属组:一个用户可以属于多个组,但是他总有个缺省组(缺省,即系统默认状态,意思与「默认」相同),每个用户创建文件的时候,它(该文件)的所属组就是该用户的缺省组,每个用户只能有一个缺省组。所以在创建一个文件的时候,它的所有者就是他自己即文件的创建者,它的所属组就是这个文件创建者的缺省组(了解即可)。
5、权限管理命令 umask1
2
3
4
5
6
7
8简介:
英文原意 the user file-creation mask(mask 掩码的意思);命令所在路径:Shell 内置命令;作用:显示、设置文件的缺省权限
格式:
umask [-S]
选项:
-S 以 rwx 形式显示新建文件缺省权限(注意 S 大写)
在 Linux 权限管理有一个最基本的定义:缺省创建的文件是不能具有可执行权限的。所以在 Linux 系统中任何新建的文件都会把可执行权限去掉。这样做的目的是为了安全。注意只针对文件,对目录没有这样的限制。
直接执行 umask 命令会得到一个 4 位的数字:0022。第一个 0 表示特殊权限,022 代表正常的权限,其实 022 是权限掩码,真正的缺省权限是 777-022=755 即默认的权限 rwxr-xr-x。而 Linux 系统中任何新建的文件都会把可执行权限去掉,所以你新建的任何一个文件的权限就是:rw-r–r–。
要想更改缺省权限,则需要先写出你要更改权限的数字,eg:rwxr-xr– 即 754,然后用 777-754=023,最后 umask 023 将缺省创建的权限改为 rwxr-xr–。虽然缺省创建的权限是可以更改的,但是并不建议这样去做。
文件搜索命令
注意:尽量减少搜索这个操作,因为搜索它会占用大量的系统资源。在服务器高峰期里面,是不建议用搜索这个命令的。原则:不要在服务器使用高峰期的时候使用 find 命令来进行查找;在查找的过程中搜索的范围越小越好;搜索的条件越精准越好。
1、文件搜索命令 find1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42简介:
命令所在路径:/bin/find;作用:文件搜索
格式:
find [搜索范围] [匹配条件]
举例:
# 在目录 /etc 中查找文件 init
find /etc -name init
# -iname 不区分大小写
find /etc -iname init
# (注意数据块概念)在根目录下查找大于 100MB 的文件;+n 大于
# -n 小于,n 等于
find / -size +204800
# 在 /etc 下查找大于 80MB 且小于 100MB 的文件
# -a 两个条件同时满足,and
# -o 两个条件满足任意一个即可,or
find /etc -size +163840 -a -size -204800
# 在根目录下查找所有者为 root 的文件
find / -user root
# 在根目录下查找所属组为 root 的文件
find / -group root
# 在 /etc 下查找 5 分钟内被修改过属性的文件和目录
# -amin 访问时间 access;-cmin 文件属性 change;-mmin 文件内容 modify
# +n 大于多长时间,-n 多长时间以内,n 等于
find /etc -cmin -5
# -type 根据文件类型查找
# f 文件;d 目录;l 软链接文件
find /etc -type f
# -inum 根据 i 节点查找
find /etc -inum 12345
# 在当前目录中查找 iNode 为 666 的文件或目录并删除
find . -inum 666 -ok rm {} \;
注意利用 -name 搜索的话,它只会搜索文件名是 init的文件,而不像 windows 里面那样只要文件名包含 init 就都会被搜素到,可以理解为这是一种非常精准的搜索。要想像 windows 一样,可以做一个模糊的搜索即只要是包含 init 这 4 个连续的字母,就可以被搜素到,则:find /etc -name init,「」号表示通配符,意思是只要文件名里有 init 就会被搜索到。init 表示以 init 开头的;init??? 表示 init 以后有 3 个字符,问号匹配单个字符。Linux 中常用的两种通配符:* 号可以匹配任意字符,? 号可以匹配某个单个字符。
注意:在 Linux 系统中,一个数据块默认是 512 字节即 0.5kb;数据块是 Linux 系统中存储文件的最小单位。而 -size 的大小是用数据块换算的,所以 100MB 的文件所对应的就是 204800 个数据块。
1 | # 在 /etc 下查找 inittab 文件并显示其详细信息 |
前面还是正常写 find 要执行的查找的命令,找到这个结果以后,可以使用 -exec/-ok 直接连接一个命令即对 find 查找的结果做一些操作,再加上固定格式「{} \;」。{} 表示的是 find 查找的结果,表示对 find 查找的结果做一个替换,因为 find 查找的结果可能有多个,所有使用 {} 表示。「\」表示转义符,「;」表示结束。
注意:「;」分号,不要丢掉,而且「\」和「;」之间没有空格分隔!!! -exec 和 -ok 的区别:-exec 直接执行,-ok 会一个个询问你是否执行(即会有询问确认环节)。
find -inum 使用场景,确定一个文件是否有硬链接。查看一个文件是否有硬链接:首先查看该文件的 i 节点,然后在整个它所在的分区里面(硬链接不能跨分区)做一个搜索,找 i 节点是你这个指定数字的文件,它就会把它的硬链接文件找到。
小结:find 命令 -name 根据文件名来查找;-iname 查找的时候不区分大小写;使用的通配符:* 匹配任意字符,? 匹配单个字符;-size 根据文件大小来查找,+ 大于多少,- 小于多少;-user 根据所有者来查找;-group 根据所属组来查找;-amin 根据访问时间来查找;-cmin 根据文件属性的更改查找;-mmin 根据文件内容更改来查找;-type 根据文件类型来查找,f 文件,d 目录,l 软链接;-inum 根据 i 节点来查找;-a 连接两个条件,表示两个条件都满足;-o 表示两个条件只有满足一个就可以;-exec 或者-ok 对搜索的结果直接进行操作,二者的区别只有一个就是 -ok 会询问确认,固定格式「{} \;」。
其他搜索命令
1、文件搜索命令 locate
centos locate 命令安装1
2
3
4
5
6
7
8简介:
命令所在路径:/usr/bin/locate;作用:在文件资料库中查找文件
格式:
locate 文件名
举例:
locate inittab
该命令在查找的时候不像 find 来遍历你所搜索的范围,而是建立了一个文件资料库(该资料库会定期更新),它在找的时候不是在硬盘上找,而是在资料库里面找你有搜索的文件,所以速度很快。虽然使用 locate 命令查找的速度非常快,但是新建的文件使用该命令是找不到的,因为 locate 的文件资料库并没有更新。手动更新文件资料库命令:updatedb。
注意:/tmp 临时文件目录,并不在文件资料库所收录的文件范围之中,如果你要找的文件在 /tmp 目录下面,使用该命令是找不到的。如果希望 locate 命令在查找的时候不区分大小写,可以使用选项「-i」。
2、文件搜索命令 which1
2
3
4
5简介:
命令所在路径:/usr/bin/which;作用:搜索命令所在目录及别名信息
格式:
which 命令
which 提供了一种快速查找一个命令所在的绝对路径的方法。除了可以找到命令所在的目录还可以找到该命令的别名,查看该命令本身是否有别名相关的信息。 实际上在 Linux 系统中,本身是没有询问确认的机制,之所以现在在 Linux 系统中有询问确认的选项,是因为它加了一个 -i 的选项,eg:在使用 rm 命令的时候,系统在找的时候找到的是一个别名而不是一个命令,它的别名等于「rm -i」,「-i」这个选项实际上就是一个询问确认的选项,所以这是别名的作用。
3、文件搜索命令 whereis1
2
3
4
5简介:
命令所在路径:/usr/bin/whereis;作用:搜索命令所在目录及帮助文档路径
格式:
whereis [命令名称]
whereis 除了可以找到命令所在的绝对路径,还可以找到这个命令它相关的帮助文档所在的位置,这个帮助文档就是 man 命令所展示的文件。
4、文件搜索命令 grep1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16简介:
命令所在路径:/bin/grep;作用:在文件中搜寻字符匹配的行并输出,属于精确匹配
格式:
grep [选项] [指定字串] [文件]
选项:
-i 不分区大小写
-v 显示排除指定字串的行
举例:
# 列出在 /etc/issue 文件中包含 hello 字串的行,且忽略大小写
grep -i hello /etc/issue
# 列出 /etc/issue 文件中所有不包含 Hello 字串的行
grep -v Hello /etc/issue
「-v #」表示把 # 号所在的行都去掉,不管 # 号在什么位置,只要该行有 # 号,就都去掉。这样做是不太合理的,可能 # 位于中间,前面是有有效代码的。所以要想把行首以 # 开始的注释行去掉,要在 # 前面加一个表示行首的「^」即「^#」。使用 grep 命令查找文件中除注释以外的内容:grep -v ^# 文件名
,需要注意的是针对 Shell 脚本的首行 # 号,应该做特殊处理。
小结:locate 快速定位到一个文件所在的路径(文件资料库),updatedb 更新文件资料库(有个别目录下的文件并不被收录到文件资料库中 /tmp),-i 不区分大小写;which 或者 whereis 查找命令所在的绝对路径;grep 在文件内容中查找,-i 不区分大小写,-v 排除查找。