将多个命令的输出保存到同一文件

将多个命令的输出保存到同一文件

例如 whoami 和 date。我可以那样做

whoami>/home/user/folder/file
date>>/home/user/folder/file

但我确信它可以在一行中完成,而无需输入路径两次。我尝试过使用

|

但总是忽略第一个命令。

答案1

使用子外壳

(whoami; date) > ~user/directory/file

答案2

您可以使用 echo/printf 以及命令替换通过一次重定向来完成此操作:

printf '%s\n' "$(whoami)" "$(date)" > /home/user/folder/file

在我看来,这不是一个好的解决方案,它的可读性/管理性不是很好......特别是如果添加更多命令的话。

为了避免多次输入路径,您可以将其保存在变量中:

file=/home/user/folder/file
whoami>"$file"
date>>"$file"

但这也需要多次重定向。

如果您想编写一个长脚本或命令子集,并想为它们执行单个重定向,您可以使用命令分组:

{
whoami
date
} > /home/user/folder/file

或者在一行中:

{whoami;date;} > /home/user/folder/file

相关内容