エイリアスはこれを行うためのものではありませんが、 cd
という関数を作成できます これは実際の cd
のラッパーです .これは私のために働く! .bash_profile
に入れるだけです または選択したプロファイル ファイル。
cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }
または、コメントときれいな書式設定:
cd ()
{
if [ "$1" = ",," ]; then # if first argument is ",,"...
builtin cd .. # call the builtin cd with ".." instead...
else
builtin cd "[email protected]" # else call builtin cd with original arguments
fi
}
編集
if then else
を指摘してくれた @derobert に感謝します ここは && ||
よりも優れています .また、今気づきました (*facepalm *) この実装は、パス以外の引数 (つまり、-L -P
) がある場合にのみ機能します。 ) は最初の引数ではありません。 cd -L ,,
と入力する悪い癖がある場合は注意してください。 これはあなたを助けるつもりはありません。そして、それを正しく処理するのは簡単ではないと思います.
ZSH:
zsh
を使用している場合 alias -g ,,=".."
必要なものですが、これにより、cd
で使用した場合だけでなく、「,,」がどこにでも展開されます。 .
man zshbuiltins
から :
-g
の場合 フラグが存在する場合、グローバル エイリアスを定義します。グローバル エイリアスは、コマンドの位置にない場合でも展開されます。
バッシュ:
bash
に制限されている場合 (質問は bash でタグ付けされているため)、以下をお読みください:
これは要求どおりの純粋なエイリアス ソリューションですが、ただし これは必要以上にユーザーをイライラさせる可能性があります (私の投稿の最後にある警告を参照してください)。
man bash
の引用 :
エイリアス値の最後の文字が空白の場合、エイリアスに続く次のコマンド ワードもエイリアス展開のためにチェックされます。
したがって、エイリアス cd
で十分です 余分なスペース (次の引数を展開できるようにするため) とエイリアス ,,
..
へ .見てください
alias cd='cd '
alias ,,='..'
必要なものを正確に提供します。
これは bash
だけではないことに注意してください (そしてその alias
実装)、しかしすべての POSIX 準拠のシェル。 man 1p alias
からの例の引用 (マニュアルではこの機能について明示的に説明しておらず、例を通してのみ説明しています):
-
それ自体がエイリアス名である引数を処理できるように、nohup をセットアップします。
alias nohup="nohup "
警告: @PeterCordes がコメントに書いているように、自動的に other が発生します。 cd
の後に書かれたときに展開するエイリアス . cd \grep
と書く必要があるかもしれません ディレクトリを grep
という名前のディレクトリに変更したい場合 しかし、あなたの grep
grep --color=auto
のエイリアスです .バックスラッシュなし、cd
「引数が多すぎます」というエラーが報告されます (cd
はできません) 一度に 2 つのディレクトリに)!.
エイリアスは 最初の単語 にする必要があります コマンドの。また、エイリアスは単語の代わりに使用する必要があります したがって、スペースはありません)。
<ブロック引用>Bash リファレンス マニュアル:エイリアス
エイリアスを使用すると、単語を文字列に置き換えることができます 最初の単語として使用される場合
..
の両方に別名を付けることができます と ,,
cd ..
になる .
$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/