當我需要在同一命令中呼叫多個二進位時,如何讓別名發揮作用?

當我需要在同一命令中呼叫多個二進位時,如何讓別名發揮作用?

假設我有兩個二進位檔案:二進制1二進位2

他們每個人都有自己的選項集:選項1選項2

使用者需要呼叫遵循以下結構的命令:

binary1 options1 binary2 options2

但是,我想設定選項2我自己並讓他們運行以下命令:

binary1 options1 alias

在哪裡

alias='binary2 options2'

有什麼辦法可以讓這個在 bash/tcsh 下工作嗎?我正在 64 位元架構上的 SLES 11 SP2 下工作。

答案1

你需要讓binary1和options1成為他們想要啟動的任何東西嗎?然後:定義函數「something」:

something () {
   options2="...." #you define them as you want, either here or from another source
   binary1="$1" ; shift
   "$binary1" "$@"
   binary2  $options2
}

(並在 bash 登入檔案中定義它)

並讓他們運行:

something binary1 options1

這樣他們就可以真正為選項1瘋狂,例如:

something touch file1 file2 "file3 with extra spaces" file4

答案2

mpirun 不喜歡運行別名,您可能已經知道了。最好的方法是為可執行檔建立一個包裝器。因此,將以下內容放入文件中(使其可執行):

#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*

如果您將此檔案命名為「dplace」並將其放置在使用者路徑中的目錄中,該目錄在找到真實dplace 的目錄之前進行搜索,那麼它將透明地運行包裝器腳本(請記住在您使用時“rehash”)正在嘗試這個)。

我假設 TOP_PROC 已經在環境中定義。

相關內容