.bashrcの「エイリアス」にパラメータを延期する

.bashrcの「エイリアス」にパラメータを延期する

私はLINUX(ubuntu 14)を使用していますが、新しく購入したラップトップではシェルを使用する必要がありました。以前は、Cシェルを使用し、エイリアスを でbash.bashrc.cshrc.bashrc

しかし、うまくいかないのは遅延議論です。たとえば - 私の.cshrcコマンドは次のようになります。

alias rm 'mv -f \!* $HOME/zap'

.bshrcに次のように書くと

alias rm = 'mv -f \!* $HOME/zap'

エラーメッセージの生成:

bash:alias: rm: not found
bash:alias: mv -f \!* $HOME/zap: not found

(このディレクトリはzap私が事前に作成したものです。)

代わりに何を使うべきですか\!*

ベストアンサー1

このような場合は、エイリアスの代わりにシェル関数を使用する必要があります。より多くのタイピングが必要ですが、より柔軟性を提供します。

function rm {
  if ! test -d "$HOME/zap"; then
    echo "No zap in home" >&2
    return 1
  else
    mv -f -- "$@" "$HOME/zap/"
  fi
}

コマンドラインで$@指定した引数に展開されます。コマンドラインフラグの終わりを通知する必要があります(rmファイルがどこにあるか、可能であり、多くのコマンドラインフラグがとにかく共有されないように)。--rm -f-frmmv

元のコマンドにアクセスするには、またはをrm使用します。\rmcommand rm

存在するかどうかをテストし$HOME/zap、標準エラーにエラーメッセージを出力し、関数がゼロ以外の終了状態で終了することは、必要なものは何でもできることを示しています。明らかに、これを次のように単純化できます。

function rm {
  mv -f -- "$@" "$HOME/zap/"
}

マニュアルbashには次の内容が含まれています。

ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。

lsエイリアスは、お気に入りのロゴなどにタグを付ける場合にのみ便利です。

おすすめ記事