• ベストアンサー

教えてください

UNIXのtestコマンド([コマンド、shellに組み込まれたものではなく、独立なコマンド)の用法(オプションによる差)って何でしょうか?教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.5

> これって、shellに組み込まれてるときじゃないんですか? > 独立なコマンドっていうのがよくわからないんです。 質問に「shellに組み込まれたものではなく、独立なコマンド」とあったので、 シェルにビルトインされたコマンドというものを理解しているのだと思ってました。 chamax さんが「shellに組み込まれてるとき」と表現しているのは、シェルスクリプトで 使うとき、ということですね? ビルトインコマンドについては No.4 の ranx さんの 回答以上に書く事は無いです。 質問の趣旨が「コマンドプロンプトから test コマンドを使うことがあるか?」と いうことであれば、まず、無いと答えておきます。 test コマンドに出来ることは、ファイルの存在や属性に対するチェックかシェル変数の 内容の比較だけなので、ls コマンドと echo コマンドがあれば用が足りてしまいます。 標準出力への応答が無いので、ls や echo と比べるとコマンドプロンプトから使うには 使いづらすぎます。 > ほんとごめんなさい。 質問サイトなんですから、質問したり補足を要求するのに申し訳なく思う必要はないです :-) 回答が的を射てないのであれば、何度でも補足をどうぞ。 回答する自信が無くなれば、そのときに撤退します。 # ちょっと、自信無くなってきた (^^;

chamax
質問者

お礼

ありがとうございました

その他の回答 (4)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.4

a-kumaさんの回答で完璧だあ、と思ったのですが、補足を見ると、まだご不満のようですね。 シェルスクリプトに書かれたコマンド = ビルトインコマンド と思っていませんか? シェルはその種類により、様々な機能を持っていて、簡単なことならばシェルのプログラム の内部でやってしまいます。(シェルのプログラムと書いたのは、シェルスクリプトのこと ではありません。シェルスクリプトを読んで実行するプログラムのことです。シェルスクリプト は単なるテキストです。)これをビルトインコマンドと言います。とは言っても、全ての処理を シェルの内部で処理できるわけでもないので、シェルプログラムは、シェルスクリプトの記述に したがって、外部のコマンドを起動します。シェルスクリプトの中に書かれていたとしても、 これはあくまで外部のコマンドです。 で、testコマンドですが、これは私の想像ですが、やはりシェルスクリプトの中で使うことを 目的として作られたものだと思います。UNIXは、ある程度今でもそうですが、初期のものほど、 一つのプログラムに多くの機能を持たせるより、多くのプログラムの機能を組み合わせて使う ことを考えて作られているように思います。そんなことから、当初はビルトインコマンドでは なく、外部に独立して作られたのではないでしょうか。現在では、これをビルトイン機能で 行うシェルも多く紛らわしいですが、やはりa-kumaさんのおっしゃるように、区別する必要は ないと思います。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

