文件管理命令

查—cat

选项 作用
-n 显示行号
-T 用来区分文件中是否有制表符
-E 判断文件中内容每一行结束位置
-A 相当于-E -T
1
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
## 语法
cat [选项]... [文件]...
cat [OPTION]... [FILE]...
## 查看/etc/passwd文件内容
[root@localhost ~]# cat /etc/passwd
## 查看多个文件内容
[root@localhost ~]# cat 1.txt 2.txt
123
abc
[root@localhost ~]# cat 2.txt 1.txt
abc
123
## 标准输出:当执行一个命令后,命令执行正确,所产生的结果(在终端上能看到的输出结果)
OOM: out of memory 内存溢出
OOM killer
## -n:显示行号
[root@localhost ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
## -T:用来区分文件中是否有制表符(一个制表符用^I来表示)
[root@localhost ~]# cat -T 1.txt
abc 123 789
qwe^Iwww^I777
a^I^I^I^I
aaaaa
bbbb
## -E:判断文件中内容每一行结束位置(查看是否有多余的空格)结尾用$表示
[root@localhost ~]# cat -E 1.txt
abc 123 789$
$
qwe www 777 $
aaaa$
$
$
## -A:相当于-E -T
[root@localhost ~]# cat -A 1.txt
abc 123 789$
$
qwe^Iwww^I777 $
aaaa$
$
Tab 制表符
回车 换行符
## 往文件中写入内容
[root@localhost ~]# cat >> suibian.txt <<EOF(不一定是Eof,起到终止作用)
但使龙城free将在
xxx
aaa
ccc
EOF
[root@localhost ~]# cat >> gushi.txt <<zls (这里就不一定是Eof)
> 1111
> 2222
> 3333
> zls
[root@localhost ~]# cat > 1.txt <<EOF #一个 > 是写入新内容并覆盖
> abc
> EOF
[root@localhost ~]# cat 1.txt
abc
[root@localhost ~]# cat >> 1.txt <<EOF #两个>>是追加内容不覆盖
> 123
> 456
> EOF
[root@localhost ~]# cat 1.txt
abc
123
456

查—more

1
[root@db04 ~]# more /etc/services

查—less

1
2
3
4
5
[root@db04 ~]# less /etc/services
#显示行号,缺陷:文件内容过多不能显示最后一行的内容,需要使用翻页键PageDown向后翻
[root@db04 ~]# less -N /etc/services


查—head

1
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
#选项:-n
作用:指定查看多少行 number
## 默认情况下head查看一个文件的前10行内容
[root@localhost ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
## 查看指定行数 -n3/-n 3/-3都可以查看前三行内容 n也可省略
[root@localhost ~]# head -n3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

查—tail

选项 作用
-n 指定查看多少行 number
-f follow 跟随,跟踪文件末尾
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 默认情况下tail查看一个文件的后10行内容
[root@localhost ~]# tail /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
zls1:x:1000:1000::/home/zls1:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
zls100:x:1001:1001::/home/zls100:/bin/bash
## 查看指定行数
[root@localhost ~]# tail -n2 /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
zls100:x:1001:1001::/home/zls100:/bin/bash
[root@localhost ~]# tail -2 /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
zls100:x:1001:1001::/home/zls100:/bin/bash
## 实时追踪日志文件末尾tail -f == tailf
[root@localhost ~]# tail -f 1.txt
可以查看实时更新的日志

查—grep(主要用于过滤文件内容)

选项 作用
-n 显示行号
-A After 过滤关键字并打印出后N行
-B Before 过滤关键字并打印出前N行
-C Center 过滤关键字并打印出前后N行
-v 取反
-o 只显示关键字内容
-i 忽略大小写
-w 精确匹配,显示匹配的这一行
-c 相当于count,用于统计行数
-r/-R 递归搜索目录及目录下得文件
关键字可以使用的符号 作用
^ 以…开头
$ 以…结尾 ^$可以表示空行
. 任意一个字符
* *号前面的单个字符匹配0次或多次
| 正则表达式里面或者意思,grep默认不支持正则表达式,需要用-E
\b 边界符
1
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
## 语法:
grep [选项]... '关键字' [文件名]...
## 过滤关键字
[root@localhost ~]# grep '风景' zls.txt
江山风景美如画,
## 过滤关键字并显示行号
[root@localhost ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# cat zls.txt
卧槽
作者:曾老湿
江山风景美如画,
本想吟诗赠天下。
奈何自己没文化,
一句卧槽风好大。
就这么地吧。
谢谢大家。
一二三四五六七,
七六五四三二一。
## 过滤出zls.txt文件中 包含一的行
[root@localhost ~]#grep '一' zls.txt
一句卧槽风好大。
一二三四五六七,
七六五四三二一。
## 过滤出zls.txt文件中以一开头的行
[root@localhost ~]#grep '^一' zls.txtt
一句卧槽风好大。
一二三四五六七,
## 过滤出zls.txt文件中以一开头的行,并显示行号
[root@localhost ~]# grep -n '^一' zls.txt
6:一句卧槽风好大。
9:一二三四五六七,
## 过滤出/etc/passwd文件中,以login结尾的行
[root@localhost ~]# grep 'login$' /etc/passwd
## 过滤出mail关键字所在行及后两行内容
[root@localhost ~]# grep 'mail' -A 2 /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
## 过滤出mail关键字所在行及前两行内容
[root@localhost ~]# grep -B 2 'mail' /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
## 过滤出mail关键字所在行及前两行内容和后三行内容
[root@localhost ~]# grep -A3 -B2 'mail' /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
## ## 过滤出mail关键字所在行及前两行内容和后两行内容
[root@localhost ~]# grep -C2 'mail' /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

Linux中的管道符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|:Shift + \ 作用:将管道符左边命令的标准输出交给管道符右边命令来处理
command|command|command
## 过滤出/etc/services文件中以 http开头的行且以L结尾的行
[root@localhost ~]# grep '^http' /etc/services
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
https 443/tcp # http protocol over TLS/SSL
https 443/udp # http protocol over TLS/SSL
https 443/sctp # http protocol over TLS/SSL
http-mgmt 280/tcp # http-mgmt
http-mgmt 280/udp # http-mgmt
http-rpc-epmap 593/tcp # HTTP RPC Ep Map
http-rpc-epmap 593/udp # HTTP RPC Ep Map
httpx 4180/tcp # HTTPX
httpx 4180/udp # HTTPX
http-wmap 8990/tcp # webmail HTTP service
http-wmap 8990/udp # webmail HTTP service
https-wmap 8991/tcp # webmail HTTPS service
https-wmap 8991/udp # webmail HTTPS service

[root@localhost ~]# grep '^http' /etc/services|grep 'L$'
https 443/tcp # http protocol over TLS/SSL
https 443/udp # http protocol over TLS/SSL
https 443/sctp # http protocol over TLS/SSL