linux中特殊符號用法

1 #

   #  管理員賬戶

   $  普通賬戶

  在腳本中 #也常出現在一行的開頭,或者位于完整指令之后,這類情況表示符號后邊是注解文字,不會被執行

例如

    #!/bin/bash

    #this line is comments

   由于這個特性,當臨時不想執行某行指令時,可以在行首加上#就你可以了

  如果被用在指令中,或者引號雙引號擴住的話,或者在反斜線的后面,那他就變成一般的符號了,不具備上述的功能了

——————————————————————————————————-

2 ~  賬戶的home目錄

   代表用戶的home目錄, cd ~ 也可以在后面加上某個用戶的名稱:cd ~ USERNAME,或者當成路徑的一部分:~/bin

   ~+  表示當前的工作目錄,這個符號代表當前的工作目錄,這和內嵌的指令pwd的作用是相同的

   ~-  表示上一次的工作目錄

—————————————————————————————————–

3  ; 分號,command separator

   在shell中,擔任連續指令功能的符號

—————————————————————————————————–

4  ;; 連續的分號(terminator)

   專用在case條件語句選項中,擔任Terminator的角色

—————————————————————————————————–

5  . 點 dot

   在shell中一個.代表當前目錄,兩個..代表上層目錄

—————————————————————————————————–

6   'string' 單引號(single quote)

   被單引號括住的內容,將被視為單一字符串。在引號內的代表變數$符號,沒有作用,也就是說,將被視作一般符號處理,放置任何變量替換

   "string"雙引號(double quote)

   被雙引號括住的內容,將被視為單一字符串,防止通配符的擴展,但允許變量擴展 ,這點與單引號的處理方式不同

   `command` 倒引號(backticks)

   在前面的單引號,括住的字符串如果是命令,那么命令是不會執行的,會被當作平通字符串處理,如果要執行命令,就要使用倒引號

—————————————————————————————————–

7  , 逗號(comma)

  逗號常運用在運算當中當作"區隔"用途

—————————————————————————————————–

8  / 斜線 (forward slash)

  在路徑表示時,代表目錄

  通常單一的/代表root根目錄的意思,在四則運算中,代表除法符號

—————————————————————————————————–

9  \反斜線 

   在交互模式下的反斜線有以下幾個作用。

   (1)放在指令前面,有取消別名的作用

   (2)放在特殊符號前面,則該特殊符號作用消失

   (3)放在指令的最末端,表示指令連接下一行。 

—————————————————————————————————–

10  |  管道(pipeline)

  連接上個指令的標準輸出,作為下個指令的標準輸入。

—————————————————————————————————–

11   ! 驚嘆號(negate or reverse)

   通常表示反邏輯的作用,譬如,用!=表示不等于

—————————————————————————————————–

12  : 冒號

   在bash中,冒號是一個內建命令:“什么事都不干”,但是返回對狀態值為0。

 例1

  :${HOSTNAME?}${USER?}${MAIL?}

這一行的作用是,檢查這些環境變量參數是否已經設置,沒有設置的將會以標準錯誤顯示錯誤信息。

 例2

 寫法一

repeat()

{

  while true

  do 

   $@ && return

  done

}

 寫法二

repeat()

{

 while :

 do $@ && return

 done

}

   第一種寫法中的true是作為/bin下的一個二進制文件來實現的,這就意味這每執行一次while循環,shell就不得不生成一個進程。使用shell內建的:命令,它總是返回為0的退出碼,速度比第一種塊很多

  除了上述之外,還有一個地方必須使用冒號,在用戶自己的HOME目錄下的.bash_profilehuo或者任何功能相似的檔案中,設定關于PATH的場合中,我們使用冒號來作分隔

—————————————————————————————————–

13  ? 問號(wild card)

 在文件名擴展上表示匹配任意一個字符,但不包含null

 *星號

 在文件名擴展中表示任意字符,包含null

 在運算時表示乘法

—————————————————————————————————–

14  $ 錢號 (dollar sign)

變量替換的代表符號

在正則表達式中被定義為"行"的最末端

—————————————————————————————————–

15 ${}  位置變量的表達式

  $*

    $*引用script的執行引用變量,引用參數的算法與一般指令相同,指令本身為0,其后為1,以此類推,引用變量的代表方式如下 $0,$1,$2,$3,$4,$5,$6,$7,$8,$9,${10},${11},${12}…..

