輸入輸出的定義:
1.輸入就是我們的鍵盤,鼠標和我們用這些硬件在系統只錄入的字符。
2.輸出就是系統接收到我們想要實現的功能字符后,經過進程的處理產生字符。輸出會有兩種形式出現:編號1為正確輸出,編號2為錯誤輸出,默認著兩種輸出都會被系統定向到字符設備中。
2.非交互式多行錄入
vim .sh
sh .sh
這樣調用的時候需要交互式更改密碼。
在我們調用sh命令是不能自動運行的,需要借助 file.out 正確的輸出
這個命令就相當于將正確的命令重定向到file.out中,我們用cat來查看文件內容如圖所示,這都是在用戶下進行每一步驟的。
find /etc/ -name 2> file.out 錯誤的輸出
同樣是把錯誤的內容重定向到file.out中將文件內容輸出到屏幕,我們可以用cat查看效果。我們每次敲完代碼不是不提示錯誤就是做對了,我們要學會用眼睛來看到我們自己的操作是正確的,養成良好的習慣。
find /etc/ -name &> file.all 全部輸出
"注意:重定向是會覆蓋原文件內容的!!!"
vim
hello
find /etc/ -name >
cat 原文件內容不見了,只剩下重定向的正確的內容
追加,保持原文件內容不變的情況下把輸出追加到文件之后。
>> 追加正確輸出
2>> 追加錯誤輸出
&>> 追加所有輸出
find /etc/ -name >> xfl
一開始我在xfl文件中編輯了hello然后使用追加正確輸出命令,用cat查看文件內容時hello并沒有丟失,可見追加是保持原內容不變的前提下追加新內容。
find /etc -name 2>> xfl
使用命令之后,可以看到hello還是在的,這就是追加的呈現。
find /etc -name &>> test
管道命令:
管道就是把輸出變成下一個程序的輸入將文件內容輸出到屏幕,管道是用來組合多條命令的使用的。顧名思義就是一個過濾器一樣,我們可以使用這個命令來控制正確還是錯誤的來通過管道。
ls /bin | wc -l
"注意:通過管道后輸出會變成輸入,那么是無法保存在文件中的"。如上圖所示,命令只會呈現結果而不會保存。
tee 復制輸出到指定位置,ls /bin | tee file | wc -l
cat file file中已經保存了輸出,也就是有了兩份內容。
練習:
1.顯示當前時間 , 顯示格式為 hh:mm:ss, 并保存到文件 time.txt文件中
date +%H:%M:&S | tee time.txt
我們可以看到tee命令的呈現,也就是通過管道來復制時間到time.txt。
2.顯示 /etc/ 文件的第 15-18 行內容,當我們不會使用命令時學會用--help命令來查看命令的操作。
cat -b /etc/ | head -n 18 | tail -n 4
3.顯示 /bin 中文件包含大寫字母的文件 , 保存到.txt 文件中,并統計個數顯示到屏幕。
touch .txt
ls /bin/*[[:upper:]]* | tee .txt | wc -l
4.在 用戶下查找 /etc 下 文件,屏蔽錯誤輸出
find /etc/ -name 2> /dev/null
我們要學會使用/dev/null,也就是系統垃圾箱,我們可以將沒用的東西放進去。
5.在 用戶下查找 /etc 下 文件,正確輸出保存到 /tmp/.out 錯誤輸出保存到 /tmp/.err,這題就是用兩個重定向就OK了,然后用cat查看一下效果。
find /etc/ -name 2> /tmp/.err > /tmp/.out
6.在 用戶下查找 /etc 下 文件,顯示命令輸出并保存輸出到 /tmp/.all 中。就是通過2>&1 把錯誤輸出的編號由2轉換為1,進而可以通過管道,然后復制一份到/tmp/.all。
find /etc/ -name 2>&1 | tee /tmp/.all