当我在Cygwin中使用管道连接命令时,为什么这些命令不能“独立”起作用?

时间:2012-09-18 00:35:10

标签: cygwin pipe

我是Cygwin的初学者。如果我有:

cat output.txt | rm output.txt

我想在删除文件之前打印出结果,但结果不打印,即使这些命令在单独输入Cygwin时也能找到。类似地:

grep -c 'ps' count.tmp | rm count.tmp

我想在移除grep -c 'ps' count.tmp文件之前显示count.tmp的结果。

2 个答案:

答案 0 :(得分:3)

不要管它们。

请改为:

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

答案 1 :(得分:0)

管道命令can be run in any order,因此无法保证不会先运行rm命令。使用

cat output.txt && rm output.txt

只有在cat命令成功时才会删除文件。