shell 玩轉檔案描述符 和 重定向

2021-07-05 12:40:54 字數 1371 閱讀 6349

檔案描述符是與檔案輸入,輸出相關聯的整數。它們用來跟蹤已經開啟的檔案。

最常見的檔案描述符是  系統預留的  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...