導航:首頁 > 文件類型 > 程序重定向文件linux

程序重定向文件linux

發布時間:2023-03-15 20:01:24

『壹』 linux輸出重定向到文件命令

輸出即把相關對象通過輸出設備(顯示器等)顯示出來,輸出又分正確輸出和錯誤輸出
一般情況下標准輸出設備為顯示器,標准輸入設備為鍵盤。

命令 >> 文件 2>&1 和 命令 &>>文件 兩個命令作用相同
系統有個常見用法 ls &>/dev/null 正確輸出或錯誤輸出結果都不要。(null可以理解為黑洞或垃圾站)
命令>>文件1 2>>文件2 正確日誌和錯誤日誌分開保存

例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &
將jar執行的結果寫入到lb-agent.log中
在命令最後加上&符號,表示讓這個進程到後台去執行,這樣立刻返回到提示符狀態,我們可以接著做下面的事。如:command &。
這種「後台」進程在shell一直打開的情況下是沒有問題的,如果我們關了shell窗口甚至退出ssh登錄或vnc登錄,那麼進程自動就結束了。所以如果想退出窗口乃至退出登錄仍然保持程序運行,再加上nohup,形如:nohup command 1>output 2>&1 &《Linux就該這么學》學習更多linux知識。

『貳』 linux怎麼重定向到文件和屏幕

重定向到文件可以使用>>這個符號
屏幕的話默認輸出是到屏幕,不需要重定向

『叄』 簡述linux系統中有哪些重定向的方式

重定向能夠實現Linux命令的輸入輸出與文件之間重定向,以及實現將多個命令組合起來實現更加強大的命令。這部分涉及到的比較多的命令主要有:

cat:連接文件 sort:排序文本行 uniq:忽略或者報告重復行

wc:統計文件的行數、詞數、位元組數

grep:列印匹配製定模式的行

head:輸出文件的頭部 tail:輸出文件的尾部

tee:從標准輸入讀,並往標准輸出或者文件寫

  1. 重定向標准輸出

    使用>可以將本來出現在屏幕的標准輸出信息重定向到一個文件中。

    使用>>可以在實現重定向時不覆蓋原有內容,而是在文件末尾追加內容。

  2. 重定向標准錯誤信息到文件

    使用文件描述符,在shell中,默認用數字0,1,2分別代表標准輸入、標准輸出、標准錯誤。

  3. 屏蔽不想看到的信息

    Linux中有一個特殊的文件/dev/null,這個文件叫做bit bucket,可以接受輸入信息但是什麼都不做。例如:ls/usr/> /dev/null

  4. 重定向標准輸入

    cat命令可以接受一組文件為參數,將這些文件復制到標准輸出。我們前面的例子中已經多次使用到cat命令來將文本文件的內容讀取到屏幕上。cat還有一個很重要的功能:接受一組文件,然後通過重定向將他們重新組合到一個文件中。

    cat ls1 ls2 > ls這個命令將ls1和ls2文件中的內容合並到ls文件中了。cat命令的這種功能不僅僅適用於文本文件,同樣對二進制文件有效。這個場景主要在將多個壓縮包文件合並到一個壓縮包中用到。

    cat也可以不傳遞參數,這種情況下,cat會重定向標准輸入到標准輸出。

  5. 管道

    Linux提供|操作符,該操作符可以將一個命令的輸出作為另一個命令的輸入,這樣通過多個命令的協作來完成一些比較復雜的內容。比如,我們可以通過uniq命令來排除重復的行。但是uniq命令往往需要和sort命令配合使用。因為uniq接收一組排好序的文本,而剛好sort可以將文本行排序。


『肆』 Linux重定向

輸出重定向

我們使用 > 或者 >> 對輸出進行重定向。 符號的左邊表示文件描述符,如果沒有的話表示1,也就是標准輸出, 符號的右邊可以是一個文件,也可以是一個輸出設備(Linux中萬物皆文件,即設備也是文件)。當使用>時,會判斷右邊的文件存不存在,如果存在的話就先刪除,然後創建一個新的文件,不存在的話則直接創建。但是當使用>>進行追加時,則不會刪除原來已經存在的文件。

格式

command-line [n]> 文件

