相关疑难解决方法(0)

IO 重定向和 head 命令

.hgignore今天试图从 Cygwin bash shell快速编辑一个文件,但我添加了一行错误。我不确定这是否是最好的方法,但我很快想到使用head -1 .hgignore删除有问题的行(我以前在文件中只有一行)。果然,执行时它给出了第一行作为唯一的输出。

但是当我尝试重定向输出并使用 重写文件时head -1 .hgignore > .hgignore,该文件为空。为什么会发生这种情况?如果我尝试附加,head -1 .hgignore >> .hgignore,它会正确附加,但这显然不是想要的结果。为什么在这种情况下截断重定向不起作用?

shell io-redirection

11
推荐指数
2
解决办法
6881
查看次数

为什么命令 shuf file > file 会留下一个空文件,而类似的命令却不会?

我知道这是另一个问题的重复(为什么这个排序命令给我一个空文件?)但我想扩展这个问题以回应给出的答案。

命令

shuf example.txt > example.txt

返回一个空白文件,因为 shell 在对文件进行 shuffle 之前将其截断,只留下一个空白文件进行 shuffle。然而,

cat example.txt | shuf > example.txt

将按预期生成一个混洗的文件。

当简单重定向不起作用时,为什么管道方法起作用?如果文件在命令运行之前被截断,第二种方法不应该也留下一个空文件吗?

shell pipe io-redirection

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

io-redirection ×2

shell ×2

pipe ×1