Linux

【現役エンジニアが解説】linux cpコマンド使い方【便利なオプション紹介】

こんにちは、インフラエンジニアのryuです。

今回はLinuxのcpコマンドについて解説します。cpとはcopyのことで、ファイルやディレクトリをコピーするために使用します。cpコマンドを使ったことの無い方や、便利なオプションを知りたい方のために詳しく解説します。

【現役エンジニアが解説】linux cpコマンド基本的な使い方

まず、cpコマンドの基本的な使い方を解説します。

cpコマンドの基本構文

cpコマンドの基本構文はこちらの通りです。

cp test1.txt test2.txt
cp [コピー元のファイル] [コピー先のファイル]

text1.txtというファイルをtest2.txtにコピーする動きになります。コピー先のファイルが無い場合はファイルが作成されます。

実際にLinuxで確認してみましょう。

ファイルを作成して、コピーしてからファイルの中身を確認します。

以下のようにコマンドを入力してみましょう。

echo "test" > test1.txt        #test1.txtファイルを作成
cp test1.txt test2.txt         #test1.txtをコピー
cat test2.txt             #test2.txtの中身を表示
→test と表示

ちなみにファイルは相対パスで指定しております。絶対パスでも大丈夫です。相対バス、絶対パスが分からない方はこちらの記事を参考にしてください。

Linuxで動作させるとこのようになります。

cpコマンドの動作

今回の内容はこちらの動画でも紹介しています。30秒くらいで見れます。

次からは良く使用するオプションを解説していきたいと思います。

cpコマンドでファイルをディレクトリにコピー

次にファイルをディレクトリの中にコピーします。

cp test1.txt testdir/
cp [コピー元のファイル] [コピー先のディレクトリ]

実際にLinuxで確認してみましょう。

ディレクトリを作成して、そこに先ほど作成したtest1.txtをコピーします。

コマンドは以下のように入力します。

mkdir testdir                   #testdirという名前のディレクトリを作成
cp test1.txt testdir          #test1.txtをtestdirディレクトリにコピー
ls ./testdir        #lsコマンドでtestdirの中身を確認

Linuxで入力するとこのような感じになります。

cpコマンドでファイルをディレクトリにコピー

cpコマンドで良く使うオプション

cpコマンドで良く使うオプションは以下の3つです。

  • cp -r ディレクトリをコピーする
  • cp -u 保存先のファイルが新しい場合コピーしない
  • cp -v コピーの詳細を表示

では、一つずつ詳しく解説します。

cp -r ディレクトリをコピーする

まず、-rでディレクトリをコピーするオプションです。ディレクトリごとかディレクトリの中身をコピーするかは、コピー元の指定の仕方で変わります。

#ディレクトリごとコピー
cp -r testdir testdir2 
cp -r [コピー元のディレクトリ] [コピー先のディレクトリ]

#ディレクトリの中身をコピー
cp -r testdir/* testdir2 
cp -r [コピー元のディレクトリ]/*  [コピー先のディレクトリ]

*”アスタリスク”はワイルドカードといって、全ての文字列という意味です。つまり、全てのファイル名が指定されます

実際に試してみましょう。

まず、testdir2ディレクトリを作成して、先ほど作成したtestdirディレクトリをコピーします。ちなみに、testdirの中にはtest1.txtファイルが格納されています。

#ディレクトリごとコピーする
mkdir testdir2
cp -r testdir testdir2
ls ./testdir2
→testdir

#ファイルの中身だけコピーする
cp -r testdir/* testdir2
ls ./testdir2
→test.txt (testdir 先ほどコピーしたのも)

実際のLinuxではこのようになります。

cp -r ディレクトリをコピーする

ちなみに-rを付けないでディレクトリをコピーすると以下のようなエラーが表示されます。cpコマンドでディレクトリを指定する場合は必ず-rを付けましょう。

p: -r not specified; omitting directory ‘testdir’


p:-rは指定されていません。ディレクトリ「testdir」を省略

cp -u 保存先のファイルが新しい場合コピーしない

次に良く使うオプションは-uです。保存先のファイルが新しい場合はコピーしないようになります

バックアップのスクリプトに使用することが多いです。

cp -u test1.txt test2.txt 
cp -u [コピー元のディレクトリ] [コピー先のディレクトリ]

動作については、こちらの画像を見てください。

最初のcp -uでは、test2.txtの方が新しく編集されたためコピーされません。

その後、test1.txtを編集したため、test2.txtに中身がコピーされるようになりました。

バックアップをする際、古いファイルの内容を上書きしてしまうミスが無くなります。

cp -v コピーの詳細を表示

最後に紹介するのは-vです。-vはcp以外のコマンドでも詳細を表示するオプションになります。-vとはverboseの頭文字です。

こちらは、コマンド単体で使うというよりは、スクリプトを書く際に何をコピーしたか出力するために使用します。

では、使い方を説明します。

cp -v test1.txt test2.txt 
cp -v [コピー元のファイル] [コピー先のファイル]

Linuxで動作させるとこのようになります。

‘test1.txt’ – > ‘test2.txt’のように何のファイルをコピーしたのか詳細を表示してくれます。

cpコマンドまとめ

ここまで、cpコマンドの使い方やオプションを紹介してきました。cpコマンドはファイルやディレクトリをコピーするだけのコマンドですが、良く使うコマンドの1つです。ぜひ使いこなせるようになります。

Linuxのコマンド参考書

ABOUT ME
ryu
大手メーカのIT部門でインフラエンジニアやってます。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!