這條命令意思是:將一條命令執行結果(標准輸出,或者錯誤輸出,本來都要列印到屏幕上面的) 重定向其它輸出設備(文件)1,2分別是標准輸出,錯誤輸出。

實例

輸入重定向
在理解了輸出重定向之後,理解輸入重定向就會容易得多。對輸入重定向的基本命令如下:

我們使用 < 對輸入做重定向, 如果符號左邊沒有寫值,那麼默認就是0。
格式:

command-line [n] <文件

命令默認從鍵盤獲得的輸入,使用輸入重定向改成從文件,或者其它打開文件以及設備輸入。執行這個命令,將標准輸入0,與文件或設備綁定,將由它進行輸入。

實例:

文件描述符的復製表示復制文件描述符到另一個文件描述符中,也就是將該文件描述符重定向到另一個文件描述符所綁定的文件,使用」&」進行復制。

想必很多人都知道 >file 2>&1 的作用,它等價於 &>file ,表示標准輸出和標准錯誤都重定向到file中。那它和 2>&1 >file 有什麼區別呢?

首先解釋 >file 2>&1 。這里分兩個過程:先打開file,再將fd=1重定向到file文件上,這樣file文件就成了標准輸出的輸出目標;之後再將fd=2復制於fd=1,而fd=1此時已經重定向到file文件上,因此fd=2也重定向到file上。所以,最終的結果是標准輸出重定向到file上,標准錯誤也重定向到file上。

再解釋 2>&1 >file 。這里也分兩個過程:先將fd=2復制於fd=1,而此時fd=1重定向的文件是默認的/dev/stdout,所以fd=2也重定向到/dev/stdout;之後再將fd=1重定向到file文件上。也就是說,這里的標准錯誤和標准輸出仍然是分開輸出的,只不過是使用/dev/stdout替代了/dev/stderr,使用file替代了/dev/stdout。所以,最終的結果是標准錯誤輸出到/dev/stdout,即屏幕上,而標准輸出將輸出到file文件中。

可以使用下面的命令來測試 2>&1 >file 。第一個ls命令是正確的,結果輸出到/tmp/fff.log中,第二個ls命令是錯誤的,結果將直接輸出到屏幕上。

最後需要說明的是一種特殊情況,如果是 >&[word] ,且word不是一個數值,比如 echo haha >&/tmp/fff.log ,那麼 >&word 和 &>word 是等價的,都表示 >word 2>&1 ,即標准錯誤和標准輸出都重定向同一個目標。參考man bash的」Redirecting Standard Output and Standard Error」段落。

如果在命令中直接改變重定向的位置,那麼命令執行結束的時候描述符會自動還原。正如上面的ls /boot 2>&1 >/tmp/fff.log命令,在ls執行結束後,fd=2還原回默認的/dev/stderr,fd=1還原回默認的/dev/stdout。

但是我們可以通過exec程序直接在當前的shell環境下改變重定向目標,只有在當前shell退出的時候才會釋放描述符的綁定。

Tips :shell的內建命令exec將並不啟動新的shell,而是用要被執行命令替換當前的shell進程,並且將老進程的環境清理掉,而且exec命令後的其它命令將不再執行。
不過,要注意一個例外,當exec命令來對文件描述符操作的時候,就不會替換shell,而且操作完成後,還會繼續執行接下來的命令。

例如:下面的命令將標准錯誤fd=2指向fd=3對應的文件上。

因此,我們可能在一段程序執行結束後,需要將描述符還原到原來的位置,並關閉不再需要的描述符。畢竟描述符也是資源,是有限的(ulimit -n)。

[n]<> filename :打開filename,並指定其文件描述符為n,該描述符是可讀、可寫的描述符。若不指定n則默認為0,若filename文件不存在,則先創建filename文件。

文件描述符的移動表示將文件描述符1移動到描述符2上,同時關閉文件描述符1。

[n]>&digit- :將文件描述符digit代表的輸出文件移動到n上,並關閉digit值的描述符。
[n]<&digit- :將文件描述符digit代表的輸入文件移動到n上,並關閉digit值的描述符。

『伍』 Linux標准輸入輸出與重定向詳解|果斷收藏

linux中的>、>>、<、<<、2>、2>>、2>&1、&>、&<,總歸要面對的

