人生のプチ美学を教えてください!!

お世話になっております。
Unix の表現上の#と¥(円)、セミコロンマークの意味と使い方を教えて下さい。

例 # find . -not -name xxxx -exec cp -v -p --parents {} /mnt/hda1/test/ \;

1.上記の時 # は root によるコマンドプロンプトなので打ち込む必要はないでよいでしょうか

2.上記で¥(円)マークと;(セミコロン)マークの意味は何でしょうか。
  ;(セミコロン)マークは行の終わりとあったのですが、入力する必要がありますか。

3.以下で¥(円)マークは表現上2行になるから記述してあるだけで、
  1行で入力できるなら¥マークを入力しなくてもよいのでしょうか
  それともコマンドラインで2行になるコマンドなので入力してエンターを押し、
  コンソールに2行だと認識させるべきものなのでしょうか
   # nice -5 /usr/bin/pkg - 65536 > \
   /mnt/hda1/hoge

パイプやリダイレクトの意味と使い方は知っているのですが、
複合コマンドは今一つ分かりません。
教えて下さい。よろしくお願いします。

A 回答 (1件)

1. このケースでは、おそらくはそうです。


が、本当にシェルスクリプトでのコメントの場合もあります。

2. \には「続く文字との組合せで特別な意味を持たせる」「本来特殊な意味を持つ文字の前に置いて、その意味を無効にする」というのが主な役割りです。
通常、 ;は、複数コマンドを連続実行する際の、各コマンドの区切りとして機能します。
そこで、それを無効にしてセミコロンという文字として使いたい時は
・バックスラッシュ(円マーク)でエスケープする \;
・引用符で文字列にする ';' ";"
等の方法を使います。

ここから先はfindコマンドの話になります。
findコマンドでは -exec 「コマンド」 として見つかったファイルやディレクトリに対して「コマンド」を実行できます。
このときに、どこまでが「コマンド」かを示すために セミコロンを使います。
ところが、 ; そのままではfindコマンド全体の終了と解釈されてしまうので、\; などを使います。

3. このケースでは、1行に書いて問題ありません
\の直後に改行がある場合は、「\改行」をスペースに置き換えたようなものだと考えてください
    • good
    • 1
この回答へのお礼

詳しい説明ありがとうございました。
おかげで、大きく理解が進みました。
ありがとうございました。

お礼日時:2011/12/23 04:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報