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

よろしくお願いいたします。

A 回答 (5件)

> これって、shellに組み込まれてるときじゃないんですか?


> 独立なコマンドっていうのがよくわからないんです。

質問に「shellに組み込まれたものではなく、独立なコマンド」とあったので、
シェルにビルトインされたコマンドというものを理解しているのだと思ってました。

chamax さんが「shellに組み込まれてるとき」と表現しているのは、シェルスクリプトで
使うとき、ということですね? ビルトインコマンドについては No.4 の ranx さんの
回答以上に書く事は無いです。

質問の趣旨が「コマンドプロンプトから test コマンドを使うことがあるか?」と
いうことであれば、まず、無いと答えておきます。

test コマンドに出来ることは、ファイルの存在や属性に対するチェックかシェル変数の
内容の比較だけなので、ls コマンドと echo コマンドがあれば用が足りてしまいます。
標準出力への応答が無いので、ls や echo と比べるとコマンドプロンプトから使うには
使いづらすぎます。


> ほんとごめんなさい。

質問サイトなんですから、質問したり補足を要求するのに申し訳なく思う必要はないです :-)
回答が的を射てないのであれば、何度でも補足をどうぞ。
回答する自信が無くなれば、そのときに撤退します。

# ちょっと、自信無くなってきた (^^;
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2002/01/09 17:01

a-kumaさんの回答で完璧だあ、と思ったのですが、補足を見ると、まだご不満のようですね。



シェルスクリプトに書かれたコマンド = ビルトインコマンド と思っていませんか?

シェルはその種類により、様々な機能を持っていて、簡単なことならばシェルのプログラム
の内部でやってしまいます。(シェルのプログラムと書いたのは、シェルスクリプトのこと
ではありません。シェルスクリプトを読んで実行するプログラムのことです。シェルスクリプト
は単なるテキストです。)これをビルトインコマンドと言います。とは言っても、全ての処理を
シェルの内部で処理できるわけでもないので、シェルプログラムは、シェルスクリプトの記述に
したがって、外部のコマンドを起動します。シェルスクリプトの中に書かれていたとしても、
これはあくまで外部のコマンドです。

で、testコマンドですが、これは私の想像ですが、やはりシェルスクリプトの中で使うことを
目的として作られたものだと思います。UNIXは、ある程度今でもそうですが、初期のものほど、
一つのプログラムに多くの機能を持たせるより、多くのプログラムの機能を組み合わせて使う
ことを考えて作られているように思います。そんなことから、当初はビルトインコマンドでは
なく、外部に独立して作られたのではないでしょうか。現在では、これをビルトイン機能で
行うシェルも多く紛らわしいですが、やはりa-kumaさんのおっしゃるように、区別する必要は
ないと思います。
    • good
    • 0

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



