一時的にalias をオフにしたいとき
grep や ls などを使っていて、一時的にalias をオフにしたいことないですか?
私は結構たくさんあります。 grep や ls にいっぱいオプションを付けていて普段はそれを使っているのですが、素のgrep がほしいときはある。
そんなときは back slash を入れます。
\grep . -R
このような、エイリアスがあったとしても、素のgrep が動いてくれます。
takuya@:www-data$ alias grep alias grep='grep -i -E -a --color=auto -n '
これを知って、安心して rm や ls までどんどん alias にしていくことが出来ました。
不必要に エイリアスが呼び出されてしまわないように バックスラッシュをつけるのが良いです。
ただし、同名の関数が定義されているときは関数が優先されます。
シェルから一時的に使うと便利。
バックスラッッシュは、エイリアスがあるために意図した動作にならないときに、対話的prompt で使うと便利です。本当に便利です。
互換性を維持する目的であれば フルパス
alias しまくってると不意に動作することがあるので、シェルスクリプトにバックスラッシュを書きたくなると思います。別環境に持っていくときに alias が発動しないようにバックスラッシュを付与したスクリプトファイルにしても構わないのですが。。。。
互換性を目的にするのであれば、バックスラッシュよりもフルパスが好ましいと思います。
## これはalias発動するのでポータビリティに向いてない。 ls *.jpg | grep aaa| xargs identify ## これだと、alias なしで実行される。が、function grep { ... } があればそちらが使われてしまう。 ## またPATH優先順位にも左右されてしまう。 ls *.jpg | \grep aaa| xargs identify ## フルパスで指定が無難 ls *.jpg | /bin/grep aaa| xargs identify
このように、シェルのコマンドの優先度を考えたら、ポータビリティを維持する目的でではバックスラッシュは向いていません。
2019-08-23
互換性についての記述を追加。