在 Unix CLI(命令行界面)中,有时您可能只想在有输出时才保存命令的输出。这可以通过组合使用 shell 脚本和一些命令来实现。以下是一个基本的概念和示例:
Unix CLI 中的命令通常会输出到标准输出(stdout)或标准错误(stderr)。您可以使用重定向操作符来捕获这些输出,并根据需要处理它们。
假设您有一个命令 my_command
,您只想在有输出时才将其保存到文件 output.txt
中。可以使用以下方法:
#!/bin/bash
# 创建一个临时文件
temp_file=$(mktemp)
# 执行命令并将输出重定向到临时文件
my_command > "$temp_file" 2>/dev/null
# 检查临时文件是否为空
if [ -s "$temp_file" ]; then
# 如果不为空,则移动到目标文件
mv "$temp_file" output.txt
fi
# 清理临时文件
rm -f "$temp_file"
awk
或 grep
#!/bin/bash
# 使用 awk 检查是否有输出并保存
my_command | awk '{print > "output.txt"; exit}'
# 或者使用 grep 检查是否有输出
my_command | grep -q . && my_command > output.txt
awk
或 grep
直接处理管道输出。awk
版本会在接收到第一个字符时立即开始写入文件并退出;grep -q .
会检查是否有任何输出,如果有,则再次运行命令并将输出保存到文件中。/dev/shm
)来存储临时数据。通过这些方法和注意事项,您可以有效地仅在有输出时保存 Unix CLI 命令的输出。
领取专属 10元无门槛券
手把手带您无忧上云