[英]Bash: Execute command WITH ARGUMENTS in new terminal
所以我想在 bash 中打開一個新終端並執行一個帶參數的命令。 只要我只采用ls
這樣的命令,它就可以正常工作,但是當我采用route -n
之類的命令時,帶參數的命令就不起作用了。 編碼:
gnome-terminal --window-with-profile=Bash -e whoami
#WORKS
gnome-terminal --window-with-profile=Bash -e route -n
#DOESNT WORK
我已經嘗試將 "" 放在命令周圍,但它仍然不起作用
您可以使用以下命令啟動一個新終端:
gnome-terminal --window-with-profile=Bash -- \
bash -c "<command>"
要使用普通的 bash 配置文件繼續終端,請添加exec bash
:
gnome-terminal --window-with-profile=Bash -- \
bash -c "<command>; exec bash"
以下是創建Here 文檔並將其作為命令傳遞的方法:
cmd="$(printf '%s\n' 'wc -w <<-EOF
First line of Here document.
Second line.
The output of this command will be '15'.
EOF' 'exec bash')"
xterm -e bash -c "${cmd}"
要打開新終端並使用腳本運行初始命令,請在腳本中添加以下內容:
nohup xterm -e bash -c "$(printf '%s\nexec bash' "$*")" &>/dev/null &
當$*
被引用時,它將參數擴展為單個單詞,每個單詞由 IFS 的第一個字符分隔。 nohup
和&>/dev/null &
僅用於允許終端在后台運行。
嘗試這個:
gnome-terminal --window-with-profile=Bash -e 'bash -c "route -n; read"'
最后的read
防止窗口在執行前面的命令后關閉。 當你按下一個鍵時它會關閉。
如果你想體驗頭痛,你可以嘗試更多的引用嵌套:
gnome-terminal --window-with-profile=Bash \
-e 'bash -c "route -n; read -p '"'Press a key...'"'"'
(在以下示例中沒有最終read
。假設我們在配置文件中修復了它。)
如果你想打印一個空行並享受多級轉義:
gnome-terminal --window-with-profile=Bash \
-e 'bash -c "printf \\\\n; route -n"'
同樣的,還有另一種引用風格:
gnome-terminal --window-with-profile=Bash \
-e 'bash -c '\''printf "\n"; route -n'\'
變量在雙引號中展開,而不是單引號,因此如果您希望它們展開,您需要確保最外面的引號是雙引號:
command='printf "\n"; route -n'
gnome-terminal --window-with-profile=Bash \
-e "bash -c '$command'"
引用會變得非常復雜。 當您需要比簡單的幾個命令更高級的東西時,建議使用您需要的所有可讀的參數化代碼編寫一個獨立的 shell 腳本,將其保存在某處,例如/home/user/bin/mycommand
,然后調用它簡單來說
gnome-terminal --window-with-profile=Bash -e /home/user/bin/mycommand
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.