• ベストアンサー

UNIXのファイルタイプp(パイプ)って何?

solaris 2.6 初心者です。 #cp -rp xxx ./ でコピー中に(恐らく)このファイルタイプの所で止まってしまいます。 丸ごとコピーしたいものが、dir階層が深くて広いので、困っています。 どなたか、良きアドバイスをお願いします。

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

  • ベストアンサー
回答No.3

コピーしたいという目的は達成されたようなので、パイプについてひとつ。 パイプというのは、UNIX内の二つのプロセス間でデータを送れる通信路のことです。 基本的にはパイプごとにメモリを用意して、 プロセスの一つがそこにデータを書き込んだら、 別のプロセスが読み出すときに書き込んだ順に読めるようになっています。 プロセス間にパイプを一旦作ってしまうと、 読み書きはファイルの読み書きとまったく同じにできますので、 シェルが "|" を解釈してパイプを作ったあと二つのコマンドを起動すると、 標準出力に書いたものが、別のコマンドの標準入力から読めるというわけです。 で、名前付きパイプというのは、 誰も接続していないパイプがあらかじめ作られていて、 ファイルシステム中にあたかもファイルのように名前をつけて置いてあるものです。 あるプロセスがそのファイルを書き込みでオープンし、 別のプロセスがそのファイルを読み出しでオープンすれば、 シェルがパイプを用意しなくても無関係のプロセスどうしで通信できることになります。

zgoo
質問者

お礼

ありがとうございます。 とてもわかりやすいご説明でした。 このファイルが、file コマンドでFIFOと表示されたのもなんとなく理解できました。

その他の回答 (2)

  • marine
  • ベストアンサー率34% (23/66)
回答No.2

パイプと言うの |(縦棒、¥の上にあるやつ)です。 通常、以下のように使いますよね。 #ls -la /hogehoge | more コマンドの入力と出力を、つなげるものです。

zgoo
質問者

お礼

ありがとうございます。 ただ、コマンドをつなげるパイプ記号と、ファイルタイプの名前付きパイプにはどんな関係があるのかわかりません。 これらに共通したパイプという言葉の概念だけでも知りたいので引き続き勉強したいと思います。

  • nekomilk
  • ベストアンサー率24% (20/83)
回答No.1

止まる原因が、よくわかりませんが、 (ちなみに、cp -rpv で、コピーの進行状況を見れます) 別の、所有者・権限・階層丸ごとコピーの方法を。 JF文書のTipsの中にあったやつですが、 (cd /source && tar cf - . ) | (cd /dest && tar xvfp -) で、/sourceから/distへ丸ごとコピーできます。 初心者ということなので、別の安全な場所で 実験してから、やってみた方がいいと思います(^^; 私は、この件に関して、責任は一切負いません・・。(笑)

参考URL:
http://www.linux.or.jp/JF/JFdocs/Tips-HOWTO.txt
zgoo
質問者

お礼

ご回答ありがとうございました。 cpのオンラインマニュアルに 「-R パイプが読まれるのではなく複写される、という点を除いて-rと同じです。」 という記述を見つけ、 cp -R -p で実行したところ、うまくいきました。 (パイプが何者かは、わからずじまいです) 手元の入門書3冊より、オンラインマニュアルをあたる方が得策だということがわかりました。 今後はもう少し調べてから質問しますのでよろしくお願いします。

関連するQ&A