shell指令碼學習總結01 檔案描述符和重定向

2022-03-05 14:09:11 字數 1250 閱讀 4761

檔案描述符是與檔案輸入和輸出的相關聯的整數,它們用來追蹤已開啟的檔案,檔案描述符0,1,2是系統預留的。

0 --> stdin (標準輸入)

1 --> stdout (標準輸出)

2 --> stderr (標準錯誤)

$ echo a1>a1

$ cp a1 a2;cp

a2 a3

$ cat a*

cat: a1: permission denied

a1a1

將0定向到std.txt,將2定向到err.txt

$ cat a* >std.txt 2>err.txt

將0和1都定向到out.txt

$ cat a* >out.txt 2>&1.txt

tee命令

將stdin重定向到文字中並且在螢幕列印出來。

$ cat a*|tee

out.txt

cat: a1: permission denied

a1a1

$ cat

out.txt

a1a1

注意:out.txt並不包含「cat: a1: permission denied

」,因為它只能從stdin中進行讀取。

預設的tee命令會將檔案覆蓋,但提供乙個-a的選項用於追加。

$ cat a*|tee-a out.txt

重定向指令碼內部的文字塊

#/bin/bash

sqlplus /nolog conn scott/tiger

select * from cat

;commit;

exit

eof

自定義檔案描述符

$ exec 4>output.txt

$ echo newline >&4

$ cat

output.txt

newline

$ echo hello >input.txt 

$ exec 3

$ cat

<&3

hello

shell指令碼學習12 檔案包含

像其他語言一樣,shell 也可以包含外部指令碼,將外部指令碼的內容合併到當前指令碼。shell 中包含指令碼可以使用 filename 或 source filename 兩種方式的效果相同,簡單起見,一般使用點號 但是注意點號 和檔名中間有一空格。例如,建立兩個指令碼,乙個是被呼叫指令碼 sub...

shell指令碼學習(3)檔案判斷

shell常用的檔案判斷運算子如下 e 檔案是否存在 f 檔案是否是普通檔案 不是目錄 裝置檔案 鏈結檔案 s 表示檔案大小不為0 d 表示檔案是否是目錄 b 表示是塊裝置 光碟機 軟盤等 c 表示是字元裝置 鍵盤 音效卡等 p 表示是管道 h 表示是符號鏈結 s 表示是否是socket r w x...

Shell指令碼學習筆記 十 檔案操作

檔案操作 取得目錄內容 lsgetconf arg max 判斷檔案是否存在 建立檔案 建立一般檔案 建立檔案 1 使用轉向輸出 text.txt 2 配合空命令 test.xtx 可以增加script移植性,有時候使用 檔案 會造成語法錯誤 3 建立隱藏檔案 test.txt 4 使用touch命...