1 :
名無しさん@お腹いっぱい。 :
04/02/19 14:47 このコマンド凄くね? 英数字でもないのにたった一文字。 しかもシェルスクリプトとかそーいうしょぼいのではなくて、 ちゃんとしたバイナリ。 すごいじゃん。 あまりに凄すぎてうっかり消してしまう人、続出。 そんな凄い [ をみんなで賛えるスレ。
1000
3 :
名無しさん@お腹いっぱい。 :04/02/19 15:00
type [
5 :
名無しさん@お腹いっぱい。 :04/02/19 15:13
which [
Solaris には /bin/[ は存在せず、 >しかもシェルスクリプトとかそーいうしょぼいのではなくて、 /bin/test も ksh スクリプトだったりなんかする(w
>>6 [ がないようなくさったシステムには用はない。
つーか、おまえら書きこみが足らんぞ!
もっと尊敬汁 (゚Д゚)
test
9 :
名無しさん@お腹いっぱい。 :04/02/19 15:32
これってbash2からbuiltin commandになったんだっけ?
斎藤:似たような話はありますよ、「誰か が/binにカギカッコとかいう変なのをのを作 ってたんで消しときました」って。
>>9 ちがうよ。
bash1どころか、ふつーのBourneシェルでもbuiltinだよ。
[ が builtinじゃなかったのはecho pwd とかすら
外部コマンドだったふるーい時代だ。
あの頃は
if [ ... ]
と書くより
case ... in
の方が(内部コマンドなので)速い、というテクニックがあった。
>>4-5 Debianなんですが、
$ type [
[ is a shell builtin
$ which [
/usr/bin/[
となりました。この/usr/bin/[はcoreutilsに含まれているもののようです。
ウニ板以外ではスレタイとして成立しえないな
Enter押そうとしたらミスって[を押してしまう. 皆さんはEnterと[押し間違えませんか?
UNIX使いなら普通EnterよりもCtrl-J or Ctrl-Mの方を使うだろ。 それに、普通英語キーを使うから、Enterも近い。 日本語キーはダメね。
$ uname -a SunOS **(host名)** 5.8 Generic_108528-22 sun4u sparc $ type [ [ is a shell builtin $ which [ /usr/local/bin/[ $ file /usr/local/bin/[ /usr/local/bin/[: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), dynamically linked (uses shared libs), not stripped 一方 $ uname -a SunOS **(ホスト名)** 5.6 Generic_105181-35 sun4u sparc SUNW,Ultra-1 $ type [ [ is a shell builtin $ which [ [: Command not found. $ cat /usr/bin/test #!/bin/ksh # #ident "@(#)alias.sh 1.1 95/02/06 SMI" # # Copyright (c) 1995 by Sun Microsystems, Inc. # cmd=`basename $0` $cmd "$@" [ がインストールされてないシステムを使ってるやつは管理者を罵倒しる!
18 :
名無しさん@お腹いっぱい。 :04/02/19 21:40
おお、スレタイトル見て荒しかと思ったけど UNIX板ならではですね~
file /bin/[ /bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 5.0.2, dynamically linked (uses shared libs), stripped
%file /bin/[ /bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 4.8, statically linked, stripped
俺は今でも、文字列比較は case しか使わん
よくこんなスレタイでこんだけ話題が続くな。 恐るべしウニ板。
まぁtest とtsetをtypoする俺様は[必須だ。
テストカキコ用スレかと思って「いいセンスしてやがる」と来てみたが…
>>1 マジネタだったんか…
対応がとれてないと気持ち悪いから]が欲しくてたまらない。 ]をどんなコマンドにするか、考えてみないか?
alias ] [
このコマンド何? man無いし。--help付けても分からんし。記号だからぐぐれないし。 常識みたいだけどおせーて。
まともなUNIXなら man '['
どうも。 うちのlinuxはまともなUNIXじゃないということが良く分かりました。 ログインできる SunOS 5.8 には入ってませんでした。 FreeBSDでやっと man 読めました。 ちなみに、linuxではよく見たらシンボリックリンクでした。 なるほど、隔離板があるわけですね。ためになりました。ありがとうございます。
>>27 $ /usr/bin/[ --help
すれ。
ちゃんとヘルプ表示されるぞ。
単に [ だと shell builtin が優先されるので
[: missing `]'
になる。
>>30 zshでは実行すらできませんでした。
/usr/bin/[ --help
zsh: bad pattern: /usr/bin/[
TEST(1) BSD General Commands Manual TEST(1) NAME test, [test - condition evaluation utility SYNOPSIS test expression [test expression ] DESCRIPTION The test utility evaluates the expression and, if it evaluates to true, returns a zero (true) exit status; otherwise it returns 1 (false). If there is no expression, test also returns 1 (false).
%where [ /bin/[ %file /bin/[ /bin/[: Mach-O executable ppc %/bin/[ --help %
if [ X$hoge = X ]; then ... ってのもバッドノウハウだよな
35 :
名無しさん@お腹いっぱい。 :04/02/21 01:58
服または鎧のたぐい
man '\[' で読めた。
>>34 if [ -z "$hoge" ]; thenじゃだめな理由ってなに?
そういえば、/bin/shの[は-eが無いから困る。
39 :
名無しさん@お腹いっぱい。 :04/02/22 13:23
>>29 coreutilsに普通に入っていたが...
Linuxザウルスかなんかでbusyboxが代わりに入ってるのか?
うぉ、ageてしまった。スマン
>>38 最近、bashismてんこもりなshell scriptばかり書いてしまう
ようになって、あちこちで迷惑かけてまつ。
>>39 $ ls -l /usr/bin/[
lrwxrwxrwx 1 root root 4 Dec 6 23:20 /usr/bin/[ -> test*
$ rpm -qf /usr/bin/test
sh-utils-2.0.11-9vl5
$ cat /etc/vine-release
Vine Linux 2.90 (Valandraud)
>>42 Vineは先っちょでもまだcoreutilsが入ってないのか(驚
知らない人のために補足するけどcoreutilsはそれまでの fileutils, sh-utils, textutilsを統合したものね。
45 :
名無しさん@お腹いっぱい。 :04/02/22 15:00
46 :
名無しさん@お腹いっぱい。 :04/02/22 15:06
>>41 script に bash 指定すれば?
#!/bin/bash
[
[
$ file /usr/bin/[ /usr/bin/[: symbolic link to test
% file /bin/[ /bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 4.9, statically linked, stripped % file /bin/[ /bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 5.0.2, dynamically linked (uses shared libs), stripped
% file /bin/[ zsh: bad pattern: /bin/[ % file /bin/\[ /bin/[: cannot open (/bin/[) % file /usr/bin/\[ /usr/bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped
53 :
名無しさん@お腹いっぱい。 :04/03/03 17:26
[
このスレクリックしづらい
55 :
名無しさん@お腹いっぱい。 :04/03/05 07:42
ワロタ
クリックしたりせずに読めるツール使え
だめだ、俺はもうp2から離れられない
ホシュ
[ このスレ = 糞スレ ]
61 :
名無しさん@お腹いっぱい。 :04/10/16 13:09:21
[ ホシュ() ]
[ "X$1" = "X" ]
[ "X$1" = "Xぬるぽ" ] && reboot
>>37 しいて言えば、[で一度評価してるものをifで再度評価してるのが無駄というところか。
% file /bin/\[ /bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 6.0.0, dynamically linked (uses shared libs), stripped % file /rescue/\[ /rescue/[: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 6.0.0, statically linked, stripped
そういえば : ていうコマンドはないのかな?
と思ったが ln true : でいいか。
>>68 知らん。
つか、それは内部コマンドじゃないと意味無いだろ。
もっと私を褒め讃えなさい
>>70 チ?ハ�、ホ ] 、ホ、ウ、ネ、ノ、ヲサラ、、、゙、ケ、ォ。ゥ
テスト
73 :
名無しさん@お腹いっぱい。 :05/02/25 09:55:24
ホシュ
[ ]
[(1)
[
77 :
名無しさん@お腹いっぱい。 :UNIX時間(+0900)35年,2005/04/03(日) 00:12:02
[
78 :
名無しさん@お腹いっぱい。 :UNIX時間(+0900)35年,2005/04/03(日) 01:16:54
昔は`もだった
[[
からあげ うまうま だよもん。
[[ てのは bash の組み込みコマンドだべさ
>>81 違う。[[ は { とか if とかと同列のシェルの文法。
もはやコマンドではない。
$ type [[ [[ is a shell keyword $ type [ [ is a shell builtin $
たまに /bin/[ がないOSがあるよね。 実質困らんけど、教育上置いておいてほしいな。
cshで困るから置けよぉ
87 :
名無しさん@お腹いっぱい。 :2006/11/13(月) 16:50:56
kara-age
昔、なんだこれwww と消したことがあるよ。
90 :
名無しさん@お腹いっぱい。 :2008/04/17(木) 00:22:01
このスレタイトルで意味が通るのも凄いところだなw
あと : もあるぞ。 : は何故外部コマンド版 /bin/: を置かなかったんだろう?
ギコナビのタイトルが ギコナビ - [[] w
& はコマンドじゃないんだっけ? あと ; は? 逆にコマンドとして実装できるかな?
それらは構文要素であって、 [ は構文要素ではない。 コマンドライン的には、エスケープしてやればそういうコマンドを 入力することは可能。俺の手元のbashでは、 $ \& bash: &: command not found $ \; bash: ;: command not found こうなるw
[以外で一文字コマンドに出来る/出来そうな文字は何があるか? ( \ " ' とかなら無理矢理コマンドにできるかな?(はできそうだな
シェルの構文規則的に無理な希瓦斯
(( とかならできるか? ありそうでないよな、[以外の一文字コマンド、特に記号とか。 と思ったら、bash限定?であったな。 .
>>99 マジで言ってる? 大間違いなことを(下2行)
>>100 あれ?コマンド扱いじゃないんだっけ?
ビルトインで
あれ? テストスレじゃなかったの?
:
cygwinいじってたら、英字で一文字コマンドがあるな x Xが立ち上がったw
1文字だけのコマンドというと、他に w があるな
X
昔 if/while [ 条件 ];then って構文だと思ってた時期があったな. 確か初めてcygwin使ったときに,binディレクトリの一番上に [.exe ってのがあるのを見て, それがコマンドなのを知ったんだっけ.なつかしい.
[ と [[ と test の違いを教えて
[[ は bash の構文 [ は test のエイリアス(ハードリンク) test と [ はシェル内蔵版もあるけど、基本的には独立したコマンドで、 [ という名前で呼び出された場合、最後のオプションが ] であることを確認したりとか 振る舞いが異なる。
>>110 ありがとう!
$ ls -li /usr/bin/{[,test}
685996 -rwxr-xr-x 1 root root 30156 12月 17 05:10 /usr/bin/[
686039 -rwxr-xr-x 1 root root 26056 12月 17 05:10 /usr/bin/test
でもハードリンク?
inodeもファイルサイズも違うみたいなんだけど何でだろ?
ちなみにLinuxで、coreutils-8.7
うーん 違うこともあるかも
まぁ深くは考えない事にします [[ はbashの構文というのと test より [ のほうがメジャーという事にしときます。 うちの環境ではtestのmanは入ってるのに[のmanが入ってなかったのに少しショックを受けましたが。
>>111 coreutils だと [ と test は別。
[ のソースは lbracket.c で、中身はこんなん。
#define LBRACKET 1
#include "test.c"
>>113 > [のmanが入ってなかった
/usr/share/man/man1/[.1.gz ない?
> #include "test.c" 内容的には同じかな?
#define LBRACKET 1 でちょっとだけ変わる。 --help の解釈とか。
>>10 って出典はよしだともこさんのroot訪問記かなぁ?
coreutils は、自分の名前によって挙動が変わるプログラムは邪悪だ、 という哲学なのかな。
>>119 GNUのcoding standardに書いてある。
具体的にどこに?
なるほど。 ありがとう。
∧_∧
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>63 (_フ彡 /