トップページunix
1001コメント305KB

シェルスクリプト総合 その14

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/01/29(木) 06:54:48
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ落ちたみたいなのでリンク省略。
0567名無しさん@お腹いっぱい。2009/04/21(火) 08:20:54
>>566
アフォか。
それは普通の「2項」の演算子の組み合わせ。
しかも、bash限定でもない。

>>565 が正解。
0568名無しさん@お腹いっぱい。2009/04/21(火) 09:59:52
正解は>>565
>>567は>566に輪をかけたアフォ。
「bashで」というお題は「bash以外では動作しない == bash限定」事を要求していない。
0569名無しさん@お腹いっぱい。2009/04/21(火) 10:53:47
頭のおかしい人はスルーで
はりきるだけだから
0570名無しさん@お腹いっぱい。2009/04/21(火) 11:12:24
するーされてるが >>564 もあふぉだな。
ここでのベンチ(kshとbash)は、ライブラリが動的か静的かよりもはるかに大きい
差を生じているので、そんな点を指摘しても無意味。
さらにアフォな点は、バイナリは「スタティックリンク」の方が速い(有利)ということ。
>>564 は全く逆に覚えてるようだね。
0571名無しさん@お腹いっぱい。2009/04/21(火) 12:34:23
なんでスタティックリンクの方が速いんだ?
0572名無しさん@お腹いっぱい。2009/04/21(火) 12:40:45
>>571
素で質問してるならぐぐれ。
釣りなら面白くない。
0573名無しさん@お腹いっぱい。2009/04/21(火) 13:33:19
ファイル名を通し番号に変えたいんですけど
以下のスクリプトでエラーが出ます。

num=1

for file in *.m4a; do

mv $file $num.m4r

num=`expr $num + 1`

done


