time shell保留字輸出無法重定向解決

2021-10-08 21:11:01 字數 1992 閱讀 5076

time是乙個bash的保留字

[root@dy dic]# time sleep 5

>out.txt

real 0m5.

001s

user 0m0.

002s

sys 0m0.

001s

螢幕仍然輸出,且out.txt檔案為空,重定向失敗

使用time sleep 5 2>out.txt命令測試仍然無效。因為time是shell的關鍵字,shell做了特殊處理,它會把time命令後面的命令列作為乙個整體來進行處理,在重定向時,實際上是針對後 面的命令來的,time命令本身的輸出並不會被重定向的。那現在怎麼辦呢?網上提供了兩種解決方法【2,3】,我們一一嘗試一下。

第一種解決方法,就是將time命令和將要執行的命令列放到乙個shell**塊中,也就是一對大括號中,要注意空格和分號的使用。

[root@web186 root]# 2>2.txt

好像成功了。慢,看一下對不對。

[root@web186 root]# cat 2.txt

-bash: 2>2.txt > ctrl+c

這次bash認為命令都沒有輸入完成,少了分號。因為bash認為後面的 } 是find命令的引數。

[root@web186 root]# 2>2.txt

./work186/sms/bin/mysql.sh

./work186/sms/src/scripts/mysql.sh

./work186/sms/src/scripts1/mysql.sh

./work186/sms1/bin/mysql.sh

./work186/sms1/src/scripts/mysql.sh

./temp/sms/bin/mysql.sh

./temp/sms/src/scripts/mysql.sh

[root@web186 root]# cat 2.txt

real 0m0.068s

user 0m0.030s

sys 0m0.040s

第一種方式的嘗試成功了,總結起來就是 2>file 注意分隔符的使用。

另外一種方式就是使用子shell的方式,如下所示:

[root@web186 root]# (time find . -name 「mysql.sh」) 2>2.txt

./work186/sms/bin/mysql.sh

./work186/sms/src/scripts/mysql.sh

./work186/sms/src/scripts1/mysql.sh

./work186/sms1/bin/mysql.sh

./work186/sms1/src/scripts/mysql.sh

./temp/sms/bin/mysql.sh

./temp/sms/src/scripts/mysql.sh

[root@web186 root]# cat 2.txt

real 0m0.083s

user 0m0.040s

sys 0m0.020s

[root@web186 root]#

第二種方式的嘗試也成功了,總結起來就是 (time command-line) 2>file 這裡time緊貼著小括號(也可以的,命令列結束也不必帶分號。當然最好還是用第一種方式,畢竟啟動乙個子shell是要多占些資源的。

針對dd命令。同time命令,dd命令包括了time命令。

故 dd if=/dev/zero of=/mnt/test bs=1k count=100 >>output.txt

此時並不能把dd命令顯示的時間和速度儲存到output.txt裡。因為dd命令的輸出是到標準錯誤輸出上的。

必須採用dd if=/dev/zero of=/mnt/test bs=1k count=100 2>>output.txt 才可以。

python保留字 python保留字有哪些

布林型別的值,表示假,與true對應 2 class 定義類的關鍵字 3 finally 異常處理使用的關鍵字,用它可以指定始終執行的 指定 在finally裡面 例如 class myexception exception pass try some code here raise myexcep...

C語言保留字

c語言的保留字 一共有32個 auto 宣告自動變數 double 宣告雙精度變數或函式 int 宣告整型變數或函式 struct 宣告結構體變數或函式 break 跳出當前迴圈 else 條件語句否定分支 與 if 連用 long 宣告長整型變數或函式 switch 用於開關語句 case 開關語...

c 之保留字

一般情況下,c 關鍵字也被稱為c 保留字,但嚴格情況下應分為 關鍵字 替代標記 庫保留名稱。總的來說,為了避免出現問題,就按照常規方法,不要打這些擦邊球就行了。關鍵字是組成程式語言詞彙表的識別符號,它們不能用於其他用途。下表列出了c 的關鍵字,其中粗體也是ansi c99標準中的關鍵字。aligna...