• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux初心者です。cpコマンドの使い方について質問させてください。)

Linux初心者のためのcpコマンドの使い方

このQ&Aのポイント
  • Linux初心者のためのcpコマンドの使い方について解説します。
  • ディレクトリやファイルのコピーが簡単に行えるcpコマンドの使い方について説明します。
  • 隠しファイルを含めてディレクトリのコピーを行う方法について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

cp dirA/{.*,*} dirB マニュアルを読めば、cpには 複数ファイルを指定してディレクトリへコピーする、という書式があることがわかります。 それに従えば (1) cp dirA/.なんたら1 dirA/.なんたら2 ... dirA/かんたら1 dirA/かんたら2 ... dirB とコピーしたいファイルを列挙して、最後にコピー先のディレクトリを指定、となります。 これは、ファイルが増えると面倒です。 そこで、シェルには、特殊な記法を使ったときに、それに合致するファイル名一覧に変換する機能があります。 その一つが 任意の文字列に一致する * です。 この置換はコマンドに渡す前に行われます。cpは、 *が使われたかどうか等は知りませんし知る必要もありません。 そこで、(1)を変形させていくのですが、御存じの通り、 .で始まるファイルは * にマッチしません。そこで、 .で始まるファイルとそうでないものとに分けた結果が1行目です。{}はカンマで区切ったいずれかにマッチします。 *.{h,cpp} として、C++のソースが対象、といった使い方をします。 シェルや設定によっては、*が.で始まるファイルにマッチしたり、より高度なパターンがあったりしますが、比較的一般に使えるやりかたを紹介いたしました。

jshannon9
質問者

お礼

素早いご返答ありがとうございました。 ワイルドカードの使い方が勉強不足で 初歩的な質問になってしまいましたが、 詳しい説明ありがとうございました。

その他の回答 (2)

noname#112773
noname#112773
回答No.2

> cp dirA/* dirB とすると、隠しファイルがコピーされず、 bashの組み込みコマンドshoptで設定しておけば「*」の指定で隠しファイル(ドットファイル)も対象になりますので、cpコマンド部分は一文で済ませることができます。 たとえば以下のように試してみてください。 # shopt -s dotglob <-- ドットファイルを含む指定を行なう(-s =set)。 # cp dirA/* dirB # shopt -u dotglob <-- ドットファイルを含む指定を解除する。(-u =unset)

jshannon9
質問者

お礼

素早いご返答ありがとうございました。 今回はshoptの設定はそのままに、ワイルドカードの組み合わせでなんとかすることにしましたが、 教えていただいた内容も大変勉強になりました。 初歩的な質問にも関わらずご丁寧にありがとうございました。

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

「man cp」と打って下さい。 コマンドのオプションが表示されるので適切なオプションを選択してください。 初心者は「man コマンド」でコマンドの使用方法覚えることか始めるのが宜しいと思います。

jshannon9
質問者

お礼

素早いご返答ありがとうございました。

関連するQ&A