目录
文章目录
通配符的使用:
*: 匹配任意长度的任意字符:
[root@sh ~]# ls
a ab ad ae af ah anaconda-ks.cfg ascde asde bdeg besa ca cd ce
[root@sh ~]# ls a*
a ab ad ae af ah anaconda-ks.cfg ascde asde
?: 匹配任意单个字符:
[root@sh ~]# ls
a ab ad ae af ah anaconda-ks.cfg ascde asde bdeg besa ca cd ce
[root@sh ~]# ls a?
ab ad ae af ah
[ ]: 匹配指定范围内的任意单个字符:
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# ls [1-8]
1 2 3 4 5 6 7 8
[^]:匹配指定范围之外的任意单个字符:
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# ls [^5]
1 2 3 4 6 7 8 9
压缩,归档工具的使用:
常见的归档,压缩文件格式:[gz] [bz2] [xz] [zip] [Z]
压缩工具之zip:
使用格式:gzip [option] [file]
压缩完成会删除原文件
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# gzip 1
[root@sh ~]# ls
1.gz 2 3 4 5 6 7 8 9 anaconda-ks.cfg
压缩工具之zip:
[option ] :
-d :解压缩,解压缩完成后会删除原文件
[root@sh ~]# ls
1.gz 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# gzip -d 1.gz
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
压缩工具之bzip2:
使用格式:bzip2 [option] [file]
压缩完成会删除原文件
【biz2包需要配置yum源仓库后自行安装】
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# bzip2 2
[root@sh ~]# ls
1 2.bz2 3 4 5 6 7 8 9 anaconda-ks.cfg
压缩工具之bzip2:
[option] :
-k :压缩完成保留原文件 -d :解压缩完成后删除原文件
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# bzip2 2
[root@sh ~]# ls
1 2.bz2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# bzip2 -k 3
[root@sh ~]# ls
1 2.bz2 3 3.bz2 4 5 6 7 8 9 anaconda-ks.cfg
压缩工具之xz:
使用格式:xz [option] [file]
压缩完成会删除原文件
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 anaconda-ks.cfg
[root@sh ~]# xz 2
[root@sh ~]# ls
1 2.xz 3 4 5 6 7 8 9 anaconda-ks.cfg
压缩工具之xz:
[option] :
-k :压缩完成保存原文件
-d :解压缩完成后删除原文件
压缩工具之zip:
使用格式:
1.压缩文件使用:{zip filename.zip file1 file2 …}
2.压缩目录使用:{zip filename.zip DIR/*}
【zip压缩工具及unzip解压工具需要配置yum源仓库自行安装】
[root@sh ~]# ls
1 2 3 4 5 6 7 8 9 A anaconda-ks.cfg B C D
[root@sh ~]# zip 123.zip 1
adding: 1 (stored 0%)
[root@sh ~]# zip 345.zip A
adding: A/ (stored 0%)
[root@sh ~]# ls
1 123.zip 2 3 345.zip 4 5 6 7 8 9 A anaconda-ks.cfg B C D
解压缩工具之unzip:只用于解压缩zip格式的压缩格式
[root@sh ~]# ls
123.zip 345.zip A anaconda-ks.cfg B C D
[root@sh ~]# unzip 123.zip
Archive: 123.zip
extracting: 1
[root@sh ~]# ls
1 123.zip 345.zip A anaconda-ks.cfg B C D
压缩工具之compress:
使用格式:compress [file]
【压缩完成后不会保留原文件】[压缩共需要安装yum源仓库自行安装]
[root@sh ~]#
[root@sh ~]# ls
1 A anaconda-ks.cfg B C D
[root@sh ~]# compress anaconda-ks.cfg
[root@sh ~]# ls
1 A anaconda-ks.cfg.Z B C D
解压缩工具之uncompress:
只用于解压缩compress的压缩格式
[root@sh ~]# ls
1 A anaconda-ks.cfg.Z B C D
[root@sh ~]# uncompress anaconda-ks.cfg.Z
[root@sh ~]# ls
1 A anaconda-ks.cfg B C D
归档工具tar的使用
使用格式:tar [option] [file]
归档工具tar:[option]:
-c:创建归档文件
-f file.tar:指定要操作的归档文件
-x:还原归档
-v:显示归档过程
-p:归档时保留权限信息。只有管理员才有权限用此选项
-C:指定还原归档或解压时的目标目录
-tf:不展开归档,直接查看归档了哪些文件
归档工具tar:常见的组合项:
-zcf file.tar.gz:归档并调用gzip进行压缩
-jcf file.tar.bz2:归档并调用bzip2进行压缩
-Jcf file.tar.xz:归档并调用xz进行压缩
xf file.tar.gz|file.tar.bz2|file.tar.xz:还原归档并自动根据压缩方式调用相应的工具解压
实验tar操作之用gzip方式压缩并解压缩
【压缩和解压缩时不会删除原文件】
[root@sh ~]# ls
1 A anaconda-ks.cfg B C D
[root@sh ~]# tar -zcf 123.tar.zip anaconda-ks.cfg
[root@sh ~]# ls
1 123.tar.zip A anaconda-ks.cfg B C D
[root@sh ~]# rm -rf anaconda-ks.cfg
[root@sh ~]# ls
1 123.tar.zip A B C D
[root@sh ~]# tar -xf 123.tar.zip
[root@sh ~]# ls
1 123.tar.zip A anaconda-ks.cfg B C D
实验tar操作之用bzip2方式压缩并解压缩
【压缩和解压缩时不会删除原文件】
[root@sh ~]# ls
1 A anaconda-ks.cfg B C D
[root@sh ~]# tar -jcf 345.tar.bz2 anaconda-ks.cfg
[root@sh ~]# ls
1 345.tar.bz2 A anaconda-ks.cfg B C D
[root@sh ~]# rm -rf anaconda-ks.cfg
[root@sh ~]# ls
1 345.tar.bz2 A B C D
[root@sh ~]# tar -xf 345.tar.bz2
[root@sh ~]# ls
1 345.tar.bz2 A anaconda-ks.cfg B C D
实验tar操作之用xz方式压缩并解压缩
【压缩和解压缩时不会删除原文件】
[root@sh ~]# ls
1 A anaconda-ks.cfg B C D
[root@sh ~]# tar -Jcf 456.tar.xz anaconda-ks.cfg
[root@sh ~]# ls
1 456.tar.xz A anaconda-ks.cfg B C D
[root@sh ~]# rm -rf anaconda-ks.cfg
[root@sh ~]# ls
1 456.tar.xz A B C D
[root@sh ~]# tar -xf 456.tar.xz
[root@sh ~]# ls
1 456.tar.xz A anaconda-ks.cfg B C D
文本排序命令sort
使用格式:
sort [option] [file]
常用的option:
-n:以数值大小进行排序
-r:逆序排序
-t:字段分隔符
-k:以哪个字段为关键字进行排序
-u:去重,排序后相同的行只显示一次
-f:排序时忽略字符大小写
实验操作【-n】
[root@sh ~]# cat a
1
3
4
5
a
C
[root@sh ~]# sort -n a
a
C
1
3
4
5
实验操作【-r】
[root@sh ~]# cat a
1
3
4
5
a
C
[root@sh ~]# sort -r a
C
a
5
4
3
1
实验操作【-u】
[root@sh ~]# cat a
1
3
4
5
a
1
3
C
a
[root@sh ~]# sort -u a
1
3
4
5
a
C
实验操作【-t】
[root@sh ~]# cat a
adacaeavadfgaeve
19238127819786
[root@sh ~]# sort -t 1 a
19238127819786
adacaeavadfgaeve
实验操作【-k】
[root@sh ~]# cat a
adacaeavadfgaeve
19238127819786
asdebbasexx
bbbbbb
123123123
vzsd
[root@sh ~]# sort -k 1 a
123123123
19238127819786
adacaeavadfgaeve
asdebbasexx
bbbbbb
vzsd
文件去重命令uniq
【-f默认就带有】
使用格式:uniq [option] [input[ouput]]
常用的OPTION:
-c:显示文件中行重复的次数
-d:只显示重复的行
-u:只显示未重复的行
实验操作【-c】
[root@sh ~]# uniq -c a
2 1
2 2
2 3
2 4
[root@sh ~]# cat a
1
1
2
2
3
3
4
4
实验操作【-d】
[root@sh ~]# cat a
1
1
2
2
3
3
4
4
[root@sh ~]# uniq -d a
1
2
3
4
实验操作【-u】
[root@sh ~]# cat a
1
1
2
2
3
3
4
4
[root@sh ~]# uniq -d a
1
2
3
4
基础命令之cut
使用格式:cut option [file]
常用的OPTION:
-d:指定字段分隔符,默认是空格
-f:指定要显示的字段
-f 1,3:显示1和3字段
-f 1-3:显示1到3字段
实验操作【[-d] [-f1,3]】
[root@sh ~]# cut -d : -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11
games:12
ftp:14
nobody:99
systemd-network:192
dbus:81
polkitd:999
postfix:89
chrony:998
sshd:74
实验操作【[-d] [1-3]】
[root@sh ~]# cut -d : -f 1-3 /etc/passwd
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
sync:x:5
shutdown:x:6
halt:x:7
mail:x:8
operator:x:11
games:x:12
ftp:x:14
nobody:x:99
systemd-network:x:192
dbus:x:81
polkitd:x:999
postfix:x:89
chrony:x:998
sshd:x:74
高级命令之awk
使用格式 awk option: ‘{print $n}’ file
实验操作
[root@sh ~]# awk -F: '{ print $1 }' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
postfix
chrony
sshd
高级命令之sed
使用格式:sed -i ‘s/[ ]/[ ]/n’ [file]
【n为数字时取数字之后的修改,n为g时为全文本修改】
实验操作【n为数字时】
[root@sh ~]# cat a
11 22 33 11
22 11 33 22
33 22 11 33
[root@sh ~]# sed -i 's/11/22/2' a
[root@sh ~]# cat a
11 22 33 22
22 11 33 22
33 22 11 33
实验操作【n为g时】
[root@sh ~]# cat a
11 22 33 22
22 11 33 22
33 22 11 33
[root@sh ~]# sed -i 's/11/22/g' a
[root@sh ~]# cat a
22 22 33 22
22 22 33 22
33 22 22 33
文件命名规范
长度不能超过255字符
不能使用/为文件名
严格区分大小写
文本过滤命令grep
grep命令根据正则表达式搜索文本,并将符合正则表达式的文本显示出来。
默认使用基本正则表达式来过滤文本
。
使用格式:grep [option] pattern [file]
常用的OPTION:
-i:忽略大小写
–color:匹配到的内容高亮显示
-v:显示没有被正则表达式匹配到的内容
-o:只显示被正则表达式匹配到的内容
-E:使用扩展正则表达式
-q:静默模式,不输出任何信息
-A #:此处的#必须是数字。被正则匹配到的内容以及其后面#行的内容都显示出来
-B #:此处的#必须是数字。被正则匹配到的内容以及其前面#行的内容都显示出来
-C #:此处的#必须是数字。被正则匹配到的内容及其前后各#行的内容都显示出来
实验操作【-i】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -i a a
aaa bbb ccc
AAA
实验操作【-v】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -v 'a' a
AAA
BBB
DDD
eee
实验操作【-E】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -E 'a|b' a
aaa bbb ccc
实验操作【-q】
【-q不会显示任何信息,可以用echo $来判断指令是否正确】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -q 'a' a
[root@sh ~]# echo $?
0
实验操作【-A】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -A2 'B' a
BBB
DDD
eee
实验操作【-B】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -B2 'B' a
aaa bbb ccc
AAA
BBB
实验操作【-C】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
[root@sh ~]# grep -C2 'B' a
aaa bbb ccc
AAA
BBB
DDD
eee
实验操作【-o】
[root@sh ~]# cat a
aaa bbb ccc
AAA
BBB
DDD
eee
b
b
[root@sh ~]# grep -o 'b' a
b
b
b
b
b
文件查找命令find
使用格式 :find [option]…查找路径 查找标准,处理动作
查找路径:默认为当前目录
查找标准:
-name filename:对文件名精确匹配,支持通配符
-iname filename:文件名匹配时不区分大小写
-regex pattern:基于正则表达式进行文件名匹配
-user:查找某用户的所有文件
-group:查找某组的所有文件
-uid:根据UID进行查找
-gid:根据GID进行查找
-nouser:查找没有拥有者的文件
-nogroup:查找没有属组的文件
-type:根据文件类型进行查找
实验操作【-name filename】
[root@sh ~]# find -name a
./a
实验操作【-iname filename】
[root@sh ~]# ls
a A anaconda-ks.cfg b B c d D
[root@sh ~]# find -iname b
./B
./b
实验操作【-user】
[root@sh ~]# find / -user shihao
/var/spool/mail/shihao
/home/shihao
/home/shihao/.bash_logout
/home/shihao/.bash_profile
/home/shihao/.bashrc
实验操作【-group】
[root@sh ~]# find / -group shihao
/home/shihao
/home/shihao/.bash_logout
/home/shihao/.bash_profile
/home/shihao/.bashrc
实验操作【-uid】
[root@sh ~]# find / -uid 1001
/var/spool/mail/shihao
/home/shihao
/home/shihao/.bash_logout
/home/shihao/.bash_profile
/home/shihao/.bashrc
实验操作【-gid】
[root@sh ~]# find / -gid 1001
/home/shihao
/home/shihao/.bash_logout
/home/shihao/.bash_profile
/home/shihao/.bashrc
实验操作【-type】
[root@sh ~]# find . -type f
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./.bash_history
./anaconda-ks.cfg
./A
./B
./b
./c
./D
./d
./a
查找标准(续):
-size:根据文件大小进行查找。
如1k、1M、+10k、+10M、-1k、-10M +表示大于,-表示小于
-mtime:根据修改时间查找
+5:表示查找5天以前修改的文件
-5:表示查找5天以内修改的文件
-atime:根据访问时间查找
-ctime:根据改变时间查找
-perm mode:根据权限精确查找
-perm –mode:文件权限能完全包含此mode时才符合条件
-perm /mode:9位权限中有任何一位权限匹配都视为符合查找条件
实验操作【-size】
[root@sh ~]# ll -h
总用量 12K
-rw-r--r--. 1 root root 95 5月 24 22:31 a
-rw-------. 1 root root 1.5K 5月 22 17:11 anaconda-ks.cfg
-rw-r--r--. 1 root root 928 5月 24 22:31 passwd
[root@sh ~]# find -size +1k
./anaconda-ks.cfg
实验操作【-mtime】
[root@sh ~]# find -mtime +1
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
[root@sh ~]# find -mtime -1
.
./a
./passwd
实验操作【-atime】
[root@sh ~]# find -atime -1
.
./.bash_history
./anaconda-ks.cfg
./a
./passwd
[root@sh ~]# find -atime +1
./.bash_logout
./.cshrc
./.tcshrc
实验操作【-ctime】
[root@sh ~]# find -ctime +1
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
[root@sh ~]# find -ctime -1
.
./anaconda-ks.cfg
./a
./passwd
处理动作:默认动作是显示到屏幕上
-print:打印到屏幕上
-ls:类似ls –l的形式显示每一个文件的详细信息
-delete:删除查找到的文件
-fls /path/to/somefile:将查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} ;:对查找到的所有文件执行COMMAND,每次操作都需要用户确认
-exec COMMAND {};:对查找到的所有文件执行COMMAND,操作不需要确认
-xargs:通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可
实验操作 【-ls】
[root@sh ~]# find . -type f -ls
33850697 4 -rw-r--r-- 1 root root 18 12月 29 2013 ./.bash_logout
33850698 4 -rw-r--r-- 1 root root 176 12月 29 2013 ./.bash_profile
33850699 4 -rw-r--r-- 1 root root 176 12月 29 2013 ./.bashrc
33850700 4 -rw-r--r-- 1 root root 100 12月 29 2013 ./.cshrc
33850701 4 -rw-r--r-- 1 root root 129 12月 29 2013 ./.tcshrc
33587822 4 -rw------- 1 root root 23 5月 23 03:26 ./.bash_history
33574992 4 -rw------- 1 root root 1451 5月 22 17:11 ./anaconda-ks.cfg
33921297 4 -rw-r--r-- 1 root root 95 5月 24 22:31 ./a
33587828 4 -rw-r--r-- 1 root root 928 5月 24 22:31 ./passwd
实验操作【-delete】
[root@sh ~]# ls
a anaconda-ks.cfg passwd
[root@sh ~]# find . -name passwd -delete
[root@sh ~]# ls
a anaconda-ks.cfg
实验操作【-ok COMMAND {} \:】
[root@sh /]# find / -type f -a -user xx -ok rm -rf {} \;
find: ‘/proc/7699/task/7699/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/7699/fdinfo/6’: 没有那个文件或目录
< rm ... /var/spool/mail/xx > ? n
< rm ... /home/xx/.bash_logout > ? n
< rm ... /home/xx/.bash_profile > ? n
< rm ... /home/xx/.bashrc > ?
实验操作【-fls /path/to/somefile】
[root@sh /]# find . -type f -fls a
find: ‘./proc/7197/task/7197/fdinfo/7’: 没有那个文件或目录
find: ‘./proc/7197/fdinfo/7’: 没有那个文件或目录
[root@sh /]# ls
a boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
实验操作【-exec COMMAND {} \:】
[root@sh /]# find / -type f -a -user xx -exec rm -rf {} \;
find: ‘/proc/7748/task/7748/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/7748/fdinfo/6’: 没有那个文件或目录
实验操作【xargs】
[root@sh /]# find / -type f -a -user xz | xargs rm -rf
find: ‘/proc/7870/task/7870/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/7870/fdinfo/6’: 没有那个文件或目录