UNIX コマンドにおける # や円マークの意味と使い方

このQ&Aのポイント
  • UNIX コマンドにおける # や円マーク、セミコロンマークの意味と使い方について教えてください。
  • 質問文章で紹介されたコマンドの # 、円マーク、セミコロンマークの使い方を詳しく教えてください。
  • パイプやリダイレクトの意味と使い方は理解していますが、複合コマンドについて詳しく教えてください。
回答を見る
  • ベストアンサー

UNIX コマンドにおける # や円マークの意味

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

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

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

1. このケースでは、おそらくはそうです。 が、本当にシェルスクリプトでのコメントの場合もあります。 2. \には「続く文字との組合せで特別な意味を持たせる」「本来特殊な意味を持つ文字の前に置いて、その意味を無効にする」というのが主な役割りです。 通常、 ;は、複数コマンドを連続実行する際の、各コマンドの区切りとして機能します。 そこで、それを無効にしてセミコロンという文字として使いたい時は ・バックスラッシュ(円マーク)でエスケープする \; ・引用符で文字列にする ';' ";" 等の方法を使います。 ここから先はfindコマンドの話になります。 findコマンドでは -exec 「コマンド」 として見つかったファイルやディレクトリに対して「コマンド」を実行できます。 このときに、どこまでが「コマンド」かを示すために セミコロンを使います。 ところが、 ; そのままではfindコマンド全体の終了と解釈されてしまうので、\; などを使います。 3. このケースでは、1行に書いて問題ありません \の直後に改行がある場合は、「\改行」をスペースに置き換えたようなものだと考えてください

VT250F
質問者

お礼

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

