縮短或合併多行 `&> /dev/null &`

縮短或合併多行 `&> /dev/null &`

每次啟動機器時,我都會執行以下程式:

$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null  &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &

麻煩&> /dev/null &...怎麼才能縮短邏輯?

答案1

該部分&> /dev/null錶示輸出重定向。您可以透過將多個命令分組到一個區塊中將它們重定向到同一個檔案:

#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs  &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null

然而,同樣的事情不能用於在後台啟動單一命令(&)。放在&區塊後面意味著將整個區塊作為單一腳本在背景運行。

答案2

我編寫了一個函數並將其放入我.bashrc的終端中運行與終端分離的東西:

detach () 
{ 
    ( "$@" &> /dev/null & )
}

.... 進而:

detach google-chrome
detach xdg-open ~/Reference/topic_regex.md

因為我很懶,所以我還寫了一個捷徑xdg-open

xo () 
{ 
    for var in "$@"; do
        detach xdg-open "$var";
    done
}

由於xdg-open只需要一個參數,因此函數xo會迭代所有給定的參數並xdg-open分別呼叫每個參數。

這允許:

detach google-chrome
xo . ~/Reference/topic_regex.md

答案3

您可以使用以下命令重定向所有後續命令的輸出

exec 1>/dev/null
exec 2>/dev/null

答案4

我創建了一個特殊文件,例如/dev/null使用較短的路徑來縮短重定向。我用作/n新文件的路徑:

sudo mknod -m 0666 /n c 1 3

這樣您可以將各行縮短為例如:

google-chrome &>/n &

來源:如何建立/dev/null?

相關內容