1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 ・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した
2 名前:処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう シェルスクリプト総合 その27 https://mevius.5ch.net/test/read.cgi/unix/1525337663/ mailto:シェルスクリプト総合 その28 [] [ここ壊れてます]
3 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 07:30:57.65 .net] その28は以下に移動しました。 シェルスクリプト総合 その28 mevius.5ch.net/test/read.cgi/tech/1532397676/
4 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:22:54.47 .net] FAQ Q. 秘密結社シェルショッカーってなんですか? A. しらん。どっかの変態団体やろ。近寄らんほうが良い。 Q. USP友の会ってなんですか? A. しらん。どっかの変態団体やろ。近寄らんほうが良い。 Q. シェル芸ってなんですか? A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。 Q. ユニケージ開発手法ってなんですか? A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
5 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:24:01.24 .net] シェルスクリプトの総合スレです。 初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。 スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずはテンプレートをご覧下さい。 ★A. お約束 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。 bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。 2. 質問する前に、まず自分で調べましょう。ただし、 「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。 3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。 4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は 控えましょう。 ★B. お約束の補足 1. macOS では、/bin/sh の実体は bash です。また、一般的に BSD 系 や GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。 ls (ハイフン)l /bin/sh や readlink -e /bin/sh で確かめて下さい。 2. 可搬性については、下記 F.1 を参照して下さい。 3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities ) を参照して下さい。 4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に 小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 ) 5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、 SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。 SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。 ( 下記 F.3 参照 )
6 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:24:52.02 .net] ★C. 初心者へのアドバイス 1. シェルスクリプトのことをシェルってゆーな 2. 知らないコマンドが出てきたら man コマンドで調べましょう。 3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。 apropos ないしは man -k でそれらしい単語による簡単な検索もできます。 4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。 5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。 6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が 適した処理にはそちらを使いましょう。 7. シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題は正規表現スレへ 8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照 www.speech-lab.org/~hiroki/csh-whynot.euc 9. cat file|すんなハゲ a. 詳細は "Useless Use of Cat" UUOC で検索して下さい b. 有用な場合も有ります Useful use of cat(1) 英文 www.in-ulm.de/~mascheck/various/uuoc/ ★D. シェルスクリプトでよく使うコマンド 1. 制御・条件判定系: [, test, expr, true, false, yes, getopts 2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut, paste, comm, join 3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、 find は -exec command {} + を推奨。 他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 ) 4. ディレクトリ系: basename, dirname 5. 出力系: echo, printf 6. 対話コマンド制御系: expect 7. http / ftp の処理自動化: wget, curl
7 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:25:30.27 .net] ★E. 学習用テキスト 1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/ (↑サイト消滅かも) ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf 2. UNIX FAQ LIST www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html (3. シェルを使おう - 導入からプログラミングまで - ( 2002年 ) www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ)) ★F. 参考リンク 1. 可搬性関連 a. autoconf マニュアル 移植性のあるシェルプログラム www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html b. Portability talk [Bash Hackers Wiki] 英文 Obsolete and deprecated syntax も見る価値有り wiki.bash-hackers.org/scripting/nonportable c. How to make bash scripts work in dash 英文 mywiki.wooledge.org/Bashism d. DashAsBinSh 英文 https://wiki.ubuntu.com/DashAsBinSh e. Portable Shell Programming 英文 www.in-ulm.de/~mascheck/various/portability/
8 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:26:16.74 .net] 2. POSIX The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文 pubs.opengroup.org/onlinepubs/9699919799/ 3. Traditional Bourne Shell 関連 a. The Traditional Bourne Shell Family History and Development 英文 www.in-ulm.de/~mascheck/bourne/ b. BourneShell / Where does the Bourne shell live? 英文 mywiki.wooledge.org/BourneShell c. The Heirloom Bourne Shell 英文 heirloom.sourceforge.net/ 4. マニュアル a. The Base Specifications Issue 7, 2013 Edition 英文 pubs.opengroup.org/onlinepubs/9699919799/nfindex.html b. FreeBSD 日本語マニュアル検索 www.jp.freebsd.org/man-jp/search.html c. JM Project (Japanese) linuxjm.sourceforge.jp/ 5. FAQ 等 a. UNIXの部屋 ( 2011年 ) x68000.q-e-d.net/~68user/unix/ b. Linux JF (Japanese FAQ) Project linuxjf.osdn.jp/ c. Advanced Bash-Scripting Guide 英文 www.tldp.org/LDP/abs/html/ d. Unix Programming FAQ 日本語訳 ( 2000年 ) www.race.u-tokyo.ac.jp/~moro/unix-programmer/
9 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:26:56.94 .net] 6. ツール a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます ShellCheck www.shellcheck.net/about.html b. vim 用 syntastic https://github.com/scrooloose/syntastic c. checkbashisms も使用してチェック duggan/shlint GitHub https://github.com/duggan/shlint ★G. 前スレ 1. ☆シェルスクリプトを勉強するにあたって☆ hibari.2ch.net/test/read.cgi/unix/989659936/ 2. 便利なシェルスクリプト見せろ pc.2ch.net/test/read.cgi/unix/996949546/ 3. シェルスクリプト総合 その1 pc5.2ch.net/test/read.cgi/unix/1101820646/ 後略。検索して下さい
10 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:40:37.63 .net] ★H. 関連スレ(UNIX板/プログラム板) 1. sed mevius.5ch.net/test/read.cgi/unix/1085730992/ 2. 正規表現 mevius.5ch.net/test/read.cgi/unix/1039165754/ 3. Regular Expression(正規表現) Part14 mevius.5ch.net/test/read.cgi/tech/1489511075/ 4. 【モダン推奨】Perlについての質問箱 50箱目 mevius.5ch.net/test/read.cgi/tech/1327110999/ 5. ECMAScript デス 6 mevius.5ch.net/test/read.cgi/tech/1483332914/ 6. Ruby 初心者スレッド Part 63 mevius.5ch.net/test/read.cgi/tech/1523954817/ 7. Pythonのお勉強 Part57 mevius.5ch.net/test/read.cgi/tech/1529888279/ 8. 【node.js】サーバサイドjavascript 5【Nashorn】 mevius.5ch.net/test/read.cgi/tech/1518528093/ ★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
11 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:59:28.57 .net] このスレは手違いで作成されたものです。 前スレ mevius.5ch.net/test/read.cgi/unix/1525337663/941- の流れを読むとわかる通り、 ワッチョイをつけられる板に移動しようという話になり、 特に反対も出ず mevius.5ch.net/test/read.cgi/tech/1532397676/ への移動が決まりました。 このスレは利用せず、 mevius.5ch.net/test/read.cgi/tech/1532397676/ への移動をお願いします。
12 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:07:59.90 .net] 移りたい奴はさっさと移れよ もうここ来んな
13 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:21:20.82 .net] 移りたくない理由って、前スレで自演荒らししてたからってのしか思いつかない。 このスレを使いたい人間ってのが荒らしだとしたら、このスレを捨てるのが適切では?
14 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 10:08:56.08 .net] お前が今やってることが荒らしだろ さっさと移れよ
15 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 10:25:08.21 .net] >>13 移りたくないのであれば、前スレで反論する機会があったのに、 一言も反論せずにいきなりこのスレを建てたんだから、 どう考えてもあなたがスレ荒らしでしょう。