1.重定向怎麼用
2.檔案描述符(0,1,2)
資料流重定向
簡單的重定向
標準錯誤的重定向
使用tee
命令重定向到多個檔案
exec命令
建立檔案描述符
關閉檔案描述符
完全遮蔽命令的輸出
使用xargs分割引數列表 命令
>
: 覆蓋檔案內容並寫入
>>
:在檔案後面追加,不覆蓋檔案內容
<
:和>
作用一樣,表示從右到左
<<
:和>>
作用一樣,表示從右到左
前置知識:檔案描述符
1. 檔案描述符:0 裝置檔案:/dev/stdin 縮寫:stdin 說明:標準輸入
2. 檔案描述符:1 裝置檔案:/dev/stdout 縮寫:stdout 說明:標準輸出
3. 檔案描述符:2 裝置檔案:/dev/stderr 縮寫:stderr 說明:標準錯誤
參考**
例項(1:
mkdir documents #建立目錄
cat> documents/test.c << eof #將cat的連續輸出重定向到乙個檔案中
#include
int main(
)eof
補充eof
:
是end of file的縮寫,表示自定義終止符.既然自定義,那麼eof就不是固定的,可以隨意設定別名,在linux按ctrl-d就代表eof.
eof一般會配合cat能夠多行文字輸出.
其用法如下:
《參考**
cat documents/test.c
意義:將乙個檔案作為命令的輸入(cat),標準輸出作為命令的輸出
例項(2:
#將echo命令的輸出從預設的標準輸出重定向到乙個普通檔案
echo 'hello world'
> file
#檢視檔案
cat file
例項(1:
#用bash提供的特殊的重定向符號「&」將標準錯誤和標準輸出同時重定向到檔案
cat [目錄]
/[標準輸出檔案]
[標準錯誤檔案]
&>
[檔案]
例項(2:
#將標準錯誤重定向到標準輸出,將標準輸出重定向到檔案中,注意要將標準輸出重定向到檔案寫在前面
cat [目錄]
/[標準輸出檔案]
[標準錯誤檔案]
>
[檔案]
2>
&1
補充:在輸出重定向檔案描述符前加上&
,否則shell會當作重定向到乙個檔名為1的檔案中
例項(1:
#將echo命令輸出通過tee命令同時重定向到file1 file2 file3
echo 'git is good'
| tee file1 file2 file3
呼叫並執行指定的命令。
exec命令 用於呼叫並執行指令的命令。exec命令通常用在shell指令碼程式中,可以呼叫其他的命令。如果在當前終端中使用命令,則當指定的命令執行完畢後會立即退出終端。
例項(1:
zsh #進入子shell
exec 1
> somefile #使用exec替換當前程序的重定向,將標準輸出(1)重定向到檔案中
#後面執行的命令都將重定向到檔案中,知道使用exit退出當前子shell
ls #ls命令重定向到檔案(somefile)中
ll #ll命令重定向到檔案(somefile)中
pwd #pwd命令重定向到檔案(somefile)中
exit #退出
cat somefile #主程序檢視檔案(somefile) ls ll pwd命令會同時執行
參考**
linux系統將所有裝置都當作檔案來處理,而linux用檔案描述符來標識每個檔案物件。其實我們可以想象我們電腦的顯示器和鍵盤在linux系統中都被看作是檔案,而它們都有相應的檔案描述符與之對應。
shell中有9個檔案描述符,上面是用了它提供的預設的0,1,2檔案描述符,另外我們還可以使用3—8檔案描述符。
cat /dev/fd;ls -al
:檢視當前shell程序中開啟的檔案描述符。
;
:路徑的分隔符
例項(1:
zsh #進入子shell
exec 3
> somefile #將檔案描述符3重定向到檔案中(somefile)
cat /dev/fd;ls -al;cd - #檢視當前shell中開啟的檔案描述符
echo "this is test"
>
&3 #將echo命令的輸出重定向到檔案描述符3種
cat somefile #檢視檔案(somefile)
exit #退出
參考**
exec 3>&-
:關閉檔案描述符3
前置知識
/dev/null
空裝置,一般用來丟棄不需要的輸出流
例項(1:
cat directory/file 1
>
/dev/null 2
>
&1
#將檔案標準輸出(1)重定向到/dev/null中,將標準錯誤(2)重定向到標準輸出(1)中
補充:
cat
:連線多個檔案並列印到標準輸出
將列表引數轉換成小塊分段傳遞給其他命令,以避免引數列表過長問題。
例項(1:
cut -d:
-f1 <
/etc/passwd | sort |xargs echo
#將/etc/passwd檔案按:分割,取第乙個字段排序後,使用echo命令生成乙個列表。
參考** Linux資料流重定向
開篇 當在執行shell命令時,常見的就是輸出在螢幕上,但是我們有些時候需要儲存輸出結果或者丟棄輸出錯誤,就需要重定向了。什麼是資料流重定向 當我們執行乙個命令 命令不也是程式嘛 可能由檔案或者鍵盤讀入資料,經過處理之後,再將結果輸出到螢幕上。圖中,standard output與standard ...
Linux資料流重定向
在我們日常linux命令操作中,命令執行的輸入一般是鍵盤輸入,輸出一般是輸出到螢幕,但有時候,我們可能會去讀取檔案裡但資料作為輸入,或者將輸出儲存到檔案裡 比如日誌檔案 這個時候就需要用到資料流重定向。所謂資料流重定向,就是 1 將某個命令執行後應該要出現在螢幕上的資料傳輸到其它地方,例如檔案或者諸...
Linux 資料流重定向
1.三種資料流重定向 1 標準輸入 stdin 為0,使用0 或0 2 標準輸出 stdout 為1,使用1 或1 其中 1可以省略 3 標準錯誤輸出 stderr 為2,使用2 或2 2.標準輸出 stdout 重定向 我們知道linux中,cat命令可以將檔案內容輸出到螢幕。如下所示 我們可以使...