CentOS 7 Shell腳本編程第五講 再講特殊符號 --未完待續

上文已經講過$開頭部分符號用法。本文將詳細解讀其餘符號用法。本文符號未做說明都是英文符號。` `通常位於鍵盤上~符號下面。正則表達式

[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。

相關文章
相關標籤/搜索