為了更好的理解這個問題,我們需要追本溯源。

執行一個shell命令行時通常會自動打開三個標准文件

(1) 、標准輸入文件(stdin)

通常對應終端的鍵盤。

(2)、標准輸出文件(stdout)。

(3)、標准錯誤輸出文件(stderr)。

(2)和(3)這兩個文件都對應終端的屏幕。

進程將從標准輸入文件中得到輸入數據。

將正常輸出數據輸出到標准輸出文件[顯示器]。

將錯誤信息送到標准錯誤文件中[顯示器]。

下圖所示:

0、1、2表示一個文件描述符

但是,有時候我們不想把一些進程處理後信息輸出到顯示器。

這時我們就引出了重定向。

改變標准輸入/輸出的方向

三種重定向:

1、重定向標准輸出,包括兩種。

(1)、>(覆蓋),等價1>

將命令執行的結果輸出到指定文件,非顯示器。

(2) 、>>(追加),等價1>>

將命令執行的結果追加到指定文件,非顯示器。

2、 重定向標准輸入,包括兩種。

(1) 、<

將命令中接收的輸入途徑,由鍵盤改為指定文件。

(2) 、<<[Here Document]

命令序列傳遞到一個交互程序或者命令中。

3、 重定向標准錯誤,包括兩種。

(1) 、2>(覆蓋)

將命令執行的結果輸出到指定文件。

(2) 、2>>(追加)

將命令執行的結果追加到指定文件。

1、重定向標准輸出和重定向標准錯誤到同一個文件中

有以下的幾種方式

(1) 、2>&1

(2) 、>&

(3) 、&>

2、 兩個特殊文件

(1) 、/dev/nul

過濾標准錯誤信息

意思就是不想顯示結果就輸出到這裡面。

(2) 、/dev/zero

創建指定長度的文件

案例1:

測試> and >>

案例2:

測試< and <<

測試<

測試<<

案例3:

測試2> and 2>>

案例4:

測試重定向標准輸出和重定向標准錯誤到同一個文件中

(1)、>&

(2)、&>

與上面的案例類似,不做解釋

(3) 、2>&1

案例5:

使用/dev/nul文件

有時候我們使用命令,不想將輸出的信息顯示到界面

這時我們可以使用 &> /dev/nul[常用]

簡單測試修改demo 用戶密碼

『陸』 linux 如何把一個程序的所有輸出內容重定向,程序A調用庫函數B,如何運行A時console不輸出任何列印信息

直接使用輸復出重定向到你想要的文製件即可,不過將所有的控制到信息輸出到一個文本文件,只有兩個辦法:
①:修改所有程序的輸出路徑:printf函數 echo.....幾乎是不可能完成的任務
②:修改linux的標准輸出路徑:
句柄 句柄的數字代號 描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出到命令提示符窗口
STDERR 2 錯誤輸出到命令提示符窗口
將標准輸出 標准輸出的默認設置更改為你要保存的文件,這樣就會控制台的信息就會輸出到你指定的文件裡面

閱讀全文

與程序重定向文件linux相關的資料

熱點內容
plc密鑰在哪個文件夾 瀏覽:847
良率是什麼六西格瑪數據類型 瀏覽:456
滴滴相關app有哪些 瀏覽:343
篩選單位怎麼體現數據 瀏覽:594
viperfx音效文件位置 瀏覽:783
iphone5通話背景修改 瀏覽:1
電腦的網路列印機無法列印機驅動程序 瀏覽:888
pdf文件刪除頁碼設置 瀏覽:765
小米手機迅雷下載到哪個文件夾里 瀏覽:421
蘋果手機怎麼樣截圖 瀏覽:266
linux伺服器復制文件 瀏覽:214
微信商戶生成二維碼 瀏覽:455
感動用英語怎麼說app 瀏覽:712
文件名選擇編輯器屬性 瀏覽:728
使用原始配置文件 瀏覽:762
槍線圖需要下列哪些數據 瀏覽:592
哪個網站可以查物品真實評論 瀏覽:407
win10禁用outlook 瀏覽:807
精雕編程是怎麼回事 瀏覽:116
如何用編程貓制大魚和小魚 瀏覽:635

友情鏈接