[ と全く同じですよ。例えば、sh 系だと

if test -f xxx.dat
then
  cat xxx.dat
fi

というふうに。後、あまり使う場面はありませんが、終了状態だけがあれば良い、という
場合には

test -f xxx.dat
stat=$?

とか。でも、この場合でも [ は、全く等価に利用できて、

[ -f xxx.dat
stat=$?

でも全く同じです。

[ コマンドは、if や while の条件節に書くと、プログラム言語っぽくなって
ちょっと読みやすくなるだけで、test と全く同じです。

この回答への補足

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

補足日時:2002/01/09 16:15
    • good
    • 0

UNIXでも色々あるので、どのUNIXのどのバージョンですか?



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

なんか、かっこが多くて分かり難いですが、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コマンドの使い方を教えてください。

補足日時:2002/01/09 15:49
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QCGIからのUNIXコマンドを防止する方法

telnet.cgi を使うと、CGIからUNIXコマンド(rmなど)が自由に使えてしまいます。

この利用を防止する方法はないですか。

/usr/bin /usr/local/bin フォルダのアクセス権を700にしてみたのですが、これではhttpdなど他のものまで、影響を受けてしまいました。

Aベストアンサー

group examを例にすると
-rwx---rwx hana:exm test.pl
には、akira:examな人はアクセスできません。
そんな感じでいいんじゃないんですか?
特定のグループを排除したいなら
ただ、この設定ではhana:examな人はあくせすできます。examに所属していても
hana:examもきにくわないなら007とか
まぁ~manでも読んでください
試せば3分で分かることですし

Q必須のUNIXコマンドとは

ある事情で、ゴールデンウィーク明けまでにUNIXコマンドをある程度使えるようにならなければならなくなりました。

一応、コマンド集は買ってきたのですが、これを全てマスターするのはちょっと無理っぽいです。

そこで、とりあえず、このコマンドは知っておけ、というのがありましたら教えていただけませんでしょうか。

用途は主にLANの管理で、webサーバ、メールサーバ、ちょっとしたシェルスクリプトの保守と行ったところです。

MS-DOSのバッチファイルとかの経験はありますので、コマンドラインに対する拒絶反応とかはありません。
また、ディレクトリ構造とかマウントとかタスクとかログインとかの概念については理解しているつもりです。

細かいオプションとかパラメータについてはコマンド集を見たり、MANで探ったりします。

Aベストアンサー

よく使うコマンド・・・思いつくものを挙げます。これ以外が思いつかないということは・・・あまり使ってないんでしょうね。


cd (ディレクトリの変更)
ls (ファイルの表示 ls -alでよく使う)
less (ファイルの内容閲覧)
vi (ファイルの作成)
chmod(パーミッションの変更)
touch(空ファイル作ったり、更新日時を変える)

QUNIX コマンドで 複数ファイルの文字列置換の方法

UNIX初心者です。
UNIXのコマンドで複数のファイルの中身を同時に置換できないでしょうか?

自分で探しては見たのですが、"sed"しか見つかりません。
sed 's/aaa/AAA/g' <file1> file2
という方法では、ひとつずつなので、時間がかかってしまいます。
UNIXコマンドには、ありませんでしょうか。
また、無ければどのような知識が必要でしょうか。
私の知識が少ない為、内容が判りにくいとは思います。
すみませんが、よろしくお願いします。

Aベストアンサー

シェルスクリプトを書くのが普通だと思います。
例えばCシェルならば

foreach f ( `ls` )
 sed 's/aaa/AAA/g' < ${f} > ${f}_changed
end

という具合にすれば、カレントディレクトリの全ての
ファイルについて、変換して新しいファイルを作ります。

#Cシェルのスクリプトなんか「普通」じゃないという
#人もいますが、あしからず。

Qshell の time コマンドの結果をファイルに出力する方法(AIX)

AIX4.3 の環境でプログラムのパフォーマンスを確認しようと思っています。「time XXXXX 2> perform.log」で標準エラー出力をファイルに書き出そうとしているのですがうまくいきません。time コマンドのパフォーマンス結果は標準エラー出力に書き出されると思うのですが、リダイレクトしたファイルは何も書かれていません。画面にtime コマンドの結果が表示されるだけです。time コマンドではなく通常のエラーは標準エラー出力からファイルに書き出すことはできます。原因がわからずこまっています。よろしくお願いします。

Aベストアンサー

 お使いのシェルの仕様にもよると思いますが、

(time XXXX) 2> perform.log

でどうでしょうか?
 手元の cygwin の bash ではうまく行きました。
 time の出力は、コマンドではなくシェル自身の出力なので、() で括ってやらないとリダイレクトできないものと思われます。

QUNIX環境で、DOSでいう"treeコマンド"を実現するためには?

DOSでは、tree /Fでディレクトリ・ファイルの列挙ができますが、
UNIX環境でカレントディレクトリ配下の列挙できるものはないでしょうか?

それが、標準コマンドでもフリーライブラリでもかまわないのですが・・。

ご存知な方いらっしゃいましたら教えてください。

Aベストアンサー

ズバリそのままのモノがあります。

参考URL:http://mama.indstate.edu/users/ice/tree/


このカテゴリの人気Q&Aランキング

おすすめ情報