回答:
何を尋ねているのかは完全にはわかりませんが、エイリアスはエイリアスに展開されます。エイリアスが2つある場合は、エイリアスを含めて異なるコマンドを追加できます。
alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"
それ以外の状況では、関数を指定できます .bashrc
function go ()
{
if [ "$PWD" == "/path/to/foo" ]; then
cmd1
elif [ "$PWD" == "/path/to/go" ]; then
cmd2
fi;
}
より多くの選択肢がある場合は、ケース構造を使用することをお勧めします。
あなたは非常に「ディレクトリ指向」であると感じます。その場合、これはあなたのメンタリティをより良くするかもしれません。
(しかし、正直に言うと、これは完全に悪い考えだと思います。コマンドをグローバルにしたいと思います。)
で.bashrc
、alias go="./.cmd"
(次にsource ~/.bashrc
)を入力します。
次に、そのような各ディレクトリに、というスクリプトを配置して.cmd
からchmod +x .cmd
、をgo
実行します。
touch .TESTNO; echo 2 > .TESTNO
各ディレクトリにファイル()を置き、関数内でそのファイルを探し、.TESTNOファイルのテスト番号に従って分岐することができます。含まれています。まったく難しくはありませんが、おそらくこれにエイリアスを使用することはできません。関数を使用する必要があります。
私はまさにそれを達成するプロジェクトに取り組んでいます。確認してください:localalias。
デモは次のとおりです。
面白いことに、実際にgo
デモの例として使用しました。切り替えディレクトリ(デモについて変更する必要があるもの)は表示しませんでしたが、la
コマンドを使用する関数は、定義されているディレクトリに対してローカルです。
次の関数を.bashrcに追加する場合
function cd () {
builtin cd "$@" && [[ -f .aliases ]] && . .aliases
return 0
}
.aliasesファイルがあるディレクトリにcdするたびに、ソースが取得されます。
他のユーザーがマシン上にファイルを作成できる場合は、セキュリティに注意してください。
このトリックでは、エイリアスは削除されませんが、関数に好きなだけコードを書くことができます。
ondirはこのトリックを使用し、たくさんの機能を備えています。
.bashrc
。(cron
たとえば、これは機能しません)。