相关疑难解决方法(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万
查看次数

如何让 iconv 用转换后的输出替换输入文件?

我有一个 bash 脚本,它枚举目录中的每个 *.php 文件并应用于iconv它。这将在 STDOUT 中获得输出。

由于添加-o参数(根据我的经验)实际上可能在转换发生之前写入一个空白文件,我如何调整我的脚本以进行转换,然后覆盖输入文件?

for file in *.php
do
    iconv -f cp1251 -t utf8 "$file"
done
Run Code Online (Sandbox Code Playgroud)

shell io-redirection text-processing

79
推荐指数
2
解决办法
6万
查看次数

为什么将文件“cat”到自身中会擦除它?

可能重复:
IO 重定向和 head 命令

我只想删除文件的第一行以外的所有内容。我这样做了:

head -1 foo.txt
Run Code Online (Sandbox Code Playgroud)

...并确认我只看到了第一行。然后我做了:

head -1 foo.txt > foo.txt
Run Code Online (Sandbox Code Playgroud)

但不是只包含第一行,foo.txt现在是空的。

事实证明,这cat foo.txt > foo.txt也清空了文件。

为什么?

cat head stdout

12
推荐指数
1
解决办法
8646
查看次数

为什么这个排序命令给我一个空文件?

prova1是一个带有一些文本的文件。当我运行此代码时,prova1变为空:

sort prova1 > prova1
Run Code Online (Sandbox Code Playgroud)

我知道要达到我可以做的效果:

sort prova1 -o prova1
Run Code Online (Sandbox Code Playgroud)

我只想知道原因:)

terminal sort

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