> testコマンドの使い方を教えてください。 [ と全く同じですよ。例えば、sh 系だと if test -f xxx.dat then   cat xxx.dat fi というふうに。後、あまり使う場面はありませんが、終了状態だけがあれば良い、という 場合には test -f xxx.dat stat=$? とか。でも、この場合でも [ は、全く等価に利用できて、 [ -f xxx.dat stat=$? でも全く同じです。 [ コマンドは、if や while の条件節に書くと、プログラム言語っぽくなって ちょっと読みやすくなるだけで、test と全く同じです。

chamax
質問者

補足

回答ありがとうございます。 たびたびすみません。 これって、shellに組み込まれてるときじゃないんですか? 独立なコマンドっていうのがよくわからないんです。 ほんとごめんなさい。

  • Spur
  • ベストアンサー率25% (453/1783)
回答No.2

UNIXでも色々あるので、どのUNIXのどのバージョンですか? No.1の方の言うように、私だったら「man」をまずは読んでみますよ。 それでも分からなければ、OSのマニュアルを開いたり、インターネットで検索してみます。 No.1の方の教えていただいたサイトの説明で充分かと思います。 その補足でさらに使い方を聞かれている状況がわかりません。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

なんか、かっこが多くて分かり難いですが、test コマンドのオプションについて 知りたいんですか? -f file だと、file が通常ファイルとして存在するなら真を返す、とか。 であれば、man を読むのが一番の近道です。参考URLには GNU の test の man ページの URL を紹介しておきます。 また、test がシェルのビルドインかどうかはあまり関係がありません。基本的には 同じ物です。 OS によっては、実行ファイルの test がなかったり、昔の OS だとシェルのビルドイン になってなかったり、[ が、ビルドインではなくシンボリックリンクだったり、いろいろ あります。

参考URL:
http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/test.1.html
chamax
質問者

補足

testコマンドの使い方を教えてください。

関連するQ&A

  • Visula Basic6.0からUNIXサーバーのシェルの起動について

    VB6.0からUNIX上のshellを起動したいのですが、良い方法を教えて下さい。 WindowsNT/2000では、以下の方法を考えていますが、Win98ではRSHコマンドが使用できないため困っています。 WindowsNT/2000 shell関数でPC上のバッチファイルを起動。 バッチファイルからRSHコマンドを使用しUNIXのshellを起動。

  • BATファイルでshellのreadのようなコマンドは無いのでしょうか?

    BATファイルでUNIXのshellのreadコマンドのような機能を探しています。 ヘルプ等で探してみたのですが見つかりません・・・・ 存在するのでしょうか??

  • UNIXには直接ファイル操作コマンドありますか?

    本当に困ってます(T_T) UNIXのShell Scriptでテキストファイルの一部(何行か)を削除したいです。リダイレクト機能とか使わないで、直接ファイルから削除することはできますか? UNIXって直接ファイル編集するコマンド聞いたことないですが、そういうコマンドありますか?

  • Linuxのコマンド「history」で実行日時を知りたい

    Linux(unix)のコマンド「history」で、これまでに実行したコマンドの実行日時を知りたいのですが、オプションを付ける事で可能でしょうか?

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------

  • unixでのpingコマンド

    恐れ入ります。unixでのpingコマンドですが、 192.168.x.1から192.168.x.100まで範囲指定をしてpingを打つようなオプションはありませんでしょうか? 調べているのですが、いまいち理解できず、困っております。

  • findコマンドのオプションについて

    UNIXやLinuxの find コマンドの -noleaf オプションの意味を教えてください。 「manを見ただけではよく理解できませんでした・・・」 すみませんが、よろしくお願い致します。

  • phpのshell_exec関数の動作に関する質問です。

    phpのshell_exec関数の動作に関する質問です。 環境はFreeBSD7.1 php5.2.13です。 もともとperlスクリプトtest.cgiがあって、 /path/test.cgi filea fileb (以後これをコマンドラインという) というコマンドラインが正常に実行されることが確認済みです。 このコマンドラインが実行されるとfilebの内容が変化します。 次にphpスクリプトからコマンドラインを実行するために test.phpスクリプトの途中に、 shell_exec("/path/test.cgi $filea $fileb"); と書きました。 (test.cgiではperlライブラリを読み込んでいます。 phpには同等のライブラリがないためにやむを得ずこうしています。) ところがtest.phpを(ブラウザから)実行しても コマンドライン実行後に期待される$filebの変化がありません。 つまりコマンドラインが実行された形跡がないのです。 test.phpスクリプトの$filea, $filebが正しく変数展開されていることは確認済みです。 FireFoxブラウザから見るとtest.phpスクリプトは特にエラーもなく正常に実行されているように見えます。 質問 1 正常に実行できるコマンドラインをphpのshell_exec関数で実行できない理由としてどのようなことが考えられるでしょうか。

    • ベストアンサー
    • PHP
  • Linux、unix、シェルスクリプトの基礎知識、コマンドについて

    会社でteratermを使ってコマンドベースの仕事をする機会があるため、コマンドやシェルスクリプトについて理解したいと考えています。 そこで疑問がわいてきたため、何点か質問があります。 1)teratermでtelnetで接続してコマンドを打つときはunixのコマンドですか?linuxのコマンドですか? 2)unixとlinuxで簡単なコマンドレベルでの差は無いものと考えて大丈夫でしょうか? 3)勉強するならunix、linuxどっちがお勧めですか? (今のところ参考書として、独習linuxか独習unixを買って勉強しようと思っています。他にお勧めの参考書があれば教えてください。) 4)シェルスクリプトを家でも作成してみたいのですが、ubuntuをインストールして端末上で操作し、作成して試すことはできるのでしょうか? (お勧めの参考書があれば教えてください。) 長くなってしまいましたが、よろしくお願いします。

  • DOSコマンドのダブルクォーテーションの扱い

    DOSコマンドでダブルクォーテーションを検索し、 リダイレクションをすることが出来なくて困っています。 例えば findstr "\"!" a.txt は出来ますが findstr "\"!" a.txt >b.txt とするとリダイレクションが出来ません。 grepも同じようです。 またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、 それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか? unixのshellをDOSコマンドに移植しています。 DOSコマンドの参考Webもあまり見つからなくて困っています。 もし参考になりそうなWeb等ありましたら教えてください。