エラーは
mv: target `1.m4r' is not a directory
というものです。

シェルというよりmvコマンドの使い方の問題なのかもしれませんが
自分には原因がわかりません
教えてください
0574名無しさん@お腹いっぱい。2009/04/21(火) 13:42:53
>>571
共有ライブラリは間接呼出しになる。
0575名無しさん@お腹いっぱい。2009/04/21(火) 13:44:59
>>573
スペース入りファイル名が分割されて、
mv hoge hage.m4a 123.m4r
みたいに実行されたのが原因。

シェル変数の展開時には原則すべてダブルクォートを付けること。

mv "$file" "$num.m4r"
0576名無しさん@お腹いっぱい。2009/04/21(火) 13:45:06
>>573
ファイル名に空白(やタブ等)が含まれているのだろう。

mv "$file" $num.m4r
0577名無しさん@お腹いっぱい。2009/04/21(火) 14:04:48
>>575
>>576
なるほど、そういうことだったんですか!
まさにその通りで、ファイル名にスペースが入っていました。
ありがとうございます!
0578名無しさん@お腹いっぱい。2009/04/21(火) 21:57:17
>>546
すごく適当ですが・・・・こんな感じで OS ごとに書くしかないかと。

case `uname -s` in
'Linux')
  grep btime /proc/stat | cut -d ' ' -f 2
  ;;
'FreeBSD')
  cut -d ' ' -f 8 /proc/1/status | cut -d ',' -f 1
  ;;
*)
  ;;
esac
0579名無しさん@お腹いっぱい。2009/04/22(水) 05:32:25
スタティクは全部読むから読み込みに時間がかかるし、ライブラリのキャッシュも効いてないぞ。
ダイナミックが遅いなら、みんなダイナミック使ってないwww
perlとかも普通はダイナミック。
0580名無しさん@お腹いっぱい。2009/04/22(水) 06:10:01
>>579
オマエ真性の勘違い野郎か。

スタティックリンクでも全部は読み込まない。
仮想記憶って知ってるか?
バイナリプログラムのうち、実際にCPUのプログラムカウンタが走った命令のアドレス
を含むメモリページのみが読み込まれる。実行されなかった部分は読み込まれない。

ダイナミックリンクのライブラリは、リロケーションの関係で、
PIC(ポジションインディペンデント)にコンパイルする必要があり、
PIC自体が通常のバイナリよりも数%遅い。

ライブラリのキャッシュについては確かにいうとおりだが、
これは他の要素に比べて影響は小さいので、
やはりダイナミックリンクの方が遅い。

ダイナミックリンクは遅いが、HDDの節約や、ライブラリのupdateの際に
リンクしてる個々のバイナリを再コンパイルしなくて良い便宜のために
使用されている。どうしても速度優先の場合は、
スタティックリンクを使うことがあるよ。
0581名無しさん@お腹いっぱい。2009/04/22(水) 06:36:28
>>580 に補足。
ライブラリは複数の関数の集まりでできているが、
スタティックリンクの場合、それらの関数のうち、使用している関数だけが
コンパイル(ld)時にリンクされる。使っていない関数はそもそもリンクされない。
(使っていても条件によって呼び出されなかった関数は
仮想記憶によってメモリにはロードされないままになる可能性があるのは
>>580 がいう通り)

ダイナミックリンクの場合は、使っていない関数まで
実行時に塊で付いてきてしまう。
0582名無しさん@お腹いっぱい。2009/04/22(水) 06:57:20
ダイナミックリンク/スタティックリンクの速度の違いなんて小さいからどうでもいい。
それよりもバイトコンパイルやらコマンド組み込みやらの方が効果でかいはず。
0583名無しさん@お腹いっぱい。2009/04/22(水) 07:57:48
>>579
間違った知識ばらまいてないで、実験してみればいいのに。

$ cat hoge.c
#include <stdio.h>
int main(){printf("Hello¥n");return 0;}

$ gcc -o dynamic hoge.c
$ gcc -o static hoge.c -static

$ time ./dynamic
Hello

real 0m0.004s
user 0m0.000s
sys 0m0.001s

$ time ./static
Hello

real 0m0.002s
user 0m0.000s
sys 0m0.000s


スタティックリンクの方が速いね。
0584名無しさん@お腹いっぱい。2009/04/22(水) 09:15:01
>>563
ミリ秒オーダでしか違わないんじゃほとんどの場合は
そんなこと気にするよりまともなプログラム書いたほうが
いいなw
0585名無しさん@お腹いっぱい。2009/04/22(水) 09:37:11
>>584
dynamicもstaticも「ほとんど違わない」ので、それ以外の要素による違いの方が大きい
ということは元々 >>570 が指摘してる。(こっちが要点)

それ以外に、>>564 は「ダイナミックの方が速い」と間違ってることを言ってるるので、
それをついでに指摘しただけ。

で、>>579 で未だに「ダイナミックの方が速い」の主張を続けるから、
>>580 がそれを否定しているだけ。

別に>>580 が、シェルスクリプトのシェルをスタティックにしろと主張している
わけではない。

元の質問に戻って、>>508 の場合、外部コマンドの cutの呼び出しが多数ループ
されるので、それが遅かったのが原因と思われる。
>>511 はシェルの内部コマンドだけを使っているので、それで激劇に速くなったと。

いすれにしても、その話の流れを読まずに
>>564 で見当違いかつ間違った指摘をしている >>564 はアフォ。
0586名無しさん@お腹いっぱい。2009/04/22(水) 10:22:55
>>580
> ライブラリのキャッシュについては確かにいうとおりだが、
> これは他の要素に比べて影響は小さいので、
> やはりダイナミックリンクの方が遅い。

嘘八百のおバカさん
0587名無しさん@お腹いっぱい。2009/04/22(水) 10:31:05
>>585
主張する内容自体に問題くても、必死すぎるとキモいものだな...
まあ落ち着け。
0588名無しさん@お腹いっぱい。2009/04/22(水) 10:35:53
通常の実行バイナリがstaticかdynamicかという問題のほかに、
>>579 は perlの「ダイナミックロード」のライブラリ(モジュール)の話と
混同してるフシがあるな。(わざわざ的外れなperlを例に持ち出してきてるあたり)

>>579 にとって、「ダイナミック」とは、perlでしかイメージできてなくて、
普通にCをコンパイルする時のstatic linkとdynamic linkを違いを
全く理解できてない(存在自体知らない?)んだろう(笑)
0589名無しさん@お腹いっぱい。2009/04/22(水) 10:49:32
>>584
問題です。
Ubuntuでは、dashをビルドする際に、libcを使わずdietlibcに変更した上で、
スタティックリンクしています。これはなぜでしょうか。
ヒント:Ubuntuでは/bin/shとしてdashを使っています。
0590名無しさん@お腹いっぱい。2009/04/22(水) 11:07:22
ld.so関係で事故が起きても動くように。
スタティックリンクの方が速いからではない。
そもそも速くないし。
0591名無しさん@お腹いっぱい。2009/04/22(水) 11:11:36
>>590
>そもそも速くないし。

は間違い。実際速い。

それ以外にstatic linkにする利点と、さらにdietlibcに変更する理由を質問してる。
>>590 では答えになっていない。

ハイ、答え直し >>590 >>584
0592名無しさん@お腹いっぱい。2009/04/22(水) 11:12:45
それっぽく書くだけで人はこんなにもだまされるんだな。
ちゃんと自分の頭を使って自分の体を動かして自分の目で確認しろよ。
0593名無しさん@お腹いっぱい。2009/04/22(水) 11:31:22
linux はスタティックリンクなバイナリのように見えても、
NSS まわりとかで必要があれば勝手にダイナミックでリンクしちゃうから
わりとどーでもいい。
0594名無しさん@お腹いっぱい。2009/04/22(水) 11:47:34
>>593
争点をぼかすことになるから、ここでは dlopen()系の話は持ち込まない方が
話が簡単になるかと。どうせあほは >>579 1人だろうし。
0595名無しさん@お腹いっぱい。2009/04/22(水) 12:33:36
staticリンクするとGPL汚染するからGPL信者には都合がいい。
しかもdietlibcはLGPLでなくGPLなのでダイナミックリンクでも汚染する。
0596名無しさん@お腹いっぱい。2009/04/22(水) 12:35:04
>>579
すさまじい勘違いだなw
0597名無しさん@お腹いっぱい。2009/04/22(水) 12:38:47
>>584
このオーダーも特に速度が必要な場合は馬鹿に出来ないよ。
まぁ、dynamicかstaticかの違いより、根本的な設計の方がよっぽど大きいけど。
0598名無しさん@お腹いっぱい。2009/04/22(水) 12:49:51
>>597
ミリ秒オーダーの起動オーバヘッドが問題になるほど実行時間の
短いプログラムを何度も起動するのはそもそも設計が悪いよね
0599名無しさん@お腹いっぱい。2009/04/22(水) 12:59:45
>>598
オーバヘッドは「プログラム起動時」だけじゃないよ。
dynamicなライブラリ上の関数を呼び出すたびにオーバーヘッドがかかる。
さらに、関数自体がPICによって速度上不利なコードで書かれているから遅くなる。

staticライブラリなら、プログラム中に絶対アドレスを決めうちで持つから、
その分のオーバーヘッドがなく高速動作する。
0600名無しさん@お腹いっぱい。2009/04/22(水) 13:10:18
ダイナミックリンクが遅い派の人って、なんか宗教じみてるよね
結論ありきというか
そうでないと世界が崩壊しちゃうんだろうね
0601名無しさん@お腹いっぱい。2009/04/22(水) 13:18:31
>>600
今まで「ダイナミックリンクの方が速い」と間違って覚えていて
散々恥を晒した気分はどうだい? >>600 = >>579
0602名無しさん@お腹いっぱい。2009/04/22(水) 13:22:13
>>600
自己紹介乙。
そうか、今までdynamicの方が速いと信じこんでいて、それが間違いだと知って
キミの世界が崩壊しちゃったのか、、よしよし
0603名無しさん@お腹いっぱい。2009/04/22(水) 13:50:41
これ、シェルスクリプトの話?
0604名無しさん@お腹いっぱい。2009/04/22(水) 17:24:32
いんにゃ、全てのライブラリをスタティックリンクさせてメモリを圧迫させようとする秘密組織の陰謀。
0605名無しさん@お腹いっぱい。2009/04/22(水) 23:37:03
すべてのプログラムをGPLに汚染するGNU組織の陰謀だろwww
0606名無しさん@お腹いっぱい。2009/04/22(水) 23:52:09
>>605
ま、次から間違えないようにすれば良いじゃないか。

0607名無しさん@お腹いっぱい。2009/04/23(木) 22:37:10
echo aaabbbccceee | sed 's/aaa//' | sed 's/ccc//'
という場合のsedをひとつにできますか?
0608名無しさん@お腹いっぱい。2009/04/23(木) 22:43:22
>>607
echo aaabbbccceee | sed 's/aaa//;s/ccc//'
0609名無しさん@お腹いっぱい。2009/04/23(木) 22:55:44
>>607

$ alias ひとつ=sed
$ echo aaabbbccceee | ひとつ 's/aaa//' | ひとつ 's/ccc//'
0610名無しさん@お腹いっぱい。2009/04/23(木) 23:29:40
echo aaabbbccceee | sed -e 's/aaa//' -e 's/ccc//'
0611名無しさん@お腹いっぱい。2009/04/24(金) 00:10:17
sed | sed って書く香具師ホント多いよな。1つの sed で何個も書けるのにw
個人的には、見やすさも考えてこんな風に書くこと多いかな。

sed -e 's/afo/moe/g' \
   -e 's/unko/umai/g' \
   -e 's/ahya/uhyo/g'

あと、文字列に / がいっぱい入るときは \/ じゃなくって、そもそも / を使わない。

s|/afo/desu/yo|/unko/tabe/tai/ne|
0612名無しさん@お腹いっぱい。2009/04/24(金) 00:41:35
蛇の足まで描くな
0613名無しさん@お腹いっぱい。2009/04/24(金) 06:46:28
あと、sedとgrepを | でつなぐ奴とか。もうあほかと。
0614名無しさん@お腹いっぱい。2009/04/24(金) 09:27:04
でも少しずつ様子を見ながら作業してるときは、お尻に付け足すほうが
カーソル戻さなくていい分楽なのでついやっちゃうんだよな...
0615名無しさん@お腹いっぱい。2009/04/24(金) 11:10:54
>611
実行速度が大きく違う時がある
-e よりは sed | sed | sedの方が速いときもある

ケースバイケースでしょ
0616名無しさん@お腹いっぱい。2009/04/24(金) 11:47:58
>>613
インターネットで俺の悪口を言うのは止めてくれないか ><
0617名無しさん@お腹いっぱい。2009/04/24(金) 12:46:50
オレのことではないと分かってほっと一息
0618名無しさん@お腹いっぱい。2009/04/24(金) 19:58:34
sedの件ありがとうございます
ただひとつの場合-eはなくてもいいのに複数の場合は必須なんですね?
0619名無しさん@お腹いっぱい。2009/04/24(金) 20:08:32
>>618
>>608 の形式なら -e は不要。
0620名無しさん@お腹いっぱい。2009/04/24(金) 23:03:44
まあコマンドで出力しぼったりしてるときは grep | sed とか書いてもいいべ
0621名無しさん@お腹いっぱい。2009/04/25(土) 04:52:34
sedが3つも起動されてるのはどうだか。
0622名無しさん@お腹いっぱい。2009/04/25(土) 09:27:36
いまどきのマシンなら3つぐらい余裕で動く
0623名無しさん@お腹いっぱい。2009/04/25(土) 09:49:23
>>615
sed 's/afo/moe/g;s/unko/umai/g;s/ahya/uhyo/g'
よりも、
sed | sed | sed の方が速いことはあり得ない。

×ケースバイケース
>>615 の負け惜しみ
0624名無しさん@お腹いっぱい。2009/04/25(土) 10:29:36
615は -e って言ってるのに
0625名無しさん@お腹いっぱい。2009/04/25(土) 12:07:39
>>624
>>615 は一言で言い表すために -e って言っただけだろ。
-e でも>>623 でも同じこと。

まとめると、
>>611 (-e) または >>623 の方が速い。
間違っても、>>615 が言う sed | sed | sed の方が速くなるケースは無い。
0626名無しさん@お腹いっぱい。2009/04/25(土) 16:57:49
シングルなのかクアッドなのかに寄っても違うとか?
まあsed実行中もshellが居座ってるのもなんだかなあだけど。
0627名無しさん@お腹いっぱい。2009/04/25(土) 17:41:53
shellが居座るってよくないの?
そのshell分、ちょっぴりメモリを食うだけでしょ

他になんかデメリットってあるんでしょうか?
0628名無しさん@お腹いっぱい。2009/04/25(土) 18:30:21
下流のsedにshellはいないんじゃないの?
0629名無しさん@お腹いっぱい。2009/04/25(土) 18:32:17
あいや、なんか変な言い方になったな
0630名無しさん@お腹いっぱい。2009/04/25(土) 18:46:52
コマンドがひとつだけなら、
exec command
とやって、forkせずにシェルをコマンドに化けさせられる。

2つ以上のコマンドをパイプする場合は、execが使えない。
敢えて exec を付けても無意味。実験してみればわかる。
0631名無しさん@お腹いっぱい。2009/04/25(土) 22:25:15
>>626はアホなのでスルー推奨
0632名無しさん@お腹いっぱい。2009/04/26(日) 01:12:31
OSごと仮想化されてる時代に慎ましいスレですね
0633名無しさん@お腹いっぱい。2009/04/26(日) 01:20:05
いつまでもシェルスクリプトは使われるだろうね
0634名無しさん@お腹いっぱい。2009/04/26(日) 02:03:58
>>633
そりゃFortran・COBOL・Lispが未だに現役なわけだし。
0635名無しさん@お腹いっぱい。2009/04/26(日) 05:23:42
特にコボルのバッチ処理がしぶとい。
今時オンデマンドでリアルタイムで処理しろよって感じだが。
0636名無しさん@お腹いっぱい。2009/04/26(日) 06:47:10
>>635
まぁ世の中、夜間のバッチ処理に向いてる(リアルタイムに向かない)
処理もある訳で、ホストもバッチ処理もそう簡単には無くならんでしょうな。
0637名無しさん@お腹いっぱい。2009/04/26(日) 22:31:52
海外のフォーラムをみていたけど、意外とksh派って多いんだね
bash 3.5, ksh 3.5, zsh 2, csh(tcsh) 1って感じだった
他のマイナーなShellは出てこず

kshの良い点としてvi-likeの編集機能を何名かがあげていたんですけど、そんなに便利なんでしょうか?
0638名無しさん@お腹いっぱい。2009/04/26(日) 22:47:32
set -o vi となんか違う?
0639名無しさん@お腹いっぱい。2009/04/27(月) 02:51:03
こういうのできるんだね
vi `locate filename.sh`

クドイほどtips and 例文満載の文書ってないのかな
0640名無しさん@お腹いっぱい。2009/04/27(月) 04:44:20
>>637
弱い犬ほど良く吠えるから
発言が活発=利用者が多い
じゃないよ
cshやbash以外は普及してるかと言われればそうでもない
0641名無しさん@お腹いっぱい。2009/04/27(月) 06:35:18
>>640
/bin/shの実体が何かによって利用者の数は決まる気がする。
0642名無しさん@お腹いっぱい。2009/04/27(月) 09:32:46
>>639
vi +/PATTERN `egrep -l PATTERN *`
ってのは良くやるからシェルスクリプトにしてる。
0643名無しさん@お腹いっぱい。2009/04/27(月) 23:29:03
サンクコストだったっけ?>無駄金を諦める
0644名無しさん@お腹いっぱい。2009/04/28(火) 00:07:22
kshはWindowing Korn Shellに憧れたなぁ
結局公開されたkshにはその機能がなくて一度も見ることなく終わったのだが、
どんなもんだったか証言できる人はいますか?

これが使えていたらTcl/Tkとかたぶんやってなかった。
0645名無しさん@お腹いっぱい。2009/04/28(火) 01:11:38
>>644
DeskTop Korn SHellな。
http://www.brendangregg.com/DtkshDemos/xpong
0646名無しさん@お腹いっぱい。2009/04/28(火) 10:24:05
Solarisには普通に入ってなかったっけ?>dtksh
0647名無しさん@お腹いっぱい。2009/04/28(火) 15:36:56
>>645,646
トン。dtkshだったのか。いままで検索しても画面を拝めなかったので
もう見ることはないかと思ってたよ。おかげで

 http://docs.sun.com/app/docs/doc/805-3917/6j3niaoaf?l=Ja&a=view

のプログラミングマニュアルでコードとか動作を初めて拝めた。
Solarisは使ってるけど/usr/dtとかまず使わないからまったく知らなかった。
もしかしてOpenSolarisにも入っているのだろうか・・・

Xツールキットの関数とオプションのまんまラッパーだったんだな。
今見るとベタで微笑ましい位。さすがにスクリプトででもXtは使いたいとは
もう思えないが、当時使えていたらハマッただろうなぁ。
0648名無しさん@お腹いっぱい。2009/04/28(火) 18:39:57
すごいくだらない質問ですまない。
/tmp/old まであるディレクトリ構造で
単純に/tmpディレクトリにあるファイルリストをテキストで出したいのだけど
ディレクトリや隠しファイルの表示は入れたくない
どんなコマンドつかえばできる?
lsやfindでいろんなオプションつけてやってみたけど無理だった
たぶんすごく単純なところで引っ掛かってる気がするので、わかる方いたら教えてください
0649名無しさん@お腹いっぱい。2009/04/28(火) 19:27:00
find /tmp -maxdepth 1 -type f
0650名無しさん@お腹いっぱい。2009/04/28(火) 19:29:16
>>649
隠しファイルの表示は入れたくない
0651名無しさん@お腹いっぱい。2009/04/28(火) 19:30:52
>>648
cd /tmp; for file in *; do [ -f "$file" ] && echo "$file"; done
0652名無しさん@お腹いっぱい。2009/04/28(火) 19:38:57
find内で.*を排除するほうがいいだろう。
くだ質スレでほぼ解決してるからここ見に来るとは思わんけど。
0653名無しさん@お腹いっぱい。2009/04/28(火) 19:42:22
>>652
find内で.*を排除するのは無駄だろ。
せっかく内部コマンドだけでできるのに。
0654名無しさん@お腹いっぱい。2009/04/28(火) 19:44:13
>>652
あっちでやってるのは、find「内」じゃないだろ。
findの「外」のパイプに出してからあとからカットしてる。ノンエレガント。
0655名無しさん@お腹いっぱい。2009/04/28(火) 19:47:52
外部コマンド | 外部コマンド

よりも、

シェル内部コマンドのみ

の方が速いわな。
0656名無しさん@お腹いっぱい。2009/04/28(火) 19:49:47
>>652
find方式だと、「hoge<改行>.hoge」みたいなファイル名があった場合、誤動作する。

>>651 方式なら無問題。
0657名無しさん@お腹いっぱい。2009/04/28(火) 20:17:44
[ が内部コマンドなシェルならいいけど、
外部コマンドなシェルだとパフォーマンス最悪
0658名無しさん@お腹いっぱい。2009/04/28(火) 20:39:13
コストだとかケチくせぇことはいいんだよ。
0659名無しさん@お腹いっぱい。2009/04/28(火) 21:12:44
>>651はファイル名にシーケンス文字列とか含んでると一部のシェルでは誤爆すんよ

$ touch foo\\bar
$ for file in *; do [ -f "$file" ] && echo "$file"; done
foar
0660名無しさん@お腹いっぱい。2009/04/28(火) 21:12:51
[ が外出しのシェルなんて現存しないから。あ、NGワードMINIXな。
0661名無しさん@お腹いっぱい。2009/04/28(火) 21:14:33
>>659
for f in *; do [ -f "$f" ] && printf '%s¥n' "$f"; done
0662名無しさん@お腹いっぱい。2009/04/28(火) 21:30:00
>>660
v7sh
echoも外出し。
0663名無しさん@お腹いっぱい。2009/04/28(火) 21:33:48
>>660
FreeBSD tcsh
% which [
/bin/[
0664名無しさん@お腹いっぱい。2009/04/28(火) 21:48:08
>>663
>>661 で for文使ってるのが見えねぇのかよw

>>662
v7は「現存」しない。
0665名無しさん@お腹いっぱい。2009/04/28(火) 21:51:34
cd /usr/ports/shells/v7sh; make install
0666名無しさん@お腹いっぱい。2009/04/28(火) 21:55:13
>>665
やっぱり「現存」しないじゃん。

わざわざ作らなきゃいけないんだから。
■ このスレッドは過去ログ倉庫に格納されています