aliasを無視(回避)する

cpコマンドで毎回上書きを尋ねられる

Linuxなどでコマンドを打っているときに、cpコマンドでコピーするんですが、コピーするファイルを全て上書きしたいときってありますよね。

そんな時に・・・

$ ls 
test  test1  test2  test3  test4  test_dir

$ cp test? test_dir 
cp: overwrite ‘test_dir/test1’?
cp: overwrite ‘test_dir/test2’?
cp: overwrite ‘test_dir/test3’?
cp: overwrite ‘test_dir/test4’?

※test_dirはディレクトリ、そのほかはファイルです。

りょーへー
りょーへー

いやいや。毎回上書きするかどうか聞かんでもええし!
まぁ rmコマンドの時みたいに-f つけたらいけるやろ。

$ cp -f test? test_dir 
cp: overwrite ‘test_dir/test1’?
cp: overwrite ‘test_dir/test2’?
cp: overwrite ‘test_dir/test3’?
cp: overwrite ‘test_dir/test4’?

 

りょーへー
りょーへー

な、なんでや・・・・


とりょーへーみたいになった人、いますよね?

alias がついているのが原因

ディストリビューションにもよりますが、cpコマンドには初めからaliasがつけられています。
alias コマンドでcpを調べるとわかります。

$ alias cp 
alias cp='cp -i'

つまりcpコマンドには -i オプションが常につけられていることになります。
-i オプションは上書きの前に確認しますよーってやつなんです。
なので、cpコマンドを叩くと-iが自動的に付加され、-fを付けても-iオプションの方が勝ってしまうので、どうやっても上書きを尋ねられます。

aliasを無視する方法

りょーへー
りょーへー

じゃあそのaliasを削除すればええんか?

いやいや、そこまでする必要はありません。
ちゃんとaliasを無視できるような打ち方があります。

$ \cp -f test? test_dir 
$

そうです。cpコマンドの前でエスケープすればいいだけです)
エスケープは\(または / )でできますよ。

もちろんcpコマンド以外でもaliasを無視したい場合はエスケープすればaliasがついているコマンドでも使えます。

結論

aliasを無視したいときはエスケープしよう!!

LInux IT
りょーへーをフォローする

りょーへーぶろぐ