Bash

在終端中執行後台命令時如何隱藏 PID 和退出狀態

  • November 30, 2020

我有一個超過一百行的文本文件,每行都是一個sh命令:

echo foo
...
echo bar

我正在尋找一個可以從終端呼叫的sh命令,該終端將從與指定行號關聯的所述文件中執行命令。我不希望終端顯示通常與終端中執行的命令相關聯的常見系統相關內容。

例如,如果我使用類似的東西xdotool type "$(sed -n 1p file)" &(請注意,我對更優雅的命令持開放態度),

我得到以下終端輸出:

[1] 9531
user@host:~$ echo foo

我想壓制這[1] 9531條線。但是請記住,我希望抑制回顯條線,因為我有機會驗證我將執行所需的命令而不是其他命令。我也不希望在命令提示符的左側顯示任何文本。

然後我按下鍵盤上的 < Enter > 鍵並得到:

foo
[1]+  Done                    xdotool type "$(sed -n 1p file)" &
user@host:~$

我想壓制這[1]+ Done...條線。

如何抑制所述兩條線的終端輸出?我已經嘗試了我能找到的所有重定向方案,但沒有任何樂趣。

為簡化起見,您看到的是在後台執行命令時的正常輸出(&符號)。如果執行此簡化版本,您會看到相同的結果:

ls &

為避免看到該輸出,您可以將命令用括號括起來:

(ls &)

或者,在你的情況下

(xdotool type "$(sed -n 1p file)" &)

在您的特定情況下,您似乎並不真正需要&,因此從您的命令中刪除它可能更容易:

xdotool type "$(sed -n 1p file)"

附言

如果您想從頭到尾按順序執行所有文件,您可能更喜歡執行類似的操作

x=0

然後,對於每一行,執行

x=$((x+1)); (xdotool type "$(sed -n "${x}p" file)" &)

這樣你就不需要每次都修改數字了。

也看看這個: How to interactively run all commands in a file

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