Linux

將多個命令的輸出保存到同一個文件

  • May 23, 2019

例如 whoami 和日期。我可以那樣做

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

但我確信它可以在一行中完成,而無需兩次輸入路徑。我試過使用

|

但總是忽略第一個命令。

使用子外殼

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

您可以通過使用 echo/printf 以及命令替換的單個重定向來完成此操作:

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

IMO 這不是一個好的解決方案,它的可讀性/可管理性不是很好……特別是如果添加了更多命令。

為了避免必須多次鍵入路徑,您可以將其保存在變數中:

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

但這也需要多次重定向。

如果您想編寫一個長腳本或命令子集並希望為它們執行單個重定向,您可以使用命令分組:

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

或者在一行:

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

引用自:https://unix.stackexchange.com/questions/520706