同じコマンドで複数のバイナリを呼び出す必要がある場合、エイリアスを機能させるにはどうすればよいですか?

同じコマンドで複数のバイナリを呼び出す必要がある場合、エイリアスを機能させるにはどうすればよいですか?

2 つのバイナリ ファイルがあるとします。バイナリ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 が見つかるディレクトリより前に検索されるディレクトリ内のユーザー パスに配置すると、代わりにラッパー スクリプトが透過的に実行されます (これを試してみるときは、「再ハッシュ」することを忘れないでください)。

TOP_PROC は既に環境で定義されていると想定します。

関連情報