各位數的可以直接使用數字,但是兩位數以上的,則必須使用{}符號括住.    

    $*則是代表引用變量的符號,使用時,要依據情況加上雙引號,例如 echo "$*"

    還有一個與$*具有相同作用的符號,但效果和處理方式有些不同  $@

$@

    $@與$*具有相同作用的符號,不過兩者有一個不同點。$*將所有的變量視為一個整體,但是$@則仍保留每個引用變量的區段概念

$# 

    $#表示引用變量的總數量是多少

$?狀態值(status ariable)

    一般來說,Unix like系統的進程以執行系統調用exit()來結束。這個回傳值就是status值?;貍鹘o父進程,來檢查子進程的執行狀態。一般指令執行成功,其回傳值為0;失敗為1

    由于進程的ID是唯一的,所以在同一時間,不可能有重復的PID。有時script會需要產生臨時文件,用來存放必要的材料。而此script有可能在同一時間被使用者們使用。在這種情況下,固定文件名的寫法就顯得不可靠。唯有產生動態文件名,才能符合要求。符號$$或許可以符合這種要求。他代表當前shell的PID,使用它來作為文件名的一部分,可以避免在同一時間,產生相同文件名的覆蓋現象

—————————————————————————————————–

16  ( )指令群組(command group)

    用括號將一串指令括起來,這種用法對shell來說,成為指令群組。指令群組有一個特性,shell會以產生subshell來執行這組指令。因此,在其中所定義的變量,僅作用于指令群組本身。除了指令群組,括號也用在array變量的定義上,另外也應用在其他可能需要加上escape字符才能使用的場合,例如運算式

   ((  ))

    這組括號的作用于了let指令類似,用在算術運算上,是bash的內建功能。所以,在執行效率上會比使用let指令塊許多

    {  } 大括號(Block of code)

    有時候script當中會出現,大括號中間夾著一段或幾段以分號作結尾的指令或變量設定。這種用法與上面介紹的指令群組非常相似,但是大括號不會在當前的shell中產生subshell   

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

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

{xx,yy,zz,…}

    這種大括號的組合,常用在子串的組合上,例如

mkdir {userA,userB}-{home,bin,data}

    我們得到userA-home,userA-bin,userA-data,userB-home,userB-bin,userB-data這幾個目錄。這組符號在適用性上相當廣泛。再來看個例子

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

    如果不是因為這種用法,我們得寫幾行重復幾次呢?

[  ]中括號

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

    這個符號在正則表達式中擔任類似范圍的或集合的角色rm -f 200[1234]

[[  ]]

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

—————————————————————————————————–

17  ||  邏輯符號

    這個代表 or 邏輯的符號

   

   &&  邏輯符號

    這個代表 and 邏輯的符號

  

   &  后臺工作

    單一個&符號,且放在完整指令列的最末端,即表示將該指令列放入后臺中工作

   \<…\>  單詞邊界

    這組符號在正則表達式中,被定義為"邊界"的意思。當匹配時匹配整個單詞

   +  加號plus

     在運算式中,用來表示加法

    在正則表達式中,用來表示匹配前面字元至少一次的意思

   –  減號

    在運算式中,用來表示"減法",expr 10 – 2

    此外也是系統指令的選項符號,ls -la /etc/

    在GNU指令中,如果單獨使用 – 符號,不加任何該文件名稱時,代表"標準輸入"的意思。譬如,tar xpvf-   這里的 – 符號代表從標準輸入讀取資料

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

————————————————————————————

18   %  除法(Modulo)

    在運算式中,用來表示除法

    此外,也被用在關于變量的正則表達式當中,例如

${parameter%word}${parameter%%word}

    一個%表示最短的word匹配,兩個表示最長的word匹配

————————————————————————————

19   = 等號equals

    常在設定變量時看到的符號

    或者是PATH的設定,設置應用在運算或判斷式等此類用途上

   ==  等號 equals

    常在條件判斷式中看到,代表"等于"的意思

   !=  不等于

    常在條件判斷式中看到,代表"不等于"

   ^  

    這個符號在正則表達式中,代表行的"開頭"位置,在[]中也與"!"一樣表示"非"的意思

————————————————————————————

