Shell中符號意義

2021-06-07 08:59:11 字數 4855 閱讀 7962

# 井號 (comments)

一般情況:此符號後面的是註解文字,不會被執行。

特殊情況:第一行#!/bin/bash

例外情況:如果被引號,雙引號括住的話,或者在倒斜線的後面,那他就變成一般符號,不具上述的特殊功能。

~ 波浪號

代表使用者的home目錄cd ~

直接在符號後加上某帳戶的名稱:cd ~user

當成是路徑的一部份:~/bin

當前的工作目錄~+ 和pwd的作用是相同的。

上次的工作目錄~-

; 分號 (command separator)

在同一行中寫入多行指令,如cd ~/backup ; mkdir startup ; cp ~/.* startup/.

;; 連續分號 (terminator)

專用在 case 的選項,擔任 terminator 的角色。

. 圓點號 (dot)

.代表當前目錄

..代表上層目錄

如果檔名以.開頭,表示隱藏檔案

,用 ls 指令必須加上 -a 選項才會顯示

在正規表示式中,乙個.代表匹配乙個字元。

' 單引號 (single quote)

表示字串,而且防止萬用字元擴充套件和變數擴充套件

" 雙引號 (double quote)

表示字串,但只防止萬用字元擴充套件

` 反引號 (backticks)

在被單雙引號約束的字串內執行命令

, 逗號 (comma)

這個符號常運用在運算當中當做」區隔」用途

/ 斜扛 (forward slash)

在路徑表示時,代表目錄分隔符。

單一的 / 代表根目錄的意思;

在四則運算中,代表除法的符號。

\反斜扛

在命令模式下的轉義 字元,在命令前取消別名,在特殊符號前取消特殊符號的作用,在命令末端表示指令連線下一行。

| 豎線

管道,鏈結上個指令的標準輸出,做為下個指令的標準輸入。

標準輸入0

標準輸出1

標準錯誤輸出2

<< "eof" 結束輸入

! 驚嘆號(negate or reverse)

通常它代表反邏輯的作用,例如!=代表不等於

: 冒號

在bash中,這是乙個內部指令:」什麼事都不幹」,但返回狀態值 0。

: > f.$$相當於 cat /dev/null > f.$$。不僅寫法簡短了,而且執行效率也好上許多。

有時: $ $ $

這行的作用是,檢查這些環境變數是否已設定,沒有設定的將會以標準錯誤顯示錯誤訊息。像這種檢查如果使用類似 test 或 if 這類的做法,基本上也可以處理,但都比不上上例的簡潔與效率。

在設定關於」路徑」的場合中,使用冒號來做區隔

path=$path:$home/fbin:$home/fperl:/usr/local/mozilla

? 問號 (wild card)

在副檔名是匹配乙個任意的字元,但不包含 null 字元。

* 星號 (wild card)

在副檔名上,代表任何字元,包含 null 字元。

在運算時,它則代表 」乘法」。

** 次方運算

兩個星號在運算時代表 」次方」 的意思。

$ 錢號(dollar sign)

變數替換(variable substitution)的代表符號。

在正規表示式裡為行的最末端 (end-of-line)。這個常用在 grep、sed、awk 以及 vim(vi) 當中。

${} 變數的正規表示式

bash 對 ${} 定義了不少用法。見本文後部

$*引用script 的執行引用變數

引用引數的演算法與一般指令相同,指令本身為0,其後為1,然後依此類推。引用變數的代表方式如下:

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $, $…..

個位數的,可直接使用數字,但兩位數以上,則必須使用 {} 符號來括住。

$* 則是代表所有引用變數的符號。使用時,得視情況加上雙引號。

echo 」$*」

$@$@ 與 $* 具有相同作用的符號,不過她們兩者有乙個不同點。

符號 $* 將所有的引用變數視為乙個整體。但符號 $@ 則仍舊保留每個引用變數的區段觀念。

$#這也是與引用變數相關的符號,她的作用是告訴你,引用變數的總數量是多少。

echo 」$#」

$? 狀態值 (status variable)

一般來說,unix(linux) 系統的程序以執行系統呼叫exit() 來結束的。這個回傳值就是status值。回傳給父程序,用來檢查子程序的執行狀態。

一般指令程式倘若執行成功,其回傳值為 0;失敗為 1。

$$ 這個程式的pid

$! 執行上乙個指令的pid

$- 顯示shell使用的當前選項,與set命令功能相同

() 指令群組 (command group)

用括號將一串連續指令括起來,這種用法對 shell 來說,稱為指令群組。如下面的例子:(cd ~ ; vcgh=`pwd` ; echo $vcgh),指令群組有乙個特性,shell會以產生 subshell 來執行這組指令。因此,在其中所定義的變數,僅作用於指令群組本身。我們來看個例子

括號也用在 array 變數的定義上;

另外也應用在其他可能需要加上escape 字元才能使用的場合,如表示式。

(())

這組符號的作用與 let 指令相似,用在算數運算上,是 bash 的內建功能。所以,在執行效率上會比使用 let 指令要好許多。

{} 大括號 (block of code)

有時候 script 當中會出現,大括號中會夾著一段或幾段以」分號」做結尾的指令或變數設定。

# cat ftmp-02#!/bin/basha=fshecho $a# ./ftmp-02inbcinbc

這種用法與上面介紹的指令群組非常相似,但有個不同點,它在當前的 shell 執行,不會產生 subshell。

大括號也被運用在 」函式」 的功能上。廣義地說,單純只使用大括號時,作用就像是個沒有指定名稱的函式一般。因此,這樣寫 script 也是相當好的一件事。尤其對輸出輸入的重導向上,這個做法可精簡 script 的複雜度。

此外,大括號還有另一種用法,如下

這種大括號的組合,常用在字串的組合上,來看個例子

mkdir -

我們得到 usera-home, usera-bin, usera-data, userb-home, userb-bin, userb-data, userc-home, userc-bin, userc-data,這幾個目錄。這組符號在適用性上相當廣泛。能加以善用的話,回報是精簡與效率。像下面的例子

chown root /usr/,lib/}

中括號常出現在流程控制中,扮演括住判斷式的作用。if [ "$?" != 0 ]thenecho 」executes error」exit 1fi

這個符號在正規表示式中擔任類似 」範圍」 或 」集合」 的角色

rm -r 200[1234]

上例,代表刪除 2001, 2002, 2003, 2004 等目錄的意思。

這組符號與先前的  符號,基本上作用相同,但她允許在其中直接使用 || 與 && 邏輯等符號。

#!/bin/bashread akif [[ $ak > 5 || $ak < 9 ]]thenecho $akfi

|| 邏輯符號

這個會時常看到,代表 or 邏輯的符號。

&& 邏輯符號

這個也會常看到,代表 and 邏輯的符號。

& 後台工作

單乙個& 符號,且放在完整指令列的最後端,即表示將該指令列放入後台中工作。

tar cvfz data.tar.gz data > /dev/null &

複製控制代碼,例如》&將乙個控制代碼的輸出寫入到另乙個控制代碼的輸入中,將正常和錯誤同時輸出到

/<…/> 單字邊界

這組符號在規則表示式中,被定義為」邊界」的意思。譬如,當我們想找尋 the 這個單字時,如果我們用

grep the filea

你將會發現,像 there 這類的單字,也會被當成是匹配的單字。因為 the 正巧是 there 的一部份。如果我們要必免這種情況,就得加上 」邊界」 的符號

grep 』/' filea

+ 加號 (plus)

在表示式中,她用來表示 」加法」。

在規則表示式中,用來表示」很多個」的前面字元的意思。

- 減號 (dash)

在shell萬用字元中代表編碼順序內所有字元

在表示式中,她用來表示 」減法」。

也是系統指令的選項符號。

在 gnu 指令中,如果單獨使用 - 符號,不加任何該加的檔名稱時,代表」標準輸入」的意思。這是 gnu 指令的共通選項。譬如tar xpvf -這裡的 - 符號,既代表從標準輸入讀取資料。

不過,在 cd 指令中則比較特別cd -這代表變更工作目錄到」上一次」工作目錄。

% 除法 (modulo)

在表示式中,用來表示 」除法」。

此外,也被運用在關於變數的規則表示式當中的下列

$$乙個 % 表示最短的 word 匹配,兩個表示最長的 word 匹配。

= 等號 (equals)

為變數賦值

== 等號 (equals)

常在條件判斷式中看到,代表 」等於」 的意思。

!= 不等於

常在條件判斷式中看到,代表 」不等於」 的意思。

^這個符號在規則表示式中,代表行的 」開頭」 位置。

特殊字元表示

/b 退回

/c 列印一行時沒有換行符 這個我們經常會用到

/f 換頁

/r 回車

/t 製表

/v 垂直製表

\/ 反斜線本身

shell中符號的意義

各種括號的用法總結如下 1.shell中變數的原形 大家常見的變數形式都是 var 2.命令替換 cmd 命令替換 cmd 和符號 cmd 注意這不是單引號,在美式鍵盤上,是esc下面的那個鍵 有相同之處 3.一串的命令執行 和 和 都是對一串的命令進行執行,但有所區別 a,只是對一串命令重新開乙個...

Shell 中引用符號,特殊符號的名稱及意義

shell 中引用符號的名稱及意義 符號 名稱 意義 雙引號引用處美元符號 反引號 和反斜線 之外的所有符號 單引號 引用所有符號 反引號 shell將反引號中的內容解釋為系統命令 反斜線轉義符,遮蔽下乙個字元的特殊意義 shell中的特殊字元及其意義 特殊符號 意義 傳遞到指令碼的引數數量 0個或...

整理的shell指令碼中的各種符號的意義

此符號後面的是註解文字,不會被執行,如果是在括號裡或者 後面,則變成一般符號 代表使用者的home目錄cd 分號,在同一行寫入多行指令 連續分號,case指令碼專用,代表一則命令終結 單引號,所見即所得,直接顯示單引號內容,防止萬用字元擴充套件和變數擴充套件 雙引號,執行變數解析後,再輸出 反引號,...