婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > shell(bash)下“time” 命令的輸出詳解

shell(bash)下“time” 命令的輸出詳解

熱門標簽:德陽400電話申請 鶴崗400電話申請 智能電銷機器人有用嗎 外呼電話系統(tǒng)怎么操作 怎么在百度地圖標注公司的位置 商機地圖標注 天津電話外呼系統(tǒng)排名 百度地圖標注直線距離 測繪地圖標注名稱

前言

相信大家都知道bash下time是一個很有用的命令,它可以為一段腳本或一個程序的執(zhí)行計時,這通常在粗略比較程序執(zhí)行效率的時候很方便。但是你會發(fā)現(xiàn),time命令輸出的時間文字不能被簡單地重定向,例如重定向至一個文本文件,只能顯示在屏幕上,這對于非交互計時很不方便。

例如:

$ time find . -name "mysql.sh" >1.txt

real 0m0.081s
user 0m0.060s
sys  0m0.020s

$ 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

real 0m0.068s
user 0m0.040s
sys  0m0.030s

通過上面的嘗試,發(fā)現(xiàn)無法將time的輸出信息重定向到文件里面,為什么?因為time是shell的關鍵字,shell做了特殊處理,它會把time命令后面的命令行作為一個整體來進行處理,在重定向時,實際上是針對后面的命令來的,time命令本身的輸出并不會被重定向的。

關鍵字time設置了一個標記,知道command(find)命令執(zhí)行完,timing信息才被打印到stderr中。time關鍵字要整個command和管道,還有相關的重定向都要來得高級。這就是為什么簡單的重定向對于time而言不起作用。 這是Bash語法定義的。command之后的重定向對于time而言,是command的一部分。

注:time命令的輸出到標準錯誤(stderr)中

當time命令執(zhí)行時,command運行于當前shell(也就是time命令所執(zhí)行的shell)的下一級shell,而time自身的輸出位于當前shell的stderr。像上面所示的那樣重定向只會使得command的stdout被重定向至一個文本文件,而不會輸出time自身的輸出內容。

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

$ { 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
$ cat 2.txt

real 0m0.068s
user 0m0.030s
sys  0m0.040s

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

另外一種方式就是使用子Shell的方式

如下所示:

$ (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
$ cat 2.txt

real 0m0.083s
user 0m0.040s
sys  0m0.020s
[root@web186 root]#

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • bash shell命令行選項與修傳入?yún)?shù)處理
  • Bash Shell中的select命令簡單使用示例
  • 列出所有Bash Shell內置命令的方法示例

標簽:鎮(zhèn)江 武漢 自貢 丹東 優(yōu)質小號 百色 六盤水 滁州

巨人網(wǎng)絡通訊聲明:本文標題《shell(bash)下“time” 命令的輸出詳解》,本文關鍵詞  shell,bash,下,time,命令,的,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《shell(bash)下“time” 命令的輸出詳解》相關的同類信息!
  • 本頁收集關于shell(bash)下“time” 命令的輸出詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 阿图什市| 合肥市| 饶平县| 关岭| 瓮安县| 通渭县| 栾川县| 彭水| 礼泉县| 科技| 新郑市| 洛川县| 彝良县| 拉孜县| 巴彦县| 丹凤县| 龙口市| 随州市| 灵武市| 肥东县| 天台县| 惠东县| 昭通市| 斗六市| 左云县| 晋中市| 高陵县| 武胜县| 永仁县| 珠海市| 朝阳市| 剑河县| 武穴市| 德州市| 沽源县| 太谷县| 峡江县| 上犹县| 咸阳市| 林芝县| 永善县|