簡單的順序命令可使用符號「;」完成,如:sudo apt-get update;sudo apt-get install some-tool;some-tool。shell
符號"&&"就是用來實現選擇性執行的,它表示若是前面的命令執行結果(不是表示終端輸出 的內容,而是表示命令執行狀態的結果)返回0則執行後面的,不然不執行,你能夠從境變「 量「$?」獲取上一次命令的返回結果。網絡
which cowsay>/dev/null && cowsay -f head-in ohch~less
學習過 C 語言的用戶應該知道在 C 語言裏面&&表是邏輯與,並且還有一個||表示邏輯或, 一樣 Shell 也有一個||,它們的區別就在於,shell中的這兩個符號除了也可用於表示邏輯 與和或以外,就是能夠實現這裏的命令執行順序的簡單控制。||在這裏就是與&&相反的控制 效果,當上一條命令執行結果爲≠0($?≠0)時則執行它後面的命令。socket
管道是什麼,管道是一種通訊機制,一般用於進程間的通訊(也可經過socket進行網絡通訊 ),它表現出來的形式就是將前面每個進程的輸出(stdout)直接做爲下一個進程的輸入(s tdin)。工具
管道又分爲匿名管道和具名管道(這裏將不會討論在源程序中使用系統調用建立並使用管道 的狀況,它與命令行的管道在內核中實際都是採用相同的機制)。咱們在使用一些過濾程序 時常常會用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的內容中咱們已經屢次 使用到了。具名管道簡單的說就是有名字的管道,一般只會在源程序中用到具名管道。下面 咱們就將經過一些經常使用的可使用管道的"過濾程序"來幫助你熟練管道的使用。學習
常見用法:命令行
ls -al /etc | less排序
打印/etc/passwd文件中以:爲分隔符的第1個字段和第6個字段分別表示用戶名和其家目錄:遞歸
$ cut /etc/passwd -d ':' -f 1,6進程
打印/etc/passwd文件中每一行的前N個字符:
前五個(包含第五個)
cut /etc/passwd -c -5
前五個以後的(包含第五個)
cut /etc/passwd -c 5-
第五個
cut /etc/passwd -c 5
2到5之間的(包含第五個)
cut /etc/passwd -c 2-5
咱們搜索/home/shiyanlou目錄下全部包含"shiyanlou"的全部文本文件,並顯示出如今文本 中的行號:
$ grep -rnI "shiyanlou" ~
-r 參數表示遞歸搜索子目錄中的文件,-n表示打印匹配項行號,-I表示忽略二進制文件。這 個操做實際沒有多大意義,但能夠感覺到grep命令的強大與實用。
查看環境變量中以"yanlou"結尾的字符串
$ export | grep ".*yanlou$"
分別只輸出行數、單詞數、字節數、字符數和輸入文本中最長一行的字節數:
行數
wc -l /etc/passwd
單詞數
wc -w /etc/passwd
字節數
wc -c /etc/passwd
字符數
wc -m /etc/passwd
最長行字節數
wc -L /etc/passwd
默認爲字典排序:
$ cat /etc/passswd | sort
反轉排序:
$ cat /etc/passwd | sort -r
按特定字段排序:
$ cat /etc/passwd | sort -t':' -k 3
上面的-t參數用於指定字段的分隔符,這裏是以":"做爲分隔符;-k 字段號用於指定對哪一 個字段進行排序。這裏/etc/passwd文件的第三個字段爲數字,默認狀況下是一字典序排序 的,若是要按照數字排序就要加上-n參數: