> 輸出重定向

  • 重定向輸出 >

  • >> 追加

目 錄

  • 1、 >正確定向等同于1>

  • 2、 2> 錯誤定向

  • 3. &> 把錯誤導成正確的{洗錢}

  • 4. 正確的變成錯誤的

  • 5. > 覆蓋

  • 6. 舉一反三

最近學的命令中學到了一些很有意思的命令,分享一下j_0047.gif


重定向輸出

最初見到這個符號是在學習終端的時候,那么各個終端之間是如何交流的呢?那么就用到了這個符號>

在這里采取的是遠程控制的方法,所以以虛擬終端為例

對于兩個終端 dev/pts/0   /dev/pts/1

設備dev/pts/0給設備/dev/pts/1發出Hello!

在設備/dev/pts/0上發出命令     echo Hello! > /dev/pts/1

wKiom1l0KhaiIMYhAAAZiXxn23o719.png

那么便在設備/dev/pts/1上收到消息Hello!(類似于qq消息中的私聊)

wKioL1l0KiXTPs2XAAAYE8d23Cw935.png

還有另一種廣播的方式

wall Hi

每個終端都會收到打招呼 Hi(類似于qq消息中的群發)。很有意思吧,可以試一下。j_0007.gif

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

wKiom1l0KkST7eWvAAAkzkI85dc418.png

 ls /app/passwd /etc/passwd > /dev/pts/1

wKiom1l0Kq7RQuDLAAAwCzs5Z1M444.png

wKiom1l0Kr-A4C8jAAAWgIkYd4E468.png

結論: 可以看出在/dev/pts/0 上只顯示出錯誤的結果,因為/dev/pts/0把正確結果重定向輸出到/dev/pts/1    > 只導出了正確的結果

2、  > 錯誤定向

還是相同的例子           

 ls /app/passwd /etc/passwd  2> dev/pts/1

wKiom1l0KxihAU8EAAAjQcYzFBs767.png

wKiom1l0KyexbCJMAAA0o-pGDHU711.png

結論:可以看出可以看出在/dev/pts/0上只顯示出正確的結果,/dev/pts/0把錯誤結果重定向輸出到/dev/pts/1    2> 只導出了錯誤的結果

那么有把正確和錯誤的都輸出去嗎,當然可以

3、  &> 把錯誤導成正確的{洗錢}

(1)   ls /app/passwd /etc/passwd > dev/pts/1  2>&1(老一代)

wKioL1l0K-aRV_eyAAAjC1vkKyg478.png

wKiom1l0K_qDGASqAAArSOYhXK0266.png

結論:可以看出在/dev/pts/0上不顯示,/dev/pts/0把全部重定向輸出到/dev/pts/1,2>&1 一般在老版本的CentOS上用,接下來的是在新的版本上才有的。

(2)  ls /app/passwd /etc/passwd  &> /dev/pts/1

 wKiom1l0LAnDGM11AAAi-TvBBUM521.png

wKioL1l0LDLCu1WVAAAmQq-WFfs351.png

4、當然還可以把正確的變成錯誤的

ls /app/passwd/etc/passwd > dev/pts/1  1>&2

wKiom1l0LKmiKENpAAAzaIBiLwY469.png

把正確的變成錯誤的都顯示出來

5、 >  覆蓋      

 (1)  例:  > a.txt  =touch a.txt 創建新文件a.txt

wKiom1l0LPeBlOJQAAAaw-UO4Nc135.png

 (2)  當已有文件存在時會怎樣呢??

現在就以a.txt為例,首先我們在a.txt中寫入內容Hello

echo Hello >a.txt

wKioL1l0LQKyfJj3AAAYcoruVYs346.png

然后我們再將Hi apple!以同樣的方式再寫一遍

echo Hi apple!>a.txt

wKiom1l0LRDCmAxHAAAZcNN-lHI126.png

3)那么我們現實中必定會有不想覆蓋的文件,而我們想要繼續在原文件后面追加,那么便需要>>了。

在后面追加Hello water

echo Hello water >>a.txt

wKioL1l0LRzxwoL7AAAnU2dYmbE809.png

(4)如果在工作中,我們想要在文件中追加內容時>>,卻不小心只寫入就執行了,那么我們的文件被覆蓋了,因此就有了,禁止覆蓋的命令,set –C

讓我們試一下吧,首先輸入set–C 然后再輸入覆蓋命令

wKioL1l0LVaitG25AAAq1GInvpE718.png

如果我們想一次強制覆蓋   >|

wKioL1l0LWLBeN8yAAAeK4DRag0043.png

當然我們也可以解除這種禁止 set +C ,很好理解禁止 –C  ,解除+C

wKiom1l0LW7SuJl-AAAosanxveM971.png

6、當然可以舉一反三

>>  追加正確的內容

2>> 追加錯誤的內容

&>> 全部追加

() 合并 echo abc ;echo 123> b.txt 可以一次顯示兩條信息

wKioL1l0LXqR_3zhAAAbymwZx64057.png

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

原創文章,作者:guanman,如若轉載,請注明出處:http://www.www58058.com/84711

(0)
guanmanguanman
上一篇 2017-08-13 23:19
下一篇 2017-08-13 23:40

相關推薦

  • sed命令應用詳解

    sed應用詳解 sed是文本處理處理工具“三大劍客”之一,它 是一種流編輯器,sed一次只處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(patternspace),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。sed不會修改原文件內容,除非你使用重定向存儲輸出?!?/p>

    Linux干貨 2016-08-11
  • linux 啟動管理

    1、Linux系統啟動流程:POST 加電自檢 — BIOS(Boot Sequence)–>MBR(bootloader,446)(加載前512字節后的驅動程序,進入/boot目錄,加載內核)–>Kernel–>initrd–>(系統根路徑 /)(ROOTFS)/sbin/…

    Linux干貨 2017-09-03
  • 推薦-BtrFS學習總結

    一、原理介紹1.可擴展性2.數據一致性的相關特性3.多設備管理及快照二、命令介紹與實戰1.命令介紹2.命令實戰1)環境準備,添加3塊磁盤/dev/sd{b,c,d}如下:2)創建btrfs文件系統3)查看已創建的btrfs文件系統4)掛載btrfs文件系統,啟用壓縮功能5)在線調整文件系統大小6)往當前btrfs文件系統添加設備,以達到在線擴容擴容目的7)執…

    Linux干貨 2016-06-03
  • 第四周:/etc/passwd、/etc/group文件熟悉及配合grep使用正則表達式

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@wlm ~]# useradd tuser1 [root@wlm ~]# cp -r etc/skel/ /home/tuser1/…

    Linux干貨 2016-10-13
  • 腳本又見腳本,作業又是作業_第七周

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@centos ~]# fdisk -l &n…

    Linux干貨 2016-12-30
  • SSH服務器實現telnet請求轉發

    本次實驗做的工作如下圖: 中間一臺CentOS6通過SSH轉發兩邊兩臺CentOS7的telnet通信。 首先,在右側CentOS7上安裝telnet服務 [root@Shining ~]# yum install -y telnet telnet-server 啟動telnet服務 [root@Shining ~]# systemctl start tel…

    Linux干貨 2016-12-04
欧美性久久久久