1. 程式人生 > >> 輸出重定向

> 輸出重定向

linux-1

  • 重定向輸出 >

  • >> 追加


目 錄

  • 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/12>&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 可以一次顯示兩條信息

技術分享

結合以前所學的符號,命令,都會有新的發現。大家可以共同探討。技術分享


> 輸出重定向