関連するQ&A

  • 円マーク・円マーク…

    NASのフォルダの画面へアクセスする場合に、 IPアドレスの前にどうして2つの円マーク(\\)を付けてアドレスバーへ入力するんでしょうか? (円マークの意味が分かりません。) 宜しければ、教えて下さい。

  • コマンドプロンプトの警告について

    windows7のコマンドプロンプトで表示される警告について質問です。 コマンドプロンプトで以下のコマンドを実行しました。 sort /+10 < aaa.csv > bbb ※「aaa.csv」のデータ量は200万行ぐらいです その際、以下のような警告がでましたが、どのような意味なのでしょうか? また、「sort」処理は正常に終わっているのでしょうか? "警告: 通常、大きな並べ替えのリダイレクト入力の使用は並べ替えられる入力ファイルを直接指定するよりも遅くなります。" よろしくお願いします。

  • linuxでwindowsの論理パーティションをマウントできますか?

    linuxとwindowsをデュアルブートしています。 windows用のパーティションは、 c;(hda1),d;(hda2)e;(hda3)f;(hda4) で、hda2~4は一つの拡張パーティション内に収まっています。 そこで、Windowsパーティションがマウントされるディレクトリを作り mkdir /mnt/win rootとしてシェルプロンプトで次のコマンドを入力 mount -t vfat /dev/hda1 /mnt/win すれば、hda1はマウントできますが、hda2~4はできません。 何とかマウントする方法はないでしょうか?

  • sortコマンドのオプションなどの意味

    シェルスクリプトに次のようなsortコマンドが出てきました。 sort -t, /export/home1/aaa -u -k 1 -o $CSV_OUTFILE/$OUTPUT_FILE \     $CSV_OUTFILE/$INPUT_FILE_AAA $CSV_OUTFILE/$INPUT_FILE_BBB (aaaとAAAとBBBは変えていますが、あとはまったくもとのままです。) 行の最後の\は行継続の意味でよろしいでしょうか。 -t の直後に "," (カンマ) がありますが、これは「(空白区切りではなくて)カンマ区切り」という意味でよろしいですか。 (-tとカンマの間に空白は要らないのでしょうか。カンマはシングルクォーテーションで囲まなくてよいのでしょうか。) /export/home1/aaa というディレクトリの指定がありますが、これはなんのためでしょうか。 -u は同一行は重ねて出力しないという意味でよろしいでしょうか。 (キーが同じ行は重ねて出力しないという意味ではないですよね?) -k 1 の意味がわかりません。(ソートするキーの指定?) インプットファイルの指定と思われるものが2つありますが、入力ファイルは複数でも構わないのでしょうか? 以上ですが、わかるものだけでも結構です。 よろしくお願いします。

  • Linux(Ubuntu)への端末コマンド 

    linuxでのコマンド入力についての質問です。 端末で sudo を使うとパスワードを求める文字が同、行下に(改行後)でてきますが、パスワードを入力しようにも何も動きません。sudo コマンドを使用したときの入力方法 おしえてください。(sudoコマンドの意味は理解できましたが その後はわかりません)

  • UNIXの『 wc -c 』コマンドの文字数表示について

    Kornシェルスクリプト内の処理で、 「 wc -c file1(※) >> file2 」 ※「abcdefg」1行7文字を記載。  を実行し、file2のファイルを見たところ、数値『 8 』が表示されてました。 上記のうちで「abcdefg」は7文字なので、file2には数値『 7 』が入力されると思うのですが、なぜ上記のコマンドの場合、出力結果が文字数より 1 大きい数値が表示されるのでしょうか? 皆様、よろしくお願い致します。

  • bashでの複数行のコマンドのリダイレクト

    Linux上のbashを使用して、複数行のコマンドの結果を一度にリダイレクトしたいと思います。 思いついた方法が、 #!/bin/bash cat << EOF >> ./test.log cat /etc/fstab cat /etc/inittab cat /etc/modprobe.conf EOF といった方法なのですが、これですとそれぞれのコマンドの結果ではなく、 単に cat /etc/fstab cat /etc/inittab cat /etc/modprobe.conf と言った出力結果がtest.logに出力されてしまいます。 上記のような複数のコマンドの結果を一度にリダイレクトする方法は無いでしょうか? cat /etc/fstab >> ./test.log cat /etc/inittab >> ./test.log cat /etc/modprobe.conf >> ./test.log と言った方法は避けたいと思います(実際には何10行と言うコマンド結果を出力したいので)

  • コマンドプロンプトでの操作の意味

    先の質問どおり、パソコンがなにかと調子が悪いのでコマンドプロンプトを1から行い、修復までたどり着きました。(皆様ありがとうございます) 100%完了したのですが長い時間が過ぎた挙げ句、エラー0x80240021 dismが失敗しました 操作は実行されませんでした................という結果でした。 ここでお尋ねしたいのですが、コマンドプロンプトの途中で席を立っている間にパソコンがスリープ状態になっていましたが、これによって結果が正しく出ないということはありますか。やり直してみたほうがよいのでしょうか。 スリープは影響ないのならば次の段階に進み、dism /online /cleanup-image /startcomponentcleanupと入力するようですが、今までみたいにC:Windows¥system3>のところに上記を入力するという意味ですか。 これを実行するとファイルが初期状態になってしまわないですか。それが心配でとどまっています。 知識がないのでもしそうなればお手上げなのでちょっと考えたいと思います。 ただ、障害を除くだけならよいのですがどうでしょうか。 Windows8.1です

  • KNOPPIX MBRのバックアップについて

    (「日経Linux WindowsからLinuxに乗り換えよう」という本を見ながら手順に沿ってやっていたところで詰りました。) 1CD LinuxのKNOPPIXでMBRのバックアップを取りたいのですが…。 手順通り、まずフロッピーをフォーマットしました。 その次に、ターミナル画面を出して、MBRのバックアップをするコマンド $ dd if=/dev/hda of=/mnt/floppy/MBRbakbs=512 count=1 と入力すると出来るらしいんですが実際入力すると、 dd:opening ~/dev/hda': 許可がありません と表示され、バックアップされないようです。 (都合上、一部別の記号を代用しています。) この場合どうすればいいのでしょうか? どこに問題があるのでしょうか?

  • ¥マークがダブります。

    Private Sub CommandButton4_Click() Dim varRag As Variant Dim myArray As Integer varRag = Array(TextBox1, TextBox2) If TextBox1 <> Empty Then '初めて入力される場合は、最初の行を選択します。 If Range("A16") = Empty Then Range("A16").Select TextBox1 = TextBox1.Value For myArray = 0 To 1 With Selection .Offset(, myArray) = varRag(myArray) End With Next myArray Else '2回目以降の入力であれば最終行の1行次の行を選択します。 Range("A65536").End(xlUp).Offset(1).Select For myArray = 0 To 1 With Selection TextBox1 = TextBox1.Value TextBox2 = "¥" & TextBox2.Value .Offset(, myArray) = varRag(myArray) End With Next myArray End If 'テキストボックスをすべて初期化します。 TextBox1 = "" TextBox2 = "" TextBox1.SetFocus Else 'テキストボックスに名前を入力しないで登録を押した時に出すエラーメッ セージです。 MsgBox "科目を入力して下さい。" End If End Sub ********************************************************************* 上記のコードですが、ワークシートに転記すると、¥マークが二つ表示されま す。 '2回目以降の入力であれば最終行の1行次の行を選択します。 Range("A65536").End(xlUp).Offset(1).Select For myArray = 0 To 1 With Selection TextBox1 = TextBox1.Value TextBox2 = "¥" & TextBox2.Value            ↑         ↑ 上記部分を消すと、テキストのみの内容で、¥マークは表示されません。どこ が間違っているのでしょうか。