Linux-shell學習筆記2

一、命令的運行順序shell

  1. 以相對/絕對路徑運行命令,例如『 /bin/ls 』或『 ./ls 』;
  2. 由 alias 找到該命令來運行;
  3. 由 bash 內建的 (builtin) 命令來運行;
  4. 經過 $PATH 這個變量的順序搜尋到的第一個命令來運行。

二、經過 type -a ls 也能夠查詢的命令的運行順序。bash

三、source :讀入環境配置文件的命令。ui

利用 source 或小數點 (.) 均可以將配置文件的內容讀進來目前的 shell 環境中。編碼

四、Ctrl + U 在提示字符下,將整列命令刪除。spa

五、在 bash 的操做環境中還有一個很是有用的功能,那就是通配符 (wildcard) blog

符號 意義
* 表明『 0 個到無窮多個』任意字符
? 表明『必定有一個』任意字符
[ ] 一樣表明『必定有一個在括號內』的字符(非任意字符)。例如 [abcd] 表明『必定有一個字符, 多是 a, b, c, d 這四個任何一個』
[ - ] 如有減號在中括號內時,表明『在編碼順序內的全部字符』。例如 [0-9] 表明 0 到 9 之間的全部數字,由於數字的語系編碼是連續的!
[^ ] 若中括號內的第一個字符爲指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 表明 必定有一個字符,只要是非 a, b, c 的其餘字符就接受的意思。

 

六、排序

符號 內容
# 批註符號:這個最常被使用在 script 當中,視爲說明!在後的數據均不運行
\ 跳脫符號:將『特殊字符或通配符』還原成通常字符
| 管線 (pipe):分隔兩個管線命令的界定(後兩節介紹);
; 連續命令下達分隔符:連續性命令的界定 (注意!與管線命令並不相同)
~ 用戶的家目錄
$ 取用變量前導符:亦便是變量以前須要加的變量取代值
& 工做控制 (job control):將命令變成背景下工做
! 邏輯運算意義上的『非』 not 的意思!
/ 目錄符號:路徑分隔的符號
>, >> 數據流重導向:輸出導向,分別是『取代』與『累加』
<, << 數據流重導向:輸入導向 (這兩個留待下節介紹)
' ' 單引號,不具備變量置換的功能
" " 具備變量置換的功能!
` ` 兩個『 ` 』中間爲能夠先運行的命令,亦可以使用 $( )
( ) 在中間爲子 shell 的起始與結束
{ } 在中間爲命令區塊的組合!

 

七、數據流重導向ip

數據流重導向能夠將 standard output (簡稱 stdout) 與 standard error output (簡稱 stderr) 分別傳送到其餘的文件或裝置去,而分別傳送所用的特殊字符則以下所示:ci

  1. 標準輸入  (stdin) :代碼爲 0 ,使用 < 或 << ;
  2. 標準輸出  (stdout):代碼爲 1 ,使用 > 或 >> ;
  3. 標準錯誤輸出(stderr):代碼爲 2 ,使用 2> 或 2>> ;

>或者2>將會清空文件中上次的寫入內容,>>和2>>將會追加內容到已存在的文件內。it

八、若是我知道錯誤信息會發生,因此要將錯誤信息忽略掉而不顯示或儲存呢? 這個時候黑洞裝置 /dev/null 就很重要了!這個 /dev/null 能夠吃掉任何導向這個裝置的信息。

九、若是我要將正確與錯誤數據統統寫入同一個文件去呢?這個時候就得要使用特殊的寫法

[dmtsai@www ~]$ find /home -name .bashrc > list 2> list  <==錯誤 [dmtsai@www ~]$ find /home -name .bashrc > list 2>&1 <==正確 [dmtsai@www ~]$ find /home -name .bashrc &> list <==正確

十、< 與 <<:將本來須要由鍵盤輸入的數據,改由文件內容來取代。

十一、『我要用 cat 直接將輸入的信息輸出到 catfile 中, 且當由鍵盤輸入 eof 時,該次輸入就結束』,那我能夠這樣作:cat > catfile << "eof"。

十二、在命令與命令中間利用分號 (;) 來隔開,這樣一來,分號前的命令運行完後就會馬上接着運行後面的命令了。(不考慮命令相關性的連續命令下達)

1三、|| 和 && 相似於js中的短路運算符,不過Linux 底下的命令都是由左往右運行。

1四、若前一個命令運行的結果爲正確,在 Linux 底下會回傳一個 $? = 0 的值。

1五、管線命令『 | 』僅能處理經由前面一個命令傳來的正確信息,也就是 standard output 的信息,對於 stdandard error 並無直接處理的能力。

1六、cut:能夠將一段信息的某一段給他『切』出來~ 處理的信息是以『行』爲單位。

1七、sort:排序命令

1八、uniq:重複的數據只顯示一行

1九、wc:輸出文件總體信息,行、字、字符。

20、tee: 會同時將數據流分送到文件去與屏幕 (screen);而輸出到屏幕的,其實就是 stdout ,可讓下個命令繼續處理。

2一、xargs:產生某個命令的參數。

2二、split:分割命令

相關文章
相關標籤/搜索