次のフォルダ構造があります。
alpha
src
doit.py
beta
src
doit.py
gama
src
doit.py
そして命令を出す
python ../../doit.py --clean --add_source inner
doit
私が持っている親フォルダに基づいて適切なファイルを実行するエイリアスを作成したいと思います。
たとえば、
私が内部にある
alpha
か、サブディレクトリの1つにある場合は、次のようにします。doit --addsource extra
実際の操作:
python /home/alpha/src/doit.py --clean --addsource extra
私が内部にある
beta
か、サブディレクトリの1つにある場合は、次のようにします。doit --addsource inner
実際の操作:
python /home/beta/src/doit.py --clean --addsource inner
答え1
シェル機能はより良いサービスを提供します:
doit () {
local dir
case $PWD/ in
/home/alpha/*) dir=alpha ;;
/home/beta/*) dir=beta ;;
/home/gamma/*) dir=gamma ;;
*) echo 'Not standing in the correct directory' >&2
return 1
esac
python "/home/$dir/src/doit.py" --clean "$@"
}
これは、現在の作業ディレクトリに応じて変数をdir
stringに設定するかalpha
、現在のディレクトリが別の場所にある場合は無効なディレクトリツリーにあると文句を言います。beta
gamma
次に、Pythonスクリプトを実行してその$dir
値と--clean
オプションを取り、関数に渡した別の引数を追加します。
通常、エイリアスを追加する場所にこのシェル関数の定義を追加できます。
答え2
次のように簡単に使用できます。
alias doit='doit=$(pwd)/src/doit.py;$doit --clean'