結論から最初に言うと、エイリアスを一時的に無効化してコマンドを実行するにはコマンドの前にバックスラッシュと付けて実行します。例えば次のように実行します。
# ¥cp hoge.txt /tmp
では、エイリアスを一時的に無視して実行したい場合を考えてみます。例えば、cpコマンドに対して次のように「cp -i」がエイリアスとして設定されていることはよくあることです。
# alias alias cp='cp -i'
このとき次のように-iオプションなしでcpコマンドを実行しても、「cp -i」が実行されるので、コピー先にhoge.txtが存在すると当然ですが上書きするかどうかの確認を求められます。
# cp hoge.txt /tmp overwrite /tmp/hoge.txt? (y/n [n])
上書きしても問題ないとわかっている時には、このエイリアスが煩わしいことがあります。特に大量のファイルを上書きコピーしたい場合は問題です。
このような時にエイリアスを無効化してコマンドを実行します。cpコマンドは本来、-iオプションを付けないで実行すると、コピー先に同じ名前のファイルが存在していても確認なしに上書きコピーを実行します。したがってバックスラッシュを付けてcpコマンドを実行すると、上書き確認されることなくコピーを実行できます。
他の解決法としてエイリアスの設定を一時的に削除してコマンドを実行する方法も考えられますが、以下のような理由でオススメできません。
- 設定の戻し忘れ
- アカウントを共有していた場合に問題を引き起こする恐れがある
2番目のアカウントを共有していた場合の問題とは次のようなケースが考えられます。
エイリアスの設定が削除された後、同じアカウントで他のユーザーがログインします。そのユーザーはファイルを上書きするときは確認を求められるから大丈夫だと思って作業をしていたら、確認なしに上書きコピーが実行されてしまった。
コマンドの前にバックスラッシュを付ける方法は、そのコマンドラインを実行する時だけエイリアスを無視するので、上記のようなリスクがないので安全です。