檔案描述符是與檔案輸入,輸出相關聯的整數。它們用來跟蹤已經開啟的檔案。
最常見的檔案描述符是 系統預留的 0 ,1,2 。
0 -- stdin (標準輸入)。
1 -- stdout (標準輸出)。
2 -- stderr (標準錯誤)。
在命令輸出文字時,這些文字資訊 可能是 錯誤資訊,也可能是 正常輸出資訊 ,單靠 檢視輸出的內容本身,我們沒辦法分辨哪些是錯誤資訊哪些是正常輸出。
我們可以 通過檔案描述符來解決這個問題,將那些與特定描述符關聯的文字提出出來
#!/bin/bash
echo "this is a normal stdout string" > temp.txt
ls; cat temp.txt
> 會將目標檔案中的內容清空後再寫入 內容,>>會直接在目標檔案後追加內容
錯誤資訊
如果你在 終端執行一行 錯誤的指令,就會輸出 錯誤資訊 例如
$ ls +
ls: +: no such file or directory
這裡 ,+ 是乙個非法引數,因此返回錯誤資訊 對應 2 stderr
下面的 命令正確執行 ,輸出的是 輸出內容 對應 1 stdout
$ ls
desktop music solarized
可以將內容 重定位到檔案中 如下
$ls > lstmp.txt
分別將 1 stdout 和 2 stderr 重定位到不同的檔案中
注意空格 2>tmp.txt ,2和》之間不能有空格, >和tmp.txt 之間的空格 可有可無
$ls 2>error.txt 1>output.txt
將所有輸出 都定位到 同乙個檔案中
$ls &>allmessage.txt
可以講 stderr 都定位到 stdout 中,然後再全部 定位到檔案中
$ls 2>&1 alloutput.txt
或者這樣
$cmd &>outputanderror.text
有時候在輸出中 包含一些不必要的資訊 ,如果不想讓終端中充斥這 錯誤資訊,可以將 stderr 定位到 /dev/null
$cmd 2>/dev/null
玩轉Linux檔案描述符和重定向
原文出處 linux下的檔案描述符是與檔案輸入 輸出相關聯的整數。它們用來跟蹤已開啟的檔案。最常見的檔案描述符是stdin stdout和stderr.我們可以將某個檔案描述符的內容重定向到另乙個檔案描述符中。下面給出一些對檔案描述符進行操作和重定向的例子。1.5.1 預備知識 我們在編寫指令碼時會...
shell指令碼學習總結01 檔案描述符和重定向
檔案描述符是與檔案輸入和輸出的相關聯的整數,它們用來追蹤已開啟的檔案,檔案描述符0,1,2是系統預留的。0 stdin 標準輸入 1 stdout 標準輸出 2 stderr 標準錯誤 echo a1 a1 cp a1 a2 cp a2 a3 cat a cat a1 permission deni...
Linux 檔案描述符和重定向
1.預備知識 標準輸入 stdin 標準輸出 stdout 和標準錯誤 stderr 是編寫指令碼的時候經常使用的,因為輸出的資訊可能是上述的一種。檔案描述符 是與開啟的某個檔案或者資料流相關聯的整數。檔案描述符0,1,2是系統預留的。2.例項echo this is a sample.temp.t...