當(dāng)一個命令執(zhí)行時,通常從“標(biāo)準(zhǔn)輸入”讀取輸入,在默認(rèn)情況下,該“標(biāo)準(zhǔn)輸入”為您的終端。以此類比,當(dāng)一個命令將其輸出寫入到“標(biāo)準(zhǔn)輸出”中,在默認(rèn)情況下,該“標(biāo)準(zhǔn)輸出”同為您的終端。重定向就是將發(fā)送目標(biāo):終端,更改成指定的文件。
由于>
或>>
會將輸出從終端重定向到指定文件,因此均不會在終端打印輸出。>
和>>
的功能區(qū)別,如下所示:
>
會以命令中的寫入內(nèi)容覆蓋原文件內(nèi)容。如果指定的文件不存在,那么它將會創(chuàng)建一個以指定文件名命名的新文件,并執(zhí)行寫入操作。示例:
#!/bin/bash
writefile=WriteFile.txt
$ echo "編程獅:hgci.cn" > $writefile
#使用 cat 命令打印文件內(nèi)容
$ cat $writefile
執(zhí)行后得到以下結(jié)果:
編程獅:hgci.cn
>>
會將命令中的寫入內(nèi)容附加到原文件內(nèi)容末尾。如果指定的文件不存在,那么它將會創(chuàng)建一個以指定文件名命名的新文件,并執(zhí)行寫入操作。示例:
#!/bin/bash
writefile=WriteFile.txt
$ echo "編程獅:hgci.cn" > $writefile
$ echo "編程獅:hgci.cn" >> $writefile
#使用 cat 命令打印文件內(nèi)容
cat $writefile
執(zhí)行后得到以下結(jié)果:
編程獅:hgci.cn
編程獅:hgci.cn
與輸出重定向一樣,但是符號方向相反。語法展示如下:
command < file
接下來使用 wc
命令讀取文件行數(shù)配合演示示例。
示例:
$ wc -l < WriteFile.txt
注:
- 此處不會輸出文件名,<
僅知道從“標(biāo)準(zhǔn)輸入”讀取的內(nèi)容。
stdin
:標(biāo)準(zhǔn)輸入文件,其文件描述符為0,默認(rèn)由此讀取數(shù)據(jù)。stdout
:標(biāo)準(zhǔn)輸出文件,其文件描述符為1,默認(rèn)向它輸出數(shù)據(jù)。stderr
:標(biāo)準(zhǔn)錯誤文件,其文件描述符為2,默認(rèn)向它寫入錯誤信息。 #默認(rèn)情況下
command > file
#將 stdout 重定向到 file
command < file
#將 stdin 重定向到 file
stderr
重定向到 file ,如下示例: $ command 'stderr' > file
#或(注意二者的區(qū)別)
$ command 'stderr' >> file
注:
-'stderr'
指代標(biāo)準(zhǔn)錯誤文件,非命令,請不要盲目復(fù)制使用。
stdin
和stdout
都進行重定向,將 file1 作為command 的輸入,并將 command 的處理結(jié)果輸出到 flie2 。 command < file1 > file2
更多建議: