命令的執(zhí)行順序
linux命令的執(zhí)行一般是,在終端中輸入一行命令,執(zhí)行完成,再繼續(xù)輸入下一命令。
順序執(zhí)行多條命令
簡單順序命令加 ; 完成
# some-tool代指安裝的軟件
$ sudo apt-get update;sudo apt-get install some-tool;some-tool
選擇性的命令
順序執(zhí)行的命令有個問題,就是說多個順序執(zhí)行的命令可能存在依賴性,后一個命令需要前一個命令的結(jié)果,或者說是前一個命令正確無誤的執(zhí)行之后,后一個命令才能執(zhí)行。
$ which cowsay>/var/null && cowsay -f head-in ohch~
&& 簡單進行選擇性的執(zhí)行命令,如果前面命令的結(jié)果返回0就執(zhí)行后邊的命令否則不執(zhí)行

image
上一個命令的狀態(tài)碼可以用$?進行查看

圖片.png
||與&&起著相反的效果

wm.png
$ which cowsay>/dev/null && echo "exist" || echo "not exist
or
$ which cowsay>/dev/null || echo "exist" && echo "not exist"
第二種會出現(xiàn)一個問題,就是 || 會執(zhí)行后邊的echo "exist",這步?jīng)]有問題。但是往下執(zhí)行的話會出現(xiàn) $?=0和$?!=0都可以的兩種情況,因為&&既可以認為上邊的命令返回的是$?=0,也可以認為返回的是$?!=0,有這種歧義會出現(xiàn)。
管道
管道通常指的是進程間的管道通信,前一個進程的輸出直接作為下一個進程的輸入。管道分為匿名管道和具名管道,匿名管道在命令行中用 | 表示,管道沒有名稱。
# 查看/etc目錄有哪些文件和目錄
$ ls -al /etc
# 屏幕不能顯示完全,這時候可以用滾動條或快捷鍵滾動窗口來查看
# 使用管道ls的輸出作為下一個命令(less)的輸入,一行一行的看
$ ls -al /etc | less
cut命令
打印每一行的某個字段
# 打印目錄下的以":"為分隔符的第一個字段和第六個字段
$ cut /etc/passwd -d ':' -f 1,6
# 前5個
$ cut /etc/passwd -c -5
# 前5個之后的(包含第5個)
$ cut /etc/passwd -c 5-
# 第5個
$ cut /etc/passwd -c 5
# 2~5包含第5個
$ cut /etc/passwd -c 2-5
grep命令
grep [命令選項]... 匹配的表達式 [文件]...
grep -rnI "shiyanlou" ~
# -r 遞歸搜索子目錄的文件,-n表示打印匹配項行號,-I表示忽略二進制文件
# 查看環(huán)境變量中以"yanlou"結(jié)尾的字符串
$ export | grep ".*shiyanlou$"
wc命令
# 輸出文件統(tǒng)計信息
$ wc /etc/passwd
# 行數(shù)
$ wc -l /etc/passwd
# 單詞數(shù)
$ wc -w /etc/passwd
# 字節(jié)數(shù)
$ wc -c /etc/passwd
# 字符數(shù)
$ wc -m /etc/passwd
# 最長行字節(jié)數(shù)
$ wc -L /etc/passws
sort排序命令
# 默認字典排序
$ cat /etc/passwd | sort
# 反轉(zhuǎn)排序
$ cat /etc/passwd | sort -r
# 按特定字段排序
$ cat /etc/passws | sort -t ':' -k 3