關于Linux中重定向問題的淺述

這篇文章主要介紹了淺析linux中重定向問題,需要的朋友可以參考下

簡介

????? 在計算領域,重定向是大多數命令行解釋器所具有的功能,包括各種可以將標準流重定向用戶規定地點的Unix shells。類Unix操作系統的程序可以通過dup2系統調用完成重定向,或者通過缺少一些靈活性但是更高一級層次的freopen(3)和popen來完成。

1重定向

1.1????? 重定向符號

>?????????????? 輸出重定向到一個文件或設備 覆蓋原來的文件
>!????????????? 輸出重定向到一個文件或設備 強制覆蓋原來的文件
>>???????????? 輸出重定向到一個文件或設備 追加原來的文件

1.2標準錯誤重定向符號

2>???????????? 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件? b-shell
2>>?????????? 將一個標準錯誤輸出重定向到一個文件或設備 追加到原來的文件
2>&1???????? 將一個標準錯誤輸出重定向到標準輸出 注釋:1 可能就是代表 標準輸出
>&???????????? 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件? c-shell
|&????????????? 將一個標準錯誤 管道 輸送 到另一個命令作為輸入

1.3命令重導向示例

在 bash 命令執行的過程中,主要有三種輸出入的狀況,分別是:

1. 標準輸入;代碼為 0 ;或稱為 stdin ;使用的方式為

2. 標準輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1>

3. 錯誤輸出:代碼為 2 ;或稱為 stderr;使用的方式為 2>

[test?@test?test]#?ls?-al?>?list.txt

將顯示的結果輸出到 list.txt 文件中,若該文件以存在則予以取代!

[test?@test?test]#?ls?-al?>>?list.txt

將顯示的結果累加到 list.txt 文件中,該文件為累加的,舊數據保留!

[test?@test?test]#?ls?-al?1>?list.txt??2>?list.err

將顯示的數據,正確的輸出到 list.txt 錯誤的數據輸出到 list.err

[test?@test?test]#?ls?-al?1>?list.txt?2>?&1

將顯示的數據,不論正確或錯誤均輸出到 list.txt 當中!錯誤與正確文件輸出到同一個文件中,則必須以上面的方法來寫!不能寫成其它格式!

[test?@test?test]#?ls?-al?1>?list.txt?2>?/dev/null

將顯示的數據,正確的輸出到 list.txt 錯誤的數據則予以丟棄! /dev/null ,可以說成是黑洞裝置。為空,即不保存。

1.4為何要使用命令輸出重導向

? 當屏幕輸出的信息很重要,而且我們需要將他存下來的時候;
? 背景執行中的程序,不希望他干擾屏幕正常的輸出結果時;
? 一些系統的例行命令(例如寫在 /etc/crontab 中的文件)的執行結果,希望他可以存下來時;
? 一些執行命令,我們已經知道他可能的錯誤訊息,所以想以『 2> /dev/null 』將他丟掉時;
? 錯誤訊息與正確訊息需要分別輸出時。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享