概要
- 重定向符號舉例
[root@junnan1 ~]#
[root@junnan1 ~]# ls
a.txt
[root@junnan1 ~]# cat a.txt
老男孩教育
[root@junnan1 ~]# echo "$PWD" >a.txt
[root@junnan1 ~]# cat a.txt
/root
注釋:標(biāo)準(zhǔn)輸出重定向(>)
[root@junnan1 ~]# cat a.txt
/root
[root@junnan1 ~]# echo "老男孩教育" >>a.txt
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]#
注釋:標(biāo)準(zhǔn)追加輸出重定向(>>)
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]# tr '/root' 'lanha' <a.txt
lahha
老男孩教育
[root@junnan1 ~]#
注釋:替換命令tr,必須使用這種方式几莽,就是輸入重定向(<).
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]# cat >>a.txt<<EOF
> 1
> 2
> 3
> 4
> 5
> EOF
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
1
2
3
4
5
[root@junnan1 ~]#
注釋:與cat配合使用宅静,向文件中可追加多行內(nèi)容。EOF=End Of File文件結(jié)束的意思纤垂,可以隨機(jī)換成任何其他字母磷账。
[root@junnan1 ~]# rt
-bash: rt: command not found
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
1
[root@junnan1 ~]# rt 2>a.txt
[root@junnan1 ~]# cat a.txt
-bash: rt: command not found
[root@junnan1 ~]#
2.“?”,表示任意一個(gè)字符
[root@junnan1 /tmp]# ls
1.txt 2.txt 3.txt 4.txt 5.txt {a-e}.txt {a...e}.txt
[root@junnan1 /tmp]# ll ?.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 1.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 2.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 3.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 4.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 5.txt
[root@junnan1 /tmp]#
3.";",分號表示:兩個(gè)命令的分隔符逃糟,兩個(gè)命令之間沒有任何關(guān)系
[root@junnan1 /tmp]# echo 'hello';echo 'word'
hello
word
[root@junnan1 /tmp]#
3.{} 命令組合 和 序列
- 創(chuàng)建oldboy1 到 oldboy10 文件
[root@junnan1 ~]# touch oldboy{1..10}
[root@junnan1 ~]# ls
anaconda-ks.cfg oldboy10 oldboy3 oldboy5 oldboy7 oldboy9
oldboy1 oldboy2 oldboy4 oldboy6 oldboy8
[root@junnan1 ~]#
- 創(chuàng)建 oldboya 到 oldboyf 文件
[root@junnan1 ~]# touch oldboy{a..g}
[root@junnan1 ~]# ls
anaconda-ks.cfg oldboya oldboyb oldboyc oldboyd oldboye oldboyf oldboyg
[root@junnan1 ~]#
- 給不同目錄下創(chuàng)建相同目錄
[root@junnan1 ~]# mkdir -p /tmp/{1,2}/old
[root@junnan1 ~]# ls /tmp/{1,2}/old
/tmp/1/old:
/tmp/2/old:
4. ``反引號,解析命令
[root@junnan1 ~]# ll `which mkdir`
-rwxr-xr-x. 1 root root 79864 Oct 31 03:16 /usr/bin/mkdir
[root@junnan1 ~]#
5.''單引號菇肃,所見所得
[root@junnan1 ~]# echo 'date'
date
[root@junnan1 ~]#
6. $ 變量前需要加的符號
[root@junnan1 ~]# echo $PS1
[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\$
[root@junnan1 ~]# echo $UID
0
[root@junnan1 ~]#
7.|管道符 效率不高取募,前者輸出是后者輸入
[root@junnan1 ~]# cat -n /etc/profile|grep -i 'histsize'
46 HISTSIZE=1000
53 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@junnan1 ~]#
#8.小括號矛辕,命令替換。命令替換$(cmd)等同于`cmd`(這不是單引號聊品,`是ESC下面的那個(gè)鍵) ,shell執(zhí)行過程中發(fā)現(xiàn)了$(cmd)結(jié)構(gòu)陈哑,便將$(cmd)中的cmd執(zhí)行一次,得到其輸出刽宪,再將此輸出放到原來命令
[root@junnan1 ~]# tar zcf /tmp/date$(date +%F).tar.gz /etc/
tar: Removing leading `/' from member names
[root@junnan1 ~]# ls /tmp
1 2 date2019-04-15.tar.gz
[root@junnan1 ~]#
#9.中括號“[]” 范圍內(nèi)的一個(gè)字符
可以匹配括號內(nèi)的其中一個(gè)字符(不能匹配字符串)
“-”代表一個(gè)范圍界酒,
“^”邏輯非,代表不匹配該字符或該范圍庇谆。
[0-9]
[a-z]
[A-Z]