シェルスクリプト総合 その5
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2006/01/21(土) 09:00:29スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。
□お約束
・特記なき場合はbourne shがデフォルトです。
bash/csh/tcsh/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashなので特に注意。
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0856名無しさん@お腹いっぱい。
2006/03/21(火) 02:41:54したいんだったら、egrep 使った方がいいよ。
OS 依存でいいなら構わんが。
0857名無しさん@お腹いっぱい。
2006/03/21(火) 02:53:14egrepってOS非依存か?
0858名無しさん@お腹いっぱい。
2006/03/21(火) 03:35:450859名無しさん@お腹いっぱい。
2006/03/21(火) 03:47:17-regex って GNU 拡張だったんだ。
憶えておくよ。
egrep と grep -E ってどっちがポータブルなの?
0860名無しさん@お腹いっぱい。
2006/03/21(火) 03:50:09もう少しポータブルだけどね。4.4BSD 系 OS のマニュアルには、
拡張機能だと明記してあるんだが。
egrep と grep -E では、egrep の方がポータブル。
0861名無しさん@お腹いっぱい。
2006/03/21(火) 07:38:290862名無しさん@お腹いっぱい。
2006/03/21(火) 09:39:23findの -regexがダメというなら、パイプで egrepするよりは、
find自身で -name '*.c' -o -name '*.cc' -o -name '*.cpp'
でいいと思う。ちゃんと書き直すと、
find . -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' \) \
| sed 's/.*\.//' | sort | uniq -c | sort -nr
かな。
findの -type fを省略していいなら、その後の \( \) も省略できる。
0863名無しさん@お腹いっぱい。
2006/03/21(火) 11:19:300864名無しさん@お腹いっぱい。
2006/03/21(火) 11:25:04よし、存分に語れ。
0865名無しさん@お腹いっぱい。
2006/03/21(火) 11:29:26それはそれは…是非ご教授願いたい。
0866名無しさん@お腹いっぱい。
2006/03/21(火) 11:40:07POSIX!何ですかそれは!是非ご啓示ください!!
0867名無しさん@お腹いっぱい。
2006/03/21(火) 11:46:58実際の各種OSで使われているシェルやコマンドは、
POSIXと同じではない。
だから、そもそもPOSIXと同じではない各種OS間のポータビリティを
考えるなら、POSIX云々ではなく、実際に各種OSでの状況を調べて
対応するのが実践的で現実的。
0868名無しさん@お腹いっぱい。
2006/03/21(火) 13:34:460869名無しさん@お腹いっぱい。
2006/03/21(火) 14:09:32登録は必要だけど、無料だよ。
ttp://www.unix.org/version3/online.html
0870名無しさん@お腹いっぱい。
2006/03/21(火) 14:38:19POSIX新聞?うちは取らないよ。
0871名無しさん@お腹いっぱい。
2006/03/21(火) 15:47:04>・特記なき場合はbourne shがデフォルトです。
今どき、bourne shをデフォルトにしているのなんて、
Solarisくらいしかないじゃん。
0872名無しさん@お腹いっぱい。
2006/03/21(火) 15:54:560873名無しさん@お腹いっぱい。
2006/03/21(火) 16:04:460874名無しさん@お腹いっぱい。
2006/03/21(火) 16:08:57> egrep と grep -E では、egrep の方がポータブル。
嘘おっしゃい。
0875名無しさん@お腹いっぱい。
2006/03/21(火) 16:09:180876名無しさん@お腹いっぱい。
2006/03/21(火) 16:30:18するようなプログラム作るとめっさ速そうなんだけど。無理?
0877名無しさん@お腹いっぱい。
2006/03/21(火) 16:41:16Linux とか POSIX の仕様しか知らない最近の人だと、そう思うかも
しれないね。SUSv3 を見ると egrep は載ってなくて grep -E だけ
が書いてあるし。
でも、もともと egrep と grep は別のコマンドで、使っているアル
ゴリズムも egrep は DFA、grep は NFA で異なっていた。10年くらい
前だと、grep に -E オプションがない OS も沢山あったよ。
これに対し、egrep はベル研 UNIX 時代から存在する由緒あるコマンド
で、事実上すべての UNIX に存在するはず。
ttp://www.bookshelf.jp/texi/autoconf-ja/autoconf-ja_10.html
> POSIX 1003.1-2001では,もはやegrepを要求していませんが,より古いホスト
> の多くはまだPOSIXのgrep -Eでの置換をサポートしていません.この問題を回
> 避するため,AC_PROG_EGREP を呼び出し,$EGREPを使用してください
0878名無しさん@お腹いっぱい。
2006/03/21(火) 16:48:05Solarisだと/usr/xpg4/bin/grepにしか-Eオプションは無くて/usr/bin/grepでは-Eは使えない。
他のOSでも使えるようにgrep -Eをスクリプトに書くのはちょいめんどくさいな。
0879名無しさん@お腹いっぱい。
2006/03/21(火) 16:54:26まずはPOSIXを読めな? ごたくはそれからだ。
0880名無しさん@お腹いっぱい。
2006/03/21(火) 17:01:07pthread使ったファイル検索プログラムがButenhofのpthread本に
載ってたような。
0881名無しさん@お腹いっぱい。
2006/03/21(火) 18:53:18>>877 見ても、POSIXよりも autoconfの方がよほど現実的というところか。
0882名無しさん@お腹いっぱい。
2006/03/21(火) 21:15:57相変わらず
0883名無しさん@お腹いっぱい。
2006/03/21(火) 21:27:27鬱ですねぇ。
0885名無しさん@お腹いっぱい。
2006/03/22(水) 02:14:100886名無しさん@お腹いっぱい。
2006/03/22(水) 09:40:58その後は究極のProxy★ガブリエナイで優雅にproxy生活だったさ!!
0887名無しさん@お腹いっぱい。
2006/03/22(水) 18:01:04分野 : セキュリティ > ネットワーク
インターネット上で公開されている操作が簡単なクラックツールを利用して、興味
本位の不正アクセスを試みる「幼稚な」クラッカー。
クラックツールは既に広く知られているセキュリティホールを悪用するように作成されているため、
セキュリティパッチを確実に適用することで、ほとんどのスクリプトキディによる攻撃は防止できる。
クラックツールを使えば深い知識や高度な技術がなくても簡単に攻撃を行なうことができるため、
数の上ではクラッカーのほとんどはスクリプトキディであると言われる。
0888名無しさん@お腹いっぱい。
2006/03/23(木) 15:38:21という理解でよろしいでしょうか?
0889名無しさん@お腹いっぱい。
2006/03/23(木) 15:39:590890名無しさん@お腹いっぱい。
2006/03/24(金) 02:30:15いえ Korn Shell です。
0891名無しさん@お腹いっぱい。
2006/03/24(金) 07:37:06まあそんなに汎用性気にするならPerl使えという気もするが。
0892774
2006/03/24(金) 07:55:17http://news18.2ch.net/test/read.cgi/news4plus/1143149170/
0893名無しさん@お腹いっぱい。
2006/03/24(金) 08:08:44一番移植性が高いのはBourne Shellということで合ってる。
当たり前過ぎて誰も答えなかっただけ。
>>890
初心者が本気にするかも知れないから、そういう嘘書くのやめろ。
0894名無しさん@お腹いっぱい。
2006/03/24(金) 09:31:20では移植性の高さを定量的に比較し提示してください。
0895名無しさん@お腹いっぱい。
2006/03/24(金) 09:42:42誰もが常識として知っていることをあなたに説明して教える筋合いはない。
知りたければ自分で知ろうとする努力をしなさい。
0896名無しさん@お腹いっぱい。
2006/03/24(金) 09:45:05つまり根拠なき妄言てことですな。自白乙。
0897名無しさん@お腹いっぱい。
2006/03/24(金) 09:48:12大丈夫。みんな妄想してるから。
0898名無しさん@お腹いっぱい。
2006/03/24(金) 10:42:36「kshが移植性が一番高い」などとマジで言ってるなら重症だぞ。
ヨソでそんなこと言って恥かくなよ。
0899名無しさん@お腹いっぱい。
2006/03/24(金) 10:50:45汎用性と移植性は違う気がする。
汎用性は用途の広さだよね。
それならどのシェルもほとんど変わらない気がする。
0900名無しさん@お腹いっぱい。
2006/03/24(金) 10:53:40$ ssh freebsd-host
freebsd$ ksh
ksh: not found
freebsd$ exit
$ ssh linux-host
linux$ ksh
ksh: not found
linux$ exit
....noway, what more can I say ?
0901名無しさん@お腹いっぱい。
2006/03/24(金) 11:18:12お前のマシンに当該シェルがあるかどうかなんて聞いちゃいねー
0902名無しさん@お腹いっぱい。
2006/03/24(金) 11:25:36そのとおりだが、漏れもpdkshなんて使わんからアンインストールしてるよ。
0903名無しさん@お腹いっぱい。
2006/03/24(金) 11:29:27はぁ?
どんなホストでも、誰のホストでも、
デフォで動くというのが「移植性」の必須条件なわけだが。
0904名無しさん@お腹いっぱい。
2006/03/24(金) 11:31:390905名無しさん@お腹いっぱい。
2006/03/24(金) 11:34:37そういう標準化の為に色々大人が事情をつくるのよ
どんなUNIX95のホストでもとか
POSIXに準拠したホストでもとか
0906名無しさん@お腹いっぱい。
2006/03/24(金) 11:50:29だからPOSIXって実際には使えないわけですね。
0907名無しさん@お腹いっぱい。
2006/03/24(金) 13:38:490908名無しさん@お腹いっぱい。
2006/03/24(金) 13:57:13たくさん釣れましたね。
確かに、本当にKorn Shellが移植性が高かったら良かったかも知れませんね。
でも現実にはもう遅いですね。
0909名無しさん@お腹いっぱい。
2006/03/24(金) 14:24:020910名無しさん@お腹いっぱい。
2006/03/24(金) 21:56:420911名無しさん@お腹いっぱい。
2006/03/24(金) 22:03:570912名無しさん@お腹いっぱい。
2006/03/24(金) 22:21:31次の各項目を、その可能性が高い順番に並べよ。(10点)
(1) IPv6が普及する
(2) UNIX環境においてUTF8がEUCよりも普及する
(3) kshが最も移植性の高いシェルとして普及する
0913名無しさん@お腹いっぱい。
2006/03/24(金) 22:45:380914名無しさん@お腹いっぱい。
2006/03/24(金) 22:48:190915名無しさん@お腹いっぱい。
2006/03/24(金) 22:57:20本当にやる気が有ればいつでも捨てれるはずだ
0916名無しさん@お腹いっぱい。
2006/03/24(金) 22:58:53どれも可能性ほぼゼロ。
よって、どの順に並べても正解。
UTF8は、全角記号の横幅問題が解決しない限り、実際問題使えない。
0917名無しさん@お腹いっぱい。
2006/03/24(金) 23:08:27でFA?
0918名無しさん@お腹いっぱい。
2006/03/24(金) 23:16:500919名無しさん@お腹いっぱい。
2006/03/24(金) 23:32:060920名無しさん@お腹いっぱい。
2006/03/24(金) 23:43:220921名無しさん@お腹いっぱい。
2006/03/24(金) 23:55:22いい加減なことぬかすな、CP/Mにはcommand.comなど無い。
0922名無しさん@お腹いっぱい。
2006/03/25(土) 00:24:050923名無しさん@お腹いっぱい。
2006/03/25(土) 00:24:490924名無しさん@お腹いっぱい。
2006/03/25(土) 00:27:590925名無しさん@お腹いっぱい。
2006/03/25(土) 00:46:370926名無しさん@お腹いっぱい。
2006/03/25(土) 01:03:03ぐらい
0927名無しさん@お腹いっぱい。
2006/03/25(土) 01:25:48が漏れの印象
0928名無しさん@お腹いっぱい。
2006/03/25(土) 01:54:43オナホの自販機ってあるんだ。さすがだれにも相手にされなくなった
ご老体さまがたですなw
0929名無しさん@お腹いっぱい。
2006/03/25(土) 02:01:540930名無しさん@お腹いっぱい。
2006/03/25(土) 02:01:562はUNIXではムリでそ
犬はUNIXじゃないし〜
1は連邦政府の動向見ると実現しそう
日本は後追いで普及ということになるだろうけど
3はよく分からないけどLinuxの鳥ベンダ次第
システム用の各種スクリプトはXMLでラップする方が普及すると思うので
シェルの差っていうのは余り意識せず済むようになると思うケド
4は心がけ次第
0931名無しさん@お腹いっぱい。
2006/03/25(土) 02:02:090932名無しさん@お腹いっぱい。
2006/03/25(土) 02:07:560933名無しさん@お腹いっぱい。
2006/03/25(土) 02:33:55OS-9ってshell 差し換えできましたっけ。
0934名無しさん@お腹いっぱい。
2006/03/25(土) 12:29:58command < file
というのと、
command '< file'
というのと、両方ありますよね。
どう違うんですか?
0935名無しさん@お腹いっぱい。
2006/03/25(土) 12:54:58日本語でおk
0936名無しさん@お腹いっぱい。
2006/03/25(土) 13:03:49ジュワジュワジュジュワワワワワ?
0937名無しさん@お腹いっぱい。
2006/03/25(土) 13:04:55AV Riderはシェルを換えられるというデモの意味もあった。
0938名無しさん@お腹いっぱい。
2006/03/25(土) 13:17:49知らないなら茶々入れるなよ!
0939名無しさん@お腹いっぱい。
2006/03/25(土) 13:22:08ありません
0940名無しさん@お腹いっぱい。
2006/03/25(土) 13:27:140941名無しさん@お腹いっぱい。
2006/03/25(土) 14:02:21はcommandへの引数は無し、標準入力はfileになる。
command '< file'
はcommandへの引数は一つで、それは '< file' という文字列。標準入力は変わらず。
だから、2つの書き方でやろうとしていることは全く違う。
実際にあるなら、その行を変更無しにそのままコピペしてみな。
0942名無しさん@お腹いっぱい。
2006/03/25(土) 14:08:27で、bash依存なのでお引き取りください。
0943名無しさん@お腹いっぱい。
2006/03/25(土) 14:50:560944名無しさん@お腹いっぱい。
2006/03/25(土) 14:58:01つべこべ言うなニート
0945名無しさん@お腹いっぱい。
2006/03/25(土) 14:59:190946名無しさん@お腹いっぱい。
2006/03/25(土) 14:59:30bash依存だとUNIXがぶちにくいんじゃない
0947名無しさん@お腹いっぱい。
2006/03/25(土) 15:42:320948名無しさん@お腹いっぱい。
2006/03/25(土) 15:54:520949名無しさん@お腹いっぱい。
2006/03/25(土) 17:50:14シェルにすると出ません。
UNIXとシェルでは何か違いがあるのでしょうか?
0950名無しさん@お腹いっぱい。
2006/03/25(土) 18:07:01英語でおk
0951名無しさん@お腹いっぱい。
2006/03/25(土) 18:46:24but when it is made into shell, it doesn't.
Is there any difference between UNIX and shell ?
0952名無しさん@お腹いっぱい。
2006/03/25(土) 18:50:41>Is there any difference between UNIX and shell ?
Yes.
0953名無しさん@お腹いっぱい。
2006/03/25(土) 19:00:24Thanks. Tell me why and how to make it work.
0954名無しさん@お腹いっぱい。
2006/03/25(土) 19:03:120955名無しさん@お腹いっぱい。
2006/03/25(土) 19:07:05レス数が950を超えています。1000を超えると書き込みができなくなります。