1. 程式人生 > >CentOS 7 Shell指令碼程式設計第五講 再講特殊符號 --未完待續

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