CentOS 7 Shell指令碼程式設計第五講 再講特殊符號 --未完待續
上文已經講過$開頭部分符號用法。本文將詳細解讀其他符號用法。本文符號未作說明都是英文符號。` `一般位於鍵盤上~符號下面。
[root@promote ~]# echo `date`
2019年 03月 31日 星期日 21:02:51 CST
[root@promote ~]#
首先講解;和:。
:表示“不執行任何命令”,同時也用於時間分隔等。
;表示順序地獨立執行各條命令, 彼此之間不關心是否失敗, 所有命令都會執行。 檔案內分號用於程式碼塊分隔,命令視窗用於分隔不同命令。;;本文不講。
[root@promote ~]# ls ; date anaconda-ks.cfg 2019年 03月 31日 星期日 20:59:13 CST #mkdir test;cd test;mkdir dir;cd dir 等價於mkdir -p test/dir;cd dir [root@promote test]# pwd /root [root@promote ~]# mkdir test;cd test;mkdir dir;cd dir #注意三者/root pwd 命令輸出結果區別 [root@promote ~]# mkdir -p ./test/dir #遞迴建立目錄 [root@promote ~]# mkdir -p test/dir [root@promote ~]# mkdir -p /test/dir
"" '' 用於字串,一般成對出現。`(反引號)較少見。
| 表示管道,用於隔離不同命令,||表示上一個命令執行成功後執行後續命令。
#執行成功不再執行後續語句,失敗提示出錯原因
[root@promote ~]# ls || pwd
anaconda-ks.cfg test
[root@promote ~]# ldd || pwd
ldd: 缺少檔案引數
試用“ldd --help”以獲取更多資訊。
/root
[root@promote ~]# now || pwd
-bash: now: 未找到命令
/root
[root@promote ~]#
\放在自定義命令前取消命令執行結果返回錯誤。放在特殊符號前,則該特殊符號的作用消失;轉義符有\t (水平製表符)、\n(換行)、\c(取消當前輸入)、 \r(回車)、 \b(退格)、 \v(縱向製表符)等。\c 用法見程式碼。
[root@promote ~]# echo 'alias now="date"' >.bashrc
[root@promote ~]# vim .bashrc
[root@promote ~]# source .bashrc
[root@promote ~]# now
2019年 03月 31日 星期日 19:53:16 CST
[root@promote ~]# \now
-bash: now: 未找到命令
[root@promote ~]#
[root@promote ~]# touch test.log
[root@promote ~]# ls
test.log anaconda-ks.cfg test
[root@promote ~]# rm ./*.log
rm:是否刪除普通空檔案 "./test.log"?y
[root@promote ~]# ls
anaconda-ks.cfg test
[root@promote ~]#
#\用法
echo #!/bin/sh
echo "OK! \c"
echo "It is a test text." >testc.sh
[root@promote ~]# echo "OK! \c"
OK! \c
[root@promote ~]# echo "It is a test text." >testc.sh
[root@promote ~]#
[root@promote ~]# ls
anaconda-ks.cfg test testc.sh
[root@promote ~]# cat testc.sh
It is a test text.
[root@promote ~]#
[root@promote ~]# echo '\@'
\@
[root@promote ~]# echo '\\'
\\
[root@promote ~]# echo "\'"
\'
[root@promote ~]# echo '\^'
\^
<>一般成對出現。< 表示輸入重定向,> 表示輸出重定向,覆蓋內容,>> 輸出重定向,追加內容<<表示標準輸入。
,和.都有分隔作用,.表示當前目錄,..表示上一級目錄,.還有區分檔案型別最用,例如test.txt。
[root@promote ~]# cd /
[root@promote /]# cd .
[root@promote /]# cd /usr/bin/
[root@promote bin]# cd ..
[root@promote usr]# ls
bin etc games include lib lib64 libexec local sbin share src tmp
[root@promote usr]# pwd
/usr
[root@promote usr]# ls .
bin etc games include lib lib64 libexec local sbin share src tmp
[root@promote usr]# ls ..
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var
[root@promote usr]#
/表示資料夾分隔符,同時表示根目錄。
[root@promote ~]# cd /
[root@promote /]#
~表示使用者資料夾。
[root@promote ~]#
!表示取反。例如!=表示不等於,ls a[!0-2]txt表示僅顯示a接0-9檔名。
[root@promote ~]# ls
a1.txt a2.txt a3.txt a8.txt aa.txt ab.txt ac.txt anaconda-ks.cfg test testc.sh test.sh
[root@promote ~]# ls a[1-2].txt
a1.txt a2.txt
[root@promote ~]#
@一般和其他符號一起使用,也用於ssh登入,例如ssh [email protected] 。
#用於指令碼註釋。
%用於正則表示式和部分其他符號混用。
^用於匹配字元。
&用於將指令放入後臺執行。&&表示當前語句執行成功繼續執行後續語句,否則報錯。
*用於表示任意字元或檔案。
()一般成對出現,用於語句塊。
+-*/=還有數學運算子號作用。==表示相等。
{}[]用於語句塊流程控制等。[]同時用於匹配字元等。[[]]符號與 [] 符號作用基本相同,前者允許在其中直接使用 || 與&& 邏輯等符號。
\< \>用於字元精細匹配。例如<the>無法匹配th