1. 運行CMD裡面,怎麼把得到的結果數據保存為文本文件
1、輸出為指定文件需要使用重定向命令,「Win+R」快捷鍵打開運行,輸入「cmd」打開命令提示符。
之所以要另存一下文檔是因為CMD導出的文檔的「源信息」沒有生成全,就會有這樣的提示,重新保存文檔,源信息就全有了。
2. 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是標准錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
3. 如何將dos命令的到的東西輸出到文本文件中
舉個例子,在cmd命令下,我們來ping 202.108.22.5,然後把得到的數據輸出到名為1.txt的文本文檔中,那麼我們運行cmd,在游標後面輸入:
ping 202.108.22.5 >1.txt
>後面是文件名,它就會在當前目錄下創建一個名為1.txt的文本文檔,上面所得到的數據就會保存在其中,然後我們還可以繼續把數據保存在其中,那麼語法為:
ping 202.108.22.5 >1.txt
ping 202.106.196.115 >>1.txt
ping 202.106.46.151 >>1.txt
…………
他後面得到的結果都會保存在這個文件中,所以這個文件也就會越來越大,好了,不說了,自己試試吧。