上文已經講過$開頭部分符號用法。本文將詳細解讀其餘符號用法。本文符號未做說明都是英文符號。` `通常位於鍵盤上~符號下面。正則表達式
[root@promote ~]# echo `date` 2019年 03月 31日 星期日 21:02:51 CST [root@promote ~]#
首先講解;和:。vim
:表示「不執行任何命令」,同時也用於時間分隔等。bash
;表示順序地獨立執行各條命令, 彼此之間不關心是否失敗, 全部命令都會執行。 文件內分號用於代碼塊分隔,命令窗口用於分隔不一樣命令。;;本文不講。ssh
[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
"" '' 用於字符串,通常成對出現。`(反引號,Tab和數字1旁邊)較少見。spa
| 表示管道,用於隔離不一樣命令,||表示上一個命令執行成功後執行後續命令。code
#執行成功再也不執行後續語句,失敗提示出錯緣由 [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 (水平製表符)、\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 ~]# ls anaconda-ks.cfg test testc.sh testname.sh test.sh [root@promote ~]# ls -a . anaconda-ks.cfg .bash_logout .bashrc .pki .tcshrc testc.sh test.sh .viminfo .. .bash_history .bash_profile .cshrc .ssh test testname.sh .test.txt [root@promote ~]#
/表示文件夾分隔符,同時表示根目錄。test
?表示匹配一個字符。
[root@promote ~]# cd / [root@promote /]# [root@promote ~]# touch test.tex [root@promote ~]# ls anaconda-ks.cfg test test.tex test.txt [root@promote ~]# ls tes?.t?? test.tex test.txt [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 root@192.168.100.100 。
#用於腳本註釋。
%用於正則表達式和部分其餘符號混用。
^用於匹配字符。
&用於將指令放入後臺運行。&&表示當前語句執行成功繼續執行後續語句,不然報錯。
*用於表示任意字符或文件。
()通常成對出現,用於語句塊。
+-*/=還有數學運算符號做用。==表示相等。
{}[]用於語句塊流程控制等。[]同時用於匹配字符等。[[]]符號與 [] 符號做用基本相同,前者容許在其中直接使用 || 與&& 邏輯等符號。
\< \>用於字符精細匹配。例如<the>沒法匹配there。