Shell

用於重定向標準輸出和標準錯誤以及發送到後台的別名

  • January 17, 2014

我正在嘗試創建一個alias用於將標準輸出和標準錯誤重定向gedit到的/dev/null,同時將命令發送到後台。

這有效:

$ alias gedit='gedit $1 > /dev/null 2>&1'
$ gedit file.txt &

但是,將後台指令添加&alias字元串中不起作用,因為它會立即被解釋:

$ alias gedit='gedit $1 > /dev/null 2>&1 &'
[1]+  Done                    gedit > /dev/null 2>&1

我應該如何將此&後台指令添加到alias命令中?

我不認為您可以使用 . 來做到這一點alias,但您可以使用 Bash 中的功能。

$ gedit() { command gedit "$@" > /dev/null 2>&1 & }

例子

$ gedit file.txt
[1] 24057
$ 

細節

該函式使用 Bash 的command命令。這將呼叫具有給定名稱的實際執行檔,而不是呼叫任何已經存在的別名或函式。我選擇使用$@它將為您提供所有傳遞的命令行參數,而不僅僅是第一個 with $1

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