エイリアスgo
があるとしますが、別のディレクトリで別のことを実行したいですか?
1つのディレクトリではcmd1
を実行する必要がありますが、別のディレクトリではcmd2
を実行する必要があります
ちなみに、上記のディレクトリに切り替えるためのエイリアスはすでにあるので、go
エイリアスにfoo
エイリアス割り当てを追加することはできますか?
alias "foo=cd /path/to/foo"
OSXのbash(?)で作業します。
何を要求しているのかは完全にはわかりませんが、エイリアスはエイリアス内のものに展開されます。エイリアスが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
というスクリプトを配置します。
私はまさにそれを成し遂げるプロジェクトに取り組んでいます。確認してください: localalias 。
ここにデモがあります:
面白いことに、私は実際にgo
をデモの例として使用しました。ディレクトリの切り替え(デモについて変更が必要なもの)は示していませんが、la
コマンドを使用した関数は、実際には、それらが定義されているディレクトリに対してローカルです。
function go() {
if [ ! -e "./.cmd1" ]
then command go -a $1
else command go -b $1
fi
}
同様のことですが、「go」が特定のディレクトリとは異なる機能が必要なコマンドであると想定します。
。bashrcに次の関数を追加すると、
function cd () {
builtin cd "$@" && [[ -f .aliases ]] && . .aliases
return 0
}
.aliasesファイルのあるディレクトリにcdするたびに、ソースが取得されます。
他のユーザーがあなたのマシンでファイルを作成できる場合は、セキュリティに注意してください。
このトリックを使用すると、エイリアスが削除されることはありませんが、関数で好きなだけコードを書くことができます。
ondirはこのトリックを使用し、たくさんのベルとホイッスルを持っています。