相关疑难解决方法(0)

shell 的控制和重定向操作符是什么?

我经常在网上看到用不同符号连接各种命令的教程。例如:

command1 |  command2
command1 &  command2
command1 || command2    
command1 && command2
Run Code Online (Sandbox Code Playgroud)

其他人似乎将命令连接到文件:

command1  > file1
command1  >> file1
Run Code Online (Sandbox Code Playgroud)

这些是什么?他们叫什么?他们在做什么?还有更多吗?


关于这个问题的元线程。.

shell io-redirection control-flow

353
推荐指数
3
解决办法
17万
查看次数

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

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

命令

shuf example.txt > example.txt

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

cat example.txt | shuf > example.txt

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

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

shell pipe io-redirection

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

我可以在 Linux 中读写同一个文件而不覆盖它吗?

可能的重复:
如何使 iconv 用转换后的输出替换输入文件?

我经常使用他们的公共 DNS 名称
( ec2-12-34-56-78.compute-1.amazonaws.com)连接到 amazon ec2 ,因此我的known_hosts文件被大量ec2我永远不会再使用的条目所淹没。

我知道我可能可以sed -i用来就地编辑,但我想使用grep,所以我这样做了:

grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

这留下known_hosts了一个空文件。如果我做:

grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

然后一切都很好,但我很困惑,为什么读取和写入同一个文件的叶子空白的,如果有迂回方式,使用的时候grepcat等等。

shell bash stdout stdin

8
推荐指数
2
解决办法
4836
查看次数

标签 统计

shell ×3

io-redirection ×2

bash ×1

control-flow ×1

pipe ×1

stdin ×1

stdout ×1