❶ linux命令輸出到屏幕的同時保存到文件
tee用於把命令結果列印在屏幕上並同時保存到文件。
tee用法
描述:從標准輸入中讀取並同時寫入到標准輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標准輸出上
實例:
tee Example.txt #將標准輸入中輸入的內容同時輸出到Example.txt和標准輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
註:
標准輸入一般有鍵盤和其它文件,標准輸出有屏幕等。tee只能進行標准輸入的輸出,對於錯誤輸入是不能輸出的。
在調試腳本時,想要每個命令的執行過程都輸出到屏幕或者文件中,以便後續查看,如何操作呢?首先腳本第一行要寫為「#!/bin/bash -x」,這樣會把每個命令的執行記錄都輸出到屏幕,若皮好還要輸出到指定文件,要用到tee,但tee只能進行標准輸入,對於標准輸入和錯誤輸入要用到下式:
./filename.sh 2>&1 | tee output.log 或者直接 bash -x ./filename.sh 2>&1 | tee output.log
今天調試一個bash,要把屏幕的輸出結果存到log文件中,開始輸入$bash -x ./test.sh > log 結果發現log里只存放了程序的執行結果,後來在cu的一篇帖子里http://bbs.chinaunix.net/viewthread.php?tid=264380&highlight=bash得到了啟發,bash -x的調試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 2>&1 | tee log 想起以前要存放執行make的結果時也遇到類似問題,總結如下:
1、管道符的「I」的作用只是把前一個程序的標准輸出流(stdout)的數據作為後一個野和程序的標准輸入流stdin的數據,如不進行重定向,則其他輸出流的信息是無法傳給後面的程序的
2、屏幕得到的信息不一定是從程序的標准輸出來的,也包括標准錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執行了其他程序的程序)的設計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身並無錯誤),而stdout用來輸出被調用程序的執行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添燃脊鉛加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用>info.log 重定向輸出,結果發現一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標准錯誤上。
研究了一下通常添加命令後面幾個輸出含義
■ >/dev/null 輸出到空設備,表示丟掉輸出信息。
■ 2>&1將輸出到標准錯誤的信息輸出到標准輸出設備(通常是屏幕)有3個默認的i/o,
■ 0是標准輸入,一般是鍵盤
■ 1是標准輸出,一般是屏幕
■ 2是標准錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
❷ linux下如何將,控制台輸出的所有內容,全部輸出到一個文本文件
直接使用輸出重定向到你想要的文件即可,不過將所有的控制到信息輸出到一個文本文件,只有兩個辦法:
①:修改所有程序的輸出路徑:printf函耐段前數 echo.....幾乎是不可能完成的任務
②:修改linux的標准輸出路徑:
句柄 句柄的數字代號 描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出到命令提昌清示符窗口
STDERR 2 錯誤輸出到命令提示符窗口
將標准燃脊輸出 標准輸出的默認設置更改為你要保存的文件,這樣就會控制台的信息就會輸出到你指定的文件裡面
❸ linux保存printf信息
在Linux系統中,可以使用重定向符號「>」將printf輸出的信息保存至文件中。例如,若要將printf輸出的信息保存至名為「output.txt」的文件中,可以使用以下命令:
printf "Hello World\n" > output.txt
這將把「Hello World」字元串輸出到終端,並將其保存旦答至「output.txt」文件中。如果要將多州遲派次printf輸出的信息保存至同一文件中,可以使用「>>」符號表示追加輸出,例冊賀如:
printf "Hello World\n" >> output.txt
printf "How are you today?\n" >> output.txt
這將將兩個printf輸出追加到「output.txt」文件末尾,而不會覆蓋之前的輸出。