- 重定向輸出 >
- >> 追加
目 錄
-
1、 >正确定向等同于1>
-
2、 2> 錯誤定向
-
3. &> 把錯誤導成正确的{洗錢}
-
4. 正确的變成錯誤的
-
5. > 覆寫
-
6. 舉一反三
最近學的指令中學到了一些很有意思的指令,分享一下
> 重定向輸出
最初見到這個符号是在學習終端的時候,那麼各個終端之間是如何交流的呢?那麼就用到了這個符号>
在這裡采取的是遠端控制的方法,是以以虛拟終端為例
對于兩個終端 dev/pts/0 /dev/pts/1
裝置dev/pts/0給裝置/dev/pts/1發出Hello!
在裝置/dev/pts/0上發出指令 echo Hello! > /dev/pts/1
那麼便在裝置/dev/pts/1上收到消息Hello!(類似于qq消息中的私聊)
還有另一種廣播的方式
wall Hi
每個終端都會收到打招呼 Hi(類似于qq消息中的群發)。很有意思吧,可以試一下。
1、 > 正确定向等同于 1>
我們一般鍵盤輸入資訊,輸出的結果都是預設在終端上輸出
檢視I/O 裝置
cd /dev/fd/
ls –l
0 标準輸入 (預設輸入來自鍵盤)
1 标準輸出 (預設輸出都是終端)
2 标準錯誤 (預設輸出都是終端)
那麼當我們不想輸出在終端上,想導出一個檔案,友善以後檢視,便需要輸出重定向了。> 的作用就是把原本要輸出在終端上的資訊重定向導出到指定的地方。
我們知道/etc/passwd 存放着我們使用者登入的資訊,而/app/passwd 這個是不存在的,我們就以這兩個為例子,終端還是dev/pts/0 /dev/pts/1
單獨檢視會顯示一下結果
ls /app/passwd /etc/passwd
ls /app/passwd /etc/passwd > /dev/pts/1
結論: 可以看出在/dev/pts/0 上隻顯示出錯誤的結果,因為/dev/pts/0把正确結果重定向輸出到/dev/pts/1 > 隻導出了正确的結果
2、 > 錯誤定向
還是相同的例子
ls /app/passwd /etc/passwd 2> dev/pts/1
結論:可以看出可以看出在/dev/pts/0上隻顯示出正确的結果,/dev/pts/0把錯誤結果重定向輸出到/dev/pts/1 2> 隻導出了錯誤的結果
那麼有把正确和錯誤的都輸出去嗎,當然可以
3、 &> 把錯誤導成正确的{洗錢}
(1) ls /app/passwd /etc/passwd > dev/pts/1 2>&1(老一代)
結論:可以看出在/dev/pts/0上不顯示,/dev/pts/0把全部重定向輸出到/dev/pts/1,2>&1 一般在老版本的CentOS上用,接下來的是在新的版本上才有的。
(2) ls /app/passwd /etc/passwd &> /dev/pts/1
4、當然還可以把正确的變成錯誤的
ls /app/passwd/etc/passwd > dev/pts/1 1>&2
把正确的變成錯誤的都顯示出來
5、 > 覆寫
(1) 例: > a.txt =touch a.txt 建立新檔案a.txt
(2) 當已有檔案存在時會怎樣呢??
現在就以a.txt為例,首先我們在a.txt中寫入内容Hello
echo Hello >a.txt
然後我們再将Hi apple!以同樣的方式再寫一遍
echo Hi apple!>a.txt
(3)那麼我們現實中必定會有不想覆寫的檔案,而我們想要繼續在原檔案後面追加,那麼便需要>>了。
在後面追加Hello water
echo Hello water >>a.txt
(4)如果在工作中,我們想要在檔案中追加内容時>>,卻不小心隻寫入> 就執行了,那麼我們的檔案被覆寫了,是以就有了,禁止覆寫的指令,set –C
讓我們試一下吧,首先輸入set–C 然後再輸入覆寫指令
如果我們想一次強制覆寫 >|
當然我們也可以解除這種禁止 set +C ,很好了解禁止 –C ,解除+C
6、當然可以舉一反三
>> 追加正确的内容
2>> 追加錯誤的内容
&>> 全部追加
() 合并 (echo abc ;echo 123)> b.txt 可以一次顯示兩條資訊