20   輸入/輸出重定向

   >  >> <  <<  :>   &>   2&>   2<>>&  >&2

    文件描述符(file descriptor),用一個數字(通常為0-9)來表示一個文件。常用的文件描述符如下

   文件描述符    名稱    常用縮寫    默認值

     0      標準輸入    stdin      鍵盤

    1      標準輸出    stdout      屏幕

    2     標準錯誤輸出    stderr      屏幕

   我們在簡單的使用 < 或 > 時,相當于使用 0< 或 1> 

cmd > file

   把cmd命令的輸出重定向到文件file中。如果file已經存在,則清空原有文件

cmd >> file

   把cmd命令的輸出重定向到文件file中,如果file文件已經存在,則把信息追加到file中

cmd < file

   使cmd命令從file中讀入

cmd << text

   從命令行讀取輸入,直到一個與text相同的行結束。除非使用引號把輸入括起來,此模式將對輸入內容進行shell變量替換。如果使用<<- ,則會忽略接下來輸入行首的tab,結束行業可以是一堆tab再加上一個與text相同的內容  

cmd <<< word

   把word(而不是文件word)和后面的換行行為輸入提供給cmd

cmd <> file

   以讀寫模式把文件file重定向到輸入,文件file不會被破壞。僅當應用程序利用了這一特性時,它才是有意義的

 

:>filename

   把文件"filename"截斷為0長度,如果文件不存在,就創建一個0長度文件(與'touch'的效果相同)

cmd >& n    把輸出送到文件描述符n

cmd m>&n     把輸出到文件描述符m的信息重定向到文件描述符n

cmd >&-     關閉標注輸出

cmd <&n    輸入來自文件描述符n

cmd m<&n     m來自文件描述符n

cmd <&-     關閉標準輸入

cmd <&n-    移動輸入文件描述符n而非復制它

cmd >&n-    移動輸出文件描述符n而非復制它

部分摘自http://web.itivy.com/article-821-1.html

原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/35067

(1)
black_fishblack_fish
上一篇 2016-08-15 16:55
下一篇 2016-08-15 21:45

相關推薦

  • 系統基礎之壓縮歸檔工具詳解

    壓縮和解壓縮工具 概論  在使用操作系統時,我們常會遇到大文件,會使我們很頭疼.在面對時間和空間上的選擇,只能選擇空間,這就要用到壓縮工具和歸檔工具,下面為大家一一介紹.  壓縮文件只壓縮文本格式的文件,通常不壓縮已經是壓縮的文件.  壓縮文件就會涉及到壓縮比:    原理:通過了解文本文件的數據形式,運用壓…

    Linux干貨 2016-08-18
  • 馬哥教育網絡班20期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     pts/0        2016-06-23&nb…

    Linux干貨 2016-06-29
  • Linux基礎——文件管理

    Linux基礎——文件管理 文件管理及常用命令詳解       Linux文件系統是以/為基本的倒置樹狀結構,我們來進一步學習下文件或者目錄的操作和管理命令:  目錄相關操作:cd、pwd、mkdir、rmdir 目錄及文件檢索:ls 復制、移動、刪除:cp、mv、rm…

    Linux干貨 2016-09-27
  • Hadoop hdfs分布式文件系統

    一、MapReduce理論基礎 每個MapReduce job都是Hadoop客戶端想要執行的一個工作單元,它一般由輸入數據、MapReduce程序和配置信息組成,而Hadoop會把每個job分隔成兩類任務(task):map任務和reduce任務。在Hadoop集群中有兩類節點來執行兩類job進程的執行 1.1 大數據處理 任何基礎業務包含了收集、分析、監…

    2017-12-08
  • 做有高薪有逼格的運維工程師,不會Linux是沒有前途的!

    作為互聯網的幕后英雄,運維工程師長期隱匿在大眾認知范圍之外,關于運維的討論仍舊是一片無人涉足的荒漠。在某知名行業研究調查結果中,非互聯網從業者對于運維相關問題的回復有三個高頻詞匯是:不知道、沒聽過、網管。當調查人員告訴他們科幻電影中展示黑客高超技巧時的命令行界面正是大多數運維工程師每日工作環境時,他們發出極其一致的驚嘆。 相對于普羅大眾的一無所知,技術圈對運…

    2017-09-08
欧美性久久久久