LoginSignup
6
4

More than 3 years have passed since last update.

cp コマンドで上書きの警告が出るときは先頭にバックスラッシュをつけると警告が消える

Last updated at Posted at 2019-10-03

Linux 環境で cp コマンドを使ってファイルを上書きしようとしたときに -f オプションを付けても警告が出る時がある。

以下の通り、実験してみる。環境は、CentOS 7.7 であり、シェルは Bash である。

まず、ファイルを 2 つ作成する。

# echo "aaa" > a.txt
# echo "bbb" > b.txt

何もオプションを付けずに cp コマンドを実行すると警告が出る。

# cp a.txt b.txt 
cp: overwrite ‘b.txt’? n

-f または、--force オプションを付けて cp コマンドを実行しても警告が出る。

# cp -f a.txt b.txt 
cp: overwrite ‘b.txt’? n
#

この警告は、一般ユーザで実行したときには発生しないが、roor アカウントで操作しているときに発生するはずである。

原因は、デフォルトの alias の違いにある。

まず、一般ユーザで alias コマンドを実行した結果がこれである。

$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .*'
alias la='ls -la --color'
alias ll='ls -l --color'
alias ls='ls --color'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

次に、root ユーザで alias コマンドを実行した結果がこれである。

# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

一般ユーザの結果と root ユーザの結果を比較すると、唯一の違いがこの cp -i という alias である。

alias cp='cp -i'

man cp コマンドの文章を引用すると -i オプションの説明は以下の通りである。

-i, --interactive
       prompt before overwrite (overrides a previous -n option)

これはつまり、root ユーザで cp コマンドを実行する際には、明示的に -i オプションを付けなくても、-i オプションが付与されているということである。そして、-i オプションは、常に上書き時に警告を出すのである。

そこで、この alias が付与されている環境下で上書きの警告を出さないようにしたいときはどうすればよいのかというと、cp コマンドの前にバックスラッシュを付与すればよいのである。

# \cp a.txt b.txt
#

今度は何も警告が出なかった。root ユーザなので本来 -f オプションを付ける必要もない。

# cat a.txt 
aaa
# cat b.txt 
aaa

ファイル b.txt の中身が書き換わっている。

ちなみに、このコマンドの先頭にバックスラッシュをつけるという方法は、alias を無効にするための方法であるため cp コマンド以外の全てのコマンドで適用可能である。先ほど提示した alias を例に取ると、mv コマンドや rm コマンドでも同様のことが適用できる。

以上。

6
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4