0 ——stdin 標準輸入
1 ——stdout 標準輸出
2 ——stderr 標準錯誤
將輸出文字重定向或儲存到乙個檔案:
$ echo "this is a sample test 1" > temp.txt
$ cat temp.txt
this is a sample test 1
$ echo "this is a sample test 2" >> temp.txt
$ cat temp.txt
this is a sample test 1
this is a sample test 2
$ echo "this is a sample test 2" > temp.txt
$ cat temp.txt
this is a sample test 2
注: 「 > 」 會將etdout 輸出到指定的檔案中,但temp.txt中的內容首先會被清空。
「>>」將標準輸出追加到目標檔案中的尾部。
當使用重定向操作符時,輸出內容不會在終端列印,而是被導向檔案。
> = 1> ; >> == 1>>
/dev/null是乙個特殊的裝置檔案,它接受到的任何資料都會被丟棄。null裝置通常也被稱為「黑洞」
$ ls + > out.txt
ls: cannot access +: no such file or directory
$ ls + 2> out.txt
$ cat out.txt
ls: cannot access +: no such file or directory
$ cmd 2>&1 output.txt -->等同於 cmd &> output.txt 將stderr轉換成stdout,使得stderr和stdout都被重定向到同乙個檔案
bash: cmd: command not found...
similar command is: 'mcd'
$ cat out.txt
ls: cannot access +: no such file or directory
$ cmd 2> /dev/null
$ cmd
bash: cmd: command not found...
similar command is: 'mcd'
tee既可以將資料重定向到檔案,還可以提供乙份重定向資料的副本作為後續命令的stdin:
command |tee file1 file2
$ ls -tl
total 2
----------. 1 allen allen 47 apr 27 01:07 out.txt
-rw-rw-r--. 1 allen allen 24 apr 27 00:59 temp.txt
$ cat out.txt temp.txt
cat: out.txt: permission denied
this is a sample test 2
$ cat out.txt temp.txt |tee a.txt |cat -n
cat: out.txt: permission denied
1 this is a sample test 2
$ cat a.txt
this is a sample test 2
$ 標準輸出至a.txt,另外乙份傳遞給 cat.
$ echo who is this |tee - "-"作為命令的檔名
who is this
who is this
補充:借助重定向,我們可以用cat和管道|來指定我們自己的檔案描述符:
$cat file |cmd
$cmd1 |cmd
將檔案重定向到命令
$ cmd < file
mysql 檔案描述符 檔案描述符
toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...
檔案描述符
檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...
檔案描述符
作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...