在Linux的開發有一條很經典的法則就是不要重複發明輪子,在Linux上面做東西如果說一切從頭開始是沒有必要的,因爲是開源的,所以我們完全可以運用別人創建的東西完善自己的東西。
管道和重定向簡單的理解就是對輸出輸入的數據進行再次操作,使之最後達到再求的結果和格式,因此這就涉及到了多個命令的配合操作,多命令的協作,各個程序之間實現交互。
Linux提供的管理與重定向就是通過多命令協作實現標準的輸入輸出。
管道重定向是爲了規定shell標準輸出的格式及輸出位置
>指定結果輸出位置(覆蓋)
>>指定結果輸出位置(追加)
2>指定標準錯誤的輸出位置
2>&1將標準錯誤和標準輸出結合在一起輸出
<重定向標準輸出 將指定文件導出顯示
| 管道,將一個命令的標準輸出作爲一個命令的標準輸入
ls -l | grep linuxcast
所有重定向到/dev/null文件的信息都會被自動丟掉
幾個常用的例子:
1.將指定目錄下的文件詳細信息保存到1.txt文件中:
touch 1.txt | ls –al >1.txt
2.顯示最近root用戶的登錄次數
last | grep root| wc –l
3.將 1.txt中的文件導出並查找包含了ssh的文件名稱
ls –al <1.txt|find –name *ssh*
3.按ID反向排序查看所用戶
sort
語法:[root @test /root ]# sort [-t 分隔符] [(+起始)(-結束)] [-nru]
參數說明:
-t 分隔符:使用分隔符來隔開不同區間,預設是tab
+start -end:由第 start 區間排序到 end 區間
-n :使用『純數字』排序(否則就會以文字型態來排序)
-r :反向排序
-u :相同出現的一行,只列出一次!
cat /etc/passwd | sort –t :+2 -3 –r
4.將該系統上所有用戶的名稱追加到表1.txt文件中
cut
語法:[root @test /root ]# cut -d "分隔字符" [-cf]fields
參數說明:
-d :後面接的是用來分隔的字符,預設是『空格符』
-c :後面接的是『第幾個字符』
-f :後面接的是第幾個區塊?
cat /etc/passwd |cut –d “:” –f 1>>1.txt