我在第一次配置 Zsh 时做了一个错误的选择,所以现在我想再次运行配置向导(第一次登录时运行的东西)。我该怎么做呢?
我知道这是另一个问题的重复(为什么这个排序命令给我一个空文件?)但我想扩展这个问题以回应给出的答案。
命令
shuf example.txt > example.txt
返回一个空白文件,因为 shell 在对文件进行 shuffle 之前将其截断,只留下一个空白文件进行 shuffle。然而,
cat example.txt | shuf > example.txt
将按预期生成一个混洗的文件。
当简单重定向不起作用时,为什么管道方法起作用?如果文件在命令运行之前被截断,第二种方法不应该也留下一个空文件吗?
我有一个简单的命令可以从服务器列表中返回正常运行时间/平均负载,并使用 awk 来格式化输出:
for i in $(cat servers); do ssh $i -qt "uptime" | awk -F\, -v host=\"$i\" '{ print host, $4, $5, $6 }'; done
这相当有效:
"server1" load average: 0.22 0.37 1.99
"server2" load average: 0.22 0.37 1.99
"server3" load average: 5.96 4.39 5.66
Run Code Online (Sandbox Code Playgroud)
不幸的是,最后一个字段必须包含回车符,这意味着它不能出现在命令的末尾以外的任何地方。例如:
for i in $(cat servers); do ssh $i -qt "uptime" | awk -F\, -v host=\"$i\" '{ print host, $6, $5, $4 }'; done
输出:
0.64 load average: 0.17" 1.74
0.64 load average: 0.17" 1.74 …Run Code Online (Sandbox Code Playgroud)