簡體   English   中英

Bash:在新終端中執行帶有參數的命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM