私のエイリアスのほとんどは次の形式です:alias p='pwd'
エイリアスしたいgit commit
こうすることでgit commit -v
ただし、スペースを含むエイリアスを作成しようとすると、エラーが発生します。
$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name
あなたの質問への直接の答えではありません(エイリアスは1つのWordにしかできないため)が、git-config
代わりに:
git config --global alias.civ commit -v
これによりgitエイリアスが作成され、git civ
実行git commit -v
。残念ながら、私の知る限り 既存のgitコマンドをエイリアスで上書きする方法はありません 。ただし、代わりに、適切なエイリアス名をいつでも使用できます。
Bashでは、空白を含むコマンドのエイリアスを作成できません。
ただし、回避策として.bashrcで次の関数を使用します。
Sudo() { if [[ $@ == "pacman -Syu" ]]; then command pacup.sh; else command Sudo "$@"; fi; }
これがどのように機能するか:呼び出したいコマンドから始めます。私の場合はSudo
です。
それから、あなたはそれがどのようなパラメータを取るのかについて言及します。この場合、pacman -Syu
。
トリガーされた場合、どのコマンドを実行する必要がありますか?上記のステートメントではpacup.sh
です。
そうでなければ、どのコマンドを実行するか、Sudo $@
。 $@
は、ご想像のとおり、コマンドが受け取るパラメーターリストです。
したがって、特定のケースに対応するコマンドを作成すると、次のようになります。
git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; }
ただし、この解決策は、空白を含むコマンドにエイリアスを設定する場合のより一般的なケースです。
特定のケースでは、git-config
を使用してgitコマンドにエイリアスを設定するためにjw013のソリューションを使用することをお勧めします
各シンプルコマンドの最初のワードは、引用符で囲まれていない場合は、エイリアスがあるかどうかが確認されます。その場合、そのWordはエイリアスのテキストで置き換えられます。エイリアス名と置換テキストには、シェルのメタ文字を含む有効なシェル入力を含めることができますが、エイリアス名に「=」を含めることはできません。
置換テキストの最初の単語はエイリアスについてテストされますが、展開されるエイリアスと同一の単語は2回目に展開されません。これは、たとえば、lsを "ls -F"にエイリアスすることができ、Bashが置換テキストを再帰的に拡張しようとしないことを意味します。
したがって、最初の単語のみがチェックされるため、複数の単語を含むエイリアスを作成することはできません。 このスーパーユーザーの質問 では、関数を使用した回避策が提供されています。
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
git
に適合させることができます。
正しい解決策はjw013のようなエイリアスを使用することですが、スペースを含むエイリアスを作成するには、エイリアスをネストできます。
たとえば、ローカルとリモートの両方でブランチを削除するエイリアスがありますが、ユーザーは常にブランチを指定する必要があります。
remrem = "!sh -c 'if [ $# -ne 1 ]; then git specBranch; else git Push Origin :$1 && git branch -d $1; fi' -"
#echoing aliases
specBranch = "!sh -c 'echo Specify branch please!'"