天天看點

> 輸出重定向

  • 重定向輸出 >
  • >> 追加

目 錄

  • 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 可以一次顯示兩條資訊

繼續閱讀