No.303


【CentOS】copyコマンドの上書き確認

forceオプションをつけても確認されちゃう…

 CentOS 6でcpコマンドを実行する際、確認をスキップするために-fオプションをつけて実行した。

cp -f hoge fuga

 そしたら

cp: overwrite 'fuga' ?

 と聞かれてしまった。

 日本語環境だと

cp: 'fuga' を上書きしてもよろしいですか(yes/no)?

 が出る。

 forceオプションつけてるのに何で?と思ったが、エイリアスが悪さしてた。

# alias
...
alias cp='cp -i'
...

 -iオプション。つまりinteractive指定されているので必ず確認が行われてしまうというわけだ。


解決方法①:yesコマンドを使う

 yesコマンドを使えば解決するけど、そもそも確認を求められている時点でスマートじゃない。あと、ディレクトリコピーとかだとものすごい量のテキストがコンソールに出力されてイライラする。

yes | cp -f a b

解決方法②:エイリアスを無効にする

 コマンドの先頭に\をつけるとエイリアスではなくコマンド本体を実行できる。これがスマートというか本来の姿。

\cp -f a b

OSバージョン

 この現象は「CentOS 5」と「CentOS 6」でのみ確認している。
 「CentOS 7」はエイリアスの設定がないので大丈夫。