shell特殊符号
\ 脱义字符
不让命令生效,取消掉命令的原义
[root@linux7-128 ~]#a=1
[root@linux7-128 ~]#b=2
[root@linux7-128 ~]#c=$a$b
[root@linux7-128 ~]#echo $c
12
[root@linux7-128 ~]#c=\$a\$b
[root@linux7-128 ~]#echo $c
$a$b
| 管道符
cut分割
[root@linux7-128 ~]#cat /etc/passwd |head -3
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@linux7-128 ~]#cat /etc/passwd |head -3 |cut -d ":" -f 1
root
bin
daemon
[root@linux7-128 ~]#cat /etc/passwd |head -3 |cut -d ":" -f 2
x
x
x
[root@linux7-128 ~]#cat /etc/passwd |head -3 |cut -d ":" -f 1,2
root:x
bin:x
daemon:x
[root@linux7-128 ~]#cat /etc/passwd |head -3 |cut -c 4
t
:
m
sort排序
[root@linux7-128 ~]#sort /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
colord:x:994:991:User for colord:/var/lib/colord:/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
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
geoclue:x:993:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
gnome-initial-setup:x:990:985::/run/gnome-initial-setup/:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
huhu1:x:1001:1001::/home/huhu1:/bin/bash
huhu2:x:1005:1006::/home/huhu2:/bin/bash
使用sort可以对文件进行排序,
[root@linux7-128 ~]#sort 1.txt
<
>
[
{
}
%
213434
22331111
32334rerww
Aasds
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
C112
daemon:x:2:2:daemon:/sbin:/sbin/nologin
*fdn
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologi
qwqwqwqq:wq
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
sort使用ASCII码排序
sort -n
按数字排序,符号和字母默认为0
[root@linux7-128 ~]#sort -n 1.txt
<
>
[
{
}
%
Aasds
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
C112
daemon:x:2:2:daemon:/sbin:/sbin/nologin
*fdn
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologi
qwqwqwqq:wq
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
32334rerww
213434
22331111
sort -r
反序,可以和-n一起使用
[root@linux7-128 ~]#sort -rn 1.txt
22331111
213434
32334rerww
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
qwqwqwqq:wq
operator:x:11:0:operator:/root:/sbin/nologi
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
*fdn
daemon:x:2:2:daemon:/sbin:/sbin/nologin
C112
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
Aasds
%
}
{
[
>
<
LC_ALL=C 排序不正常时设置
wc
- wc -l 统计行数
[root@linux7-128 ~]#wc -l 1.txt
23 1.txt
wc -m
统计字符数 ,包括换行符
[root@linux7-128 ~]#vim 2.txt
123
abc
~
~
~
:wq
[root@linux7-128 ~]#wc -m 2.txt
8 2.txt
[root@linux7-128 ~]#cat -A 2.txt
123$
abc$
[root@linux7-128 ~]#cat 2.txt
123
abc
wc -L
统计字符数,不包括换行符
wc -w
统计词,以空格和空白字符为区分
[root@linux7-128 ~]#vim 2.txt
123
abc 111.111
~
~
~
:wq
[root@linux7-128 ~]#wc -w 2.txt
3 2.txt
[root@linux7-128 ~]#cat 2.txt
123
abc 111.111
uniq 去重
需要先排序,再去重,否则两个相同的字符不会去重
[root@linux7-128 ~]#cat 2.txt
123
abc 111.111
123
1
2
1
2
[root@linux7-128 ~]#uniq 2.txt
123
abc 111.111
123
1
2
1
2
[root@linux7-128 ~]#sort 2.txt |uniq
1
123
2
abc 111.111
uniq -c
统计重复次数
[root@linux7-128 ~]#sort 2.txt |uniq -c
2 1
2 123
2 2
1 abc 111.111
tee
和输出重定向>类似,重定向的同时还在屏幕显示
使用>重定向不会显示
[root@linux7-128 ~]#sort 2.txt |uniq -c > 1.txt
[root@linux7-128 ~]#cat 1.txt
2 1
2 123
2 2
1 abc 111.111
使用tee就可以把重定向的结果显示在屏幕上
[root@linux7-128 ~]#sort 2.txt |uniq -c |tee 1.txt
2 1
2 123
2 2
1 abc 111.111
[root@linux7-128 ~]#cat 1.txt
2 1
2 123
2 2
1 abc 111.111
tee -a
追加重定向
[root@linux7-128 ~]#sort 2.txt |uniq -c |tee -a 1.txt
2 1
2 123
2 2
1 abc 111.111
[root@linux7-128 ~]#cat 1.txt
2 1
2 123
2 2
1 abc 111.111
2 1
2 123
2 2
1 abc 111.111
tr 替换字符
[root@linux7-128 ~]#echo "oraclelinux" |tr 'o' 'O'
Oraclelinux
[root@linux7-128 ~]#echo "oraclelinux" |tr '[a-z]' '[A-Z]'
ORACLELINUX
[root@linux7-128 ~]#echo "oraclelinux" |tr '[a-z]' '1'
11111111111
split 切割
split -b 100M bigfile
将大文件切割为100M
split -l 1000 bigfile
将大文件切割为1000行
split -b 100 bigfile
默认为将大文件切割为100字节
[root@linux7-128 test]#ls
1.txt
[root@linux7-128 test]#split -b 100 1.txt
[root@linux7-128 test]#ls
1.txt xal xax xbj xbv xch xct xdf xdr xed xep xfb xfn xfz xgl xgx xhj xhv xih xit xjf xjr xkd
xaa xam xay xbk xbw xci xcu xdg xds xee xeq xfc xfo xga xgm xgy xhk xhw xii xiu xjg xjs xke
xab xan xaz xbl xbx xcj xcv xdh xdt xef xer xfd xfp xgb xgn xgz xhl xhx xij xiv xjh xjt xkf
xac xao xba xbm xby xck xcw xdi xdu xeg xes xfe xfq xgc xgo xha xhm xhy xik xiw xji xju xkg
xad xap xbb xbn xbz xcl xcx xdj xdv xeh xet xff xfr xgd xgp xhb xhn xhz xil xix xjj xjv xkh
xae xaq xbc xbo xca xcm xcy xdk xdw xei xeu xfg xfs xge xgq xhc xho xia xim xiy xjk xjw xki
xaf xar xbd xbp xcb xcn xcz xdl xdx xej xev xfh xft xgf xgr xhd xhp xib xin xiz xjl xjx
xag xas xbe xbq xcc xco xda xdm xdy xek xew xfi xfu xgg xgs xhe xhq xic xio xja xjm xjy
xah xat xbf xbr xcd xcp xdb xdn xdz xel xex xfj xfv xgh xgt xhf xhr xid xip xjb xjn xjz
xai xau xbg xbs xce xcq xdc xdo xea xem xey xfk xfw xgi xgu xhg xhs xie xiq xjc xjo xka
xaj xav xbh xbt xcf xcr xdd xdp xeb xen xez xfl xfx xgj xgv xhh xht xif xir xjd xjp xkb
xak xaw xbi xbu xcg xcs xde xdq xec xeo xfa xfm xfy xgk xgw xhi xhu xig xis xje xjq xkc
[root@linux7-128 test]#du -sb *
26817 1.txt
100 xaa
100 xab
100 xac
100 xad
100 xae
省略。。。。
100 xiq
100 xir
100 xis
100 xit
100 xiu
100 xiv
100 xiw
100 xix
100 xiy
100 xiz
100 xja
100 xjb
省略。。。。
100 xke
100 xkf
100 xkg
100 xkh
17 xki
指定单位
[root@linux7-128 test]#rm -f x*
[root@linux7-128 test]#ls
1.txt
[root@linux7-128 test]#split -b 10K 1.txt
[root@linux7-128 test]#ls
1.txt xaa xab xac
指定大小的同时指定名字前缀
[root@linux7-128 test]#rm -f x*
[root@linux7-128 test]#ls
1.txt
[root@linux7-128 test]#split -b 10K 1.txt abc
[root@linux7-128 test]#ls
1.txt abcaa abcab abcac
指定行数
[root@linux7-128 test]#wc -l 1.txt
670 1.txt
[root@linux7-128 test]#split -l 100 1.txt
[root@linux7-128 test]#ls
1.txt xaa xab xac xad xae xaf xag
[root@linux7-128 test]#wc -l *
670 1.txt
100 xaa
100 xab
100 xac
100 xad
100 xae
100 xaf
70 xag
1340 总用量
特殊符号
- || 或者
[root@linux7-128 ~]#ls -l 1a.txt; ls 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
2.txt
[root@linux7-128 ~]#ls -l 1a.txt || ls 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
2.txt
[root@linux7-128 ~]#ls -l 1.txt || ls 2.txt
-rw-r--r-- 1 root root 104 5月 31 22:42 1.txt
当第一条命令执行不成功时,使用||还会继续执行下一条命令,如果第一条命令正确,则不会执行第二条
- &&
只有前面的命令正确,才会执行后面的命令,如果前面的命令不正确,后面的命令不会执行
[root@linux7-128 ~]#ls 1a.txt && ls 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
[root@linux7-128 ~]#ls 1.txt && ls 2.txt
1.txt
2.txt
- 示例
判断一个目录是否存在,没有则创建
[root@linux7-128 ~]#[ -d linux ] || mkdir linux
[root@linux7-128 ~]#ls
1.txt anaconda-ks.cfg Downloads manpages-zh-1.5.1 Pictures test Videos
2.txt Desktop folder.ini manpages-zh-1.5.1.tar.gz Public text.txt
3.txt Documents linux Music Templates ustc
判断一个目录是否存在,有则不创建
[root@linux7-128 ~]#[ -d linux ] && mkdir linux
mkdir: 无法创建目录"linux": 文件已存在
拓展
Linux 系统添加操作记录审计
mkdir -p /usr/local/domob/records/
chmod 777 /usr/local/domob/records/
chmod +t /usr/local/domob/records/
vi /etc/profile 在最后添加下面的代码
if [ ! -d /usr/local/domob/records/${LOGNAME} ]
then
mkdir -p /usr/local/domob/records/${LOGNAME}
chmod 300 /usr/local/domob/records/${LOGNAME}
fi
export HISTORY_FILE=”/usr/local/domob/records/${LOGNAME}/bash_history”
export PROMPT_COMMAND=’{ date “+%Y-%m-%d %T ##### (history 1 | { read x cmd; echo “ HISTORY_FILE’
http://blog.lishiming.net/?p=484
更改主机名:hostnamectl set-hostnmae 新主机名
PROMPT_COMMAND环境变量
https://www.uppig.com/prompt_command-environment-variables.html
http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html
source exec 区别
http://blog.51cto.com/alsww/1113112
Linux特殊符号大全
http://ask.apelearn.com/question/7720