3.9 8.10-8.13听课笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.9 8.10-8.13听课笔记相关的知识,希望对你有一定的参考价值。
Shell特殊符_cut命令
特殊符号:
* 任意个字符
?任意一个字符
# 注释字符(在配置文件的命令前加#则命令不生效;shell脚本某一行加#则这一行不被执行,通常是注释)
[[email protected] ~]# #ls -a
[[email protected] ~]#
\ 脱义字符
[[email protected] ~]# c='$a$b'
[[email protected] ~]# echo $c
$a$b
[[email protected] ~]# c=\$a\$b
[[email protected] ~]# echo $c
$a$b
| 管道符
管道相关的命令:
Cut 截取字段
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 以:为节点截取一块字符
root
bin
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 以:为节点截取两块字符
root:x
bin:x
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
root:x:0
bin:x:1
[[email protected] ~]# cat /etc/passwd |head -2 |cut -c 4 截取一段的第4个字符
Sort
[[email protected] ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
hyc:x:1000:1000::/home/hyc:/bin/bash
…
Sort默认按ASCII码排序
[[email protected] ~]# cat /etc/passwd > 1.txt 文件中包含英文、数字、特殊符号等
[[email protected] ~]# sort 1.txt 按ASCII码排序(特殊符号在最前(*除外),然后数字从小到大排序,再然后是字母等)
<>
><'
#$^&
213444
234532
234aaa
23aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
34aaaaaaaaaaaaaaaaaaaaaaaaaaaadd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
*$fas
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
[[email protected] ~]# sort -n 1.txt
<>
><'
#$^&
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
*$fas
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
hyc:x:1000:1000::/home/hyc:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
23aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
34aaaaaaaaaaaaaaaaaaaaaaaaaaaadd
234aaa
213444
234532
*-n会按数字排序,其他字母、特殊符号会被当0处理
[[email protected] ~]# sort -nr 1.txt
234532
213444
234aaa
34aaaaaaaaaaaaaaaaaaaaaaaaaaaadd
23aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
*反向排序,大的在前,小的在后
Sort -t 分隔符
[[email protected] ~]# cat -A 2.txt 显示包括隐藏内容在内的所有内容
1234$
4567$
[[email protected] ~]# wc -l 2.txt 统计行数
2 2.txt
[[email protected] ~]# wc -m 2.txt 统计字符数
10 2.txt
[[email protected] ~]# wc -w 2.txt 统计词数(每个词用空格或空白符号隔开)
2 2.txt
[[email protected] ~]#
去重复字符
[[email protected] ~]# cat 2.txt
1234
1234
qwuh
chrf
ydry
ydry
[[email protected] ~]# uniq 2.txt
1234
qwuh
chrf
ydry
[[email protected] ~]# sort 2.txt |uniq 先排序,再去重复
1234
chrf
qwuh
rrrr
ydry
[[email protected] ~]# sort 2.txt 去重复
1234
1234
1234
chrf
qwuh
rrrr
ydry
ydry
*某两行字符相同但被隔了几行则这两行不会被去重复,先排序再去重则不会出现重复
[[email protected] ~]# sort 2.txt
1234
1234
1234
chrf
qwuh
rrrr
ydry
ydry
[[email protected] ~]# sort 2.txt |uniq -c
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
*先排序再统计重复次数
tee_tr_split
[[email protected] ~]# sort 2.txt|uniq -c > a.txt
[[email protected] ~]# cat a.txt
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
[[email protected] ~]# sort 2.txt|uniq -c|tee a.txt
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
tee与>效果相同,但tee会把结果打印在屏幕上,>不会
[[email protected] ~]# sort 2.txt|uniq -c|tee -a a.txt –a参数表示追加(>>)
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
[[email protected] ~]# cat a.txt
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
3 1234
1 chrf
1 qwuh
1 rrrr
2 ydry
tr命令
[[email protected] ~]# echo "aminglinux"|tr '[al]' '[AL]' 替换字符
AmingLinux
[[email protected] ~]# echo "aminglinux"|tr '[a]' '[A]'
Aminglinux
[[email protected] ~]# echo "aminglinux"|tr '[a-z]' '[A-Z]' 将所有小写字母替换为大写
AMINGLINUX
[[email protected] ~]# echo "aminglinux"|tr '[a-z]' '[1]' a-z替换为1错误用法
1]]]]]]]]]
[[email protected] ~]# echo "aminglinux"|tr '[a-z]' '1' 正确用法
1111111111
Split命令
-b
[[email protected] a]# split -b 1000 a.txt 按每个文件1000字节切割文件(不带单位默认字节)
[[email protected] a]# ls
a.txt xan xbb xbp xcd xcr xdf xdt xeh xev xfj xfx xgl xgz xhn xib
xaa xao xbc xbq xce xcs xdg xdu xei xew xfk xfy xgm xha xho xic
xab xap xbd xbr xcf xct xdh xdv xej xex xfl xfz xgn xhb xhp xid
…
[[email protected] a]# rm -f x* 删除目录下所有切割后的文件
[[email protected] a]# ls
a.txt
[[email protected] a]# split -b 100k a.txt 指定大小100k
[[email protected] a]# ls
a. txt xaa xab xac
b. [[email protected] a]# du -sh *
c. 212K a.txt
d. 100K xaa
e. 100K xab
f. 12K xac
[[email protected] a]# split -b 100k a.txt abc 指定切割后文件的前缀
[[email protected] a]# ls
abcaa abcab abcac a.txt xaa xab xac
-l
[[email protected] a]# wc -l a.txt 按行切割文件
5395 a.txt
[[email protected] a]# split -l 1000 a.txt
[[email protected] a]# wc -l *
5395 a.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
395 xaf
10790 总用量
Shell特殊符号
$ 变量前缀 !$ 一个组合,正则表达式中表示行尾
;当要将多条命令写到一行时用于分割命令
[[email protected] a]# ls 1.txt;wc -l a.txt
ls: 无法访问1.txt: 没有那个文件或目录
5395 a.txt
~ 用户家目录,后面正则表达式表示匹配符
& 把命令放到后面,会将命令放到后台
&> 对正确和错误的内容使用相同的重定向
>,>>,2>,2>>
[] 指定字符中的一个([0-9]、[a-zA-Z])
||
[[email protected] a]# wc -l a.txt || ls 1.txt 第一条命令执行不成功则执行第二条,否则不再向下执行
5395 a.txt
[[email protected] a]# ls 1.txt || wc -l a.txt
ls: 无法访问1.txt: 没有那个文件或目录
5395 a.txt
[[email protected] a]# wc -l a.txt && ls -l a.txt 只有前面命令执行成功才会执行后续命令
5395 a.txt
-rw-r--r--. 1 root root 215603 3月 11 23:37 a.txt
[[email protected] a]# wc -l 1.txt && ls -l a.txt
wc: 1.txt: 没有那个文件或目录
当用户要创建一个目录,若目录不存在才创建,存在则不创建:
[[email protected] a]# [ -d aminglinux ] || mkdir aminglinux ||之前的命令用于判断目录是否存在,存在则不继续后面的命令,否则执行后续的命令
[[email protected] a]# ls
aminglinux a.txt xaa xab xac xad xae xaf
[[email protected] a]# [ -d aminglinux ] && mkdir aminglinux 判断目录是否存在,然后强制创建目录
mkdir: 无法创建目录"aminglinux": 文件已存在 执行后面的命令后,报错产生
以上是关于3.9 8.10-8.13听课笔记的主要内容,如果未能解决你的问题,请参考以下文章