我是Cygwin的初學者。如果我有:當我在Cygwin中使用管道連接命令時,爲什麼這些命令不能「獨立」運行?
cat output.txt | rm output.txt
我想打印出來的結果我刪除該文件之前,但儘管這些命令的工作發現,當分別輸入到Cygwin的結果甚至不打印。同理:
grep -c 'ps' count.tmp | rm count.tmp
我想count.tmp
文件被刪除之前,顯示的grep -c 'ps' count.tmp
結果。
我是Cygwin的初學者。如果我有:當我在Cygwin中使用管道連接命令時,爲什麼這些命令不能「獨立」運行?
cat output.txt | rm output.txt
我想打印出來的結果我刪除該文件之前,但儘管這些命令的工作發現,當分別輸入到Cygwin的結果甚至不打印。同理:
grep -c 'ps' count.tmp | rm count.tmp
我想count.tmp
文件被刪除之前,顯示的grep -c 'ps' count.tmp
結果。
不要管他們。
而是執行此操作:
cat output.txt ; rm output.txt
grep -c 'ps' count.tmp ; rm count.tmp
編輯:管道(|
)需要一個命令的標準輸出,並運行它進入另一個標準輸入...是這樣的:
# Get the number of lines
cat output.txt | wc -l
or
echo "Hello there" | tr -d' '
要加入命令,請使用;
或&&
;
將運行命令一個壓腳提升其他
echo Hi ; false; echo there
的&&
才能運行該命令中的零個狀態代碼(成功)退出下一個命令。
echo Hi && false && echo there
管道輸送命令can be run in any order,所以不能保證rm
命令將不會被首先運行。使用
cat output.txt && rm output.txt
如果cat
命令成功,這將只刪除該文件。
對於來自Windows/DOS背景的人來說,這是一個重要的區別,管道命令* do *按順序運行,在臨時文件中傳遞stdio。 –