簡體   English   中英

調用多個Bash別名

[英]Calling multiple Bash aliases

我想使用一個命令從終端在三個新終端上打開三個不同的文件夾。 它們都應彼此獨立運行,這意味着一個命令不依賴於該命令。

這是我的.bash_aliases,從.bashrc調用

alias cmd1=gnome-terminal && cd ~/Desktop/

alias cmd2=gnome-terminal && cd ~/Documents/

alias cmd3=gnome-terminal && cd ~/Music/

alias runcmds='cmd1 & cmd2 & cmd3'

但這會在“音樂”目錄中打開三個終端,並且無法正確執行命令。 如何使runcmds彼此獨立運行所有3個命令?

另外,什么時候需要使用引號,什么時候不需要?

你的操作順序是倒着:您需要cd啟動終端之前 ,如果你想這些終端中的新殼由受到影響cd 此外,您需要引用以確保將cdgnome-terminal調用這兩個命令都視為別名的一部分。

alias cmd1='cd ~/Desktop/ && gnome-terminal'
alias cmd2='cd ~/Documents/ && gnome-terminal'
alias cmd3='cd ~/Music/ && gnome-terminal'
alias runcmds='cmd1 & cmd2 & cmd3'

順便說一句,我強烈建議不要使用別名,而是定義函數:

cmd1() { cd ~/Desktop && gnome-terminal; }
cmd2() { cd ~/Documents && gnome-terminal; }
cmd3() { cd ~/Music && gnome-terminal; }
runcmds() { cmd1 & cmd2 & cmd3 & }

任何引用都不會涉及(final & (而不是final ;通過確保cmd3和其他cmd3一樣在子shell中運行來防止將父shell的位置更改為~/Music )。 當然,您可以只實現一個功能:

runcmds() {
  local dir
  for dir in ~/Desktop ~/Documents ~/Music; do
    (cd "$dir" && exec gnome-terminal) &
  done
}

實際上, gnome-terminal有助於--working-directory選項。

man gnome-terminal

--working-directory = DIRNAME
將終端的工作目錄設置為DIRNAME。

您可以使用別名,如下所示:

alias cmd1='gnome-terminal --working-directory="$HOME/Desktop"'
alias cmd2='gnome-terminal --working-directory="$HOME/Documents"'
alias cmd3='gnome-terminal --working-directory="$HOME/Music"'
alias runcmds='cmd1 & cmd2 & cmd3'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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