2

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

cat output.txt | rm output.txt

我想在删除文件之前打印出结果,但是即使这些命令在单独输入 Cygwin 时可以正常工作,也不会打印结果。相似地:

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

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

4

2 回答 2

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
于 2012-09-18T00:37:50.263 回答
0

管道命令可以按任何顺序运行,因此不能保证该rm命令不会先运行。利用

cat output.txt && rm output.txt

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

于 2012-09-18T00:43:59.957 回答