レス数が1000を超えているけど、まだ書けるかも知れないよ。
シェルスクリプト総合 その23
1 :名無しさん@お腹いっぱい。 :2014/07/01(火) 17:55:50.75 .net シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 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でそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その22 http://peace.2ch.net/test/read.cgi/unix/1383260330/
2 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:00:07.04 .net すみませんがシェルに詳しい方のみ回答をお願いします
3 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:10:58.47 .net ・シェルスクリプトのことをシェルってゆーな
4 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:11:47.16 .net シャロスクリプトまだー?
5 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:12:25.94 .net その22 をそのままコピペしましたが その16にあったもの □関連スレ: □初心者向けリンク: □入門者向け書籍: □参考リンク: □最近のシェルスクリプト本: □関連書籍と関連リンク: □人間初心者へのお願い: □シェルスクリプトでよく使うコマンド: です。 今、追加案あればどうぞ
6 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:17:49.67 .net >>4 そんなのないよ
7 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:19:36.60 .net >>1 > 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 便利なものはどんどん使う方が頭いいと思うがなぁ。
8 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:21:16.64 .net このスレは純正シェル道の求道者達が集う道場スレです。 うかつに部外者が踏み込むとケガをする場合があるのでご注意ください。
9 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:58:07.03 .net 知らんがな
10 :名無しさん@お腹いっぱい。 :2014/07/01(火) 18:58:36.74 .net 忘れてた >>1 たて乙
11 :名無しさん@お腹いっぱい。 :2014/07/01(火) 20:10:01.64 .net 昨今の*nixなら某かの方法でbashは入手できるよね 純性UNIXはkshを愛してるみたいだけど時代の要請を理解してる
12 :名無しさん@お腹いっぱい。 :2014/07/01(火) 20:36:19.70 .net 別にbash限定のシェルスクリプト書いていけないわけではない 恥ずかしながらbashでしか動きません、と注釈付けてあれば 文句いう人は少ない
13 :名無しさん@お腹いっぱい。 :2014/07/01(火) 20:49:55.31 .net なら1行目で最初から解決してるんだね。よかったよかった
14 :名無しさん@お腹いっぱい。 :2014/07/01(火) 22:04:49.49 .net bashをログインシェルにしてる奴の作ったプログラムは全部GPLが感染するよ。
15 :名無しさん@お腹いっぱい。 :2014/07/01(火) 22:16:40.24 .net さあー、盛り上がってきたよ! じゃんじゃん自分の意見を書いていこう! ポータブル派保守系、時代はbash派革新系 シェルスクリプトに無理にこだわらない現実派 テンプレの募集もしていますよ その17、その18で消えたようだから、その16、その17を元に話しましょう
16 :名無しさん@お腹いっぱい。 :2014/07/01(火) 22:20:53.98 .net ややこしい操作するなら安易にperlでやる派
17 :名無しさん@お腹いっぱい。 :2014/07/01(火) 22:46:24.84 .net >>11 組み込みとかメモリが足りなかったら入れられないんじゃないかな。 PCでも何千とか起動すると重そう。
18 :名無しさん@お腹いっぱい。 :2014/07/02(水) 00:13:16.98 .net そういう特殊な環境の話はしてないっしょ。
19 :名無しさん@お腹いっぱい。 :2014/07/02(水) 00:29:19.31 .net >>7 誰もメンテできなくなったVBやCOBOLやExcelの 資産()を見てもそう思えるんなら、才能ないから コンピュータから手を引いたほうがいい。
20 :名無しさん@お腹いっぱい。 :2014/07/02(水) 00:48:45.98 .net bash を使うなとは言わんけど、bash でしか動かんものは #! 行でそうと宣言しておいてほしい。 つーか、#!/bin/sh と書かれていたら bash の独自拡張はぜんぶエラーにしてほしいんだが。 man によると sh という名前で起動されると POSIX 互換モードになるらしいけど、 あいかわらず bash 拡張がふつーに使えて違いがさっぱりわからん。
21 :名無しさん@お腹いっぱい。 :2014/07/02(水) 00:59:50.16 .net trapとセットでよく使うmktempとか結構システムによって挙動ちがうけど、純粋シェル道的にはどうやって実装するの?
22 :名無しさん@お腹いっぱい。 :2014/07/02(水) 04:30:46.92 .net >>20 ここに書けばエラーレスが出るよ。
23 :名無しさん@お腹いっぱい。 :2014/07/02(水) 05:59:05.00 .net >>20 bash で #!/bin/sh と書いたら、プロセス置換 <(command) とかが使えなくなるという違いはある。
24 :名無しさん@お腹いっぱい。 :2014/07/02(水) 15:49:33.90 .net >>20 Bourne Shellを自分で入れるのが一番良いかもね
25 :名無しさん@お腹いっぱい。 :2014/07/03(木) 15:20:26.48 .net >>20 例えばLinuxのDebian系ディストリだと そのために拡張控えめな dash (Debian版ash) があったりするね
26 :名無しさん@お腹いっぱい。 :2014/07/03(木) 15:31:45.75 .net 同じbashでも、#!/bin/shと書いて起動するとその動作モードが変わるという話をしてるんだけどね。 zshでも動作は変わる。が、ash(dash)は#!/bin/shと書いても#!/bin/ashと書いても何も変わらない。
27 :名無しさん@お腹いっぱい。 :2014/07/03(木) 15:47:52.68 .net >>20 >>26 たぶんPOSIX準拠でエラーのないスクリプトが正常動作する程度の機能なんだろう。 最低限それやっとかないとPOSIX準拠のシェルとして採用してもらえなくなるから。 厳密にPOSIX準拠で拡張ゼロのシェルを内部に別途実装するとか無駄だから、 そういう要望はBourne Shell入れてそっちでやってくれってスタンスなんじゃね?
28 :名無しさん@お腹いっぱい。 :2014/07/03(木) 16:06:37.72 .net 今後新しいシェルが出てきて乗り換えた時に、書き溜めたスクリプトが動くと嬉しいので、互換性指摘は嬉しい。 ただ、その時々によって必要性が違うので無視するかも。 つまり、互換性指摘はWarningということだ。
29 :名無しさん@お腹いっぱい。 :2014/07/03(木) 16:34:16.07 .net シェルスクリプトってインタプリタ言語だしWarning出さずにError出すイメージ
30 :名無しさん@お腹いっぱい。 :2014/07/03(木) 16:45:14.94 .net 何その勝手なイメージは
31 :名無しさん@お腹いっぱい。 :2014/07/03(木) 18:24:18.78 .net お前の勝手なイメージを押し付けるな!
32 :名無しさん@お腹いっぱい。 :2014/07/03(木) 18:59:57.41 .net × イメージ ○ イミッジ これを間違えると日本人と思われて馬鹿にされるので気を付けるようにw
33 :名無しさん@お腹いっぱい。 :2014/07/04(金) 00:34:23.82 .net × アイディア ○ アイデア
34 :名無しさん@お腹いっぱい。 :2014/07/04(金) 00:44:50.44 .net 日本人ってだけでバカにするのはアレな国の人だけだと思う
35 :名無しさん@お腹いっぱい。 :2014/07/04(金) 10:39:04.06 .net checkbashism使ってみるのはどうか。 https://alioth.debian.org/scm/browser.php?group_id=30755 PerlスクリプトなのでDebian以外でも普通に動くはず。
36 :名無しさん@お腹いっぱい。 :2014/07/04(金) 11:07:46.65 .net >>35 使ってみたことあるけどBourne shとの互換性チェックには全然ならないよ。
37 :名無しさん@お腹いっぱい。 :2014/07/04(金) 11:13:37.98 .net ポータブルなスクリプトがデフォなのは賛成だが、 デフォが Bourne shell ( 商用 UNIX 等で生き残っている Traditional Bourne shell と解釈しています ) とするのは反対 前から思っていましたが、多くの環境でわざわざインストールしないと使えない Bourne shell にこだわる必要性は、少ないと思う 皆さんが、ポータブル性は POSIX 相当でも OK なら、こんな風にしたい □お約束 ・特記なき場合は #!/bin/sh がデフォルトです。この場合、ポータビリティーに注意し Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。 bash/zsh/ksh/ash/dash などに依存する場合は明示しましょう。
38 :名無しさん@お腹いっぱい。 :2014/07/04(金) 11:20:56.93 .net その辺はスレ立てる人が勝手に決めてるだけだから 次スレ自分で立てればいいよ。
39 :名無しさん@お腹いっぱい。 :2014/07/04(金) 11:24:28.11 .net 今回立てた時に、やはり了承を得てからと思って、コピペにしました 本当は、>>7 の言うことも納得で、 > □回答者への注意事項: も消したかった
40 :名無しさん@お腹いっぱい。 :2014/07/04(金) 20:54:39.48 .net >>1 です 暇を見て、話題の途切れたときにでもテンプレ案出してみます
41 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:22:10.62 .net 連投失礼します。テンプレ案考えてみました。かなり手を入れました どんどん指摘して下さい ただし、こんな風にしろとかだけでは無く、具体的に修正したものを付けて下さい 指摘された事に、別の方の反論が無ければ、そのまま機械的に取り込みます 考慮が足りなかった場合は、後で条件を追加・変更する事も有ります 変更点 1. ">>1 A.3 を見てね" と簡単に指摘出来る様に、番号をふりました 2. 日本語とアルファベットとの間に半角スペースを入れました。/ ( ) 前後にも 3. お約束の項目でお約束で無い、前提知識等をお約束の補足に移動しました 4. 初心者でも参加しやすい様に、工夫しました ( 特にポータブル志向がハードルを上げ、参加をさまたげ無い様に ) 5. Bourne Shell ポータビリティー POSIX について、説明を加えました 6. MacOSX について触れていないのが気になったので、書き加えましたが、 /bin/sh と /bin/bash でバイナリーサイズ、inode が違うらしいです 詳しい方、ぜひ修正をお願いします https://discussions.apple.com/message/18600748 7. 過去ログから、テンプレートを復活させてみました。所々変えてます。 8. Wiki でなくこのスレで、気軽にテンプレ修正議論が出来る様に、してみました。
42 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:23:09.35 .net シェルスクリプトの総合スレです。 初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。 スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずはテンプレートをご覧下さい。 □A. お約束 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合ポータビリティーに注意し、 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。 bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。 2. 質問する前に、まず自分で調べましょう。ただし、 「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。 3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。 4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は 控えましょう。
43 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:23:52.16 .net □B. お約束の補足 1. Mac OS X では、/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 参照 )
44 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:24:44.97 .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 のシェルスクリプトは推奨されません。理由は下記を参照 http://www.speech-lab.org/~hiroki/csh-whynot.euc
45 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:26:23.53 .net □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
46 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:28:43.20 .net □E. 学習用テキスト 1. Bourne Shell自習テキスト ( 1993年 ) http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/index.html 2. シェルを使おう - 導入からプログラミングまで - ( 2002年 ) http://www.netfort.gr.jp/~tomokuni/lms/shell/ 3. 入門用図書 a. 特に話題に上らなければ削除します 4. お勧め図書 a. 特に話題に上らなければ削除します
47 :1 文字化け修正です ◆01VkPKFOHeoR :2014/07/05(土) 19:30:27.22 .net □E. 学習用テキスト 1. Bourne Shell自習テキスト ( 1993年 ) http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/index.html 2. シェルを使おう - 導入からプログラミングまで - ( 2002年 ) http://www.netfort.gr.jp/~tomokuni/lms/shell/ 3. 入門用図書 a. 特に話題に上らなければ削除します 4. お勧め図書 a. 特に話題に上らなければ削除します
48 :1 ◆01VkPKFOHeoR :2014/07/05(土) 19:31:15.26 .net □F. 参考リンク 1. ポータビリティー関連 a. autoconf マニュアル 移植性のあるシェルプログラム http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html b. Portability talk [Bash Hackers Wiki] 英文 Obsolete and deprecated syntax も見る価値有り http://wiki.bash-hackers.org/scripting/nonportable c. How to make bash scripts work in dash 英文 http://mywiki.wooledge.org/Bashism d. DashAsBinSh 英文 https://wiki.ubuntu.com/DashAsBinSh e. Portable Shell Programming 英文 http://www.in-ulm.de/~mascheck/various/portability/ 2. POSIX The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文 http://pubs.opengroup.org/onlinepubs/9699919799/
49 :名無しさん@お腹いっぱい。 :2014/07/05(土) 22:00:04.09 .net 自分の場合は書籍はあまり見てなかった 入門時に一番参照したのは、UNIX FAQ なんだよね (NetNewsに流れてたの) http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html 例えばサブシェルとかは、知ってないとハマってしまう >>47 のBourne Shell自習テキストは、HTML化がいまいちなので LaTeXの方を見て欲しい。誰かPDFで公開してないかな と思ったらあった http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
50 :名無しさん@お腹いっぱい。 :2014/07/05(土) 22:37:15.59 .net 参考リンクはともかく、学習用文書はいらなくないか? あまりテンプレ充実しすぎてても考え物な気がする 今までが1レスだったから特に しかしポータビリティって単語好きだね
51 :名無しさん@お腹いっぱい。 :2014/07/05(土) 23:12:47.63 .net 可搬性
52 :名無しさん@お腹いっぱい。 :2014/07/05(土) 23:39:10.47 .net POSIXのPはポータブルのP。
53 :1 :2014/07/06(日) 06:20:22.54 .net 連投規制中です。しばらく待ちましたが、いっこうに書き込めません 代行さんに書き込んでもらっています 続きは明日以降で。参考リンクが、まだ続いて、他に 前スレ、関連スレ、テンプレートの変更案 が有ります。これ以上長いと、問題有そうですが とりあえず、あげてみます
54 :名無しさん@お腹いっぱい。 :2014/07/06(日) 11:44:27.01 .net テンプレ貼るのに連投規制食らうようなものはいかんだろう。 つーか、今テンプレ決めて次スレ立つの何年後だよwww
55 :名無しさん@お腹いっぱい。 :2014/07/06(日) 16:59:31.66 .net 前スレは1年かからなかった。
56 :1 前置き1分割E2回が余分です ◆01VkPKFOHeoR :2014/07/06(日) 19:55:48.38 .net 3. Traditional Bourne Shell 関連 a. The Traditional Bourne Shell Family History and Development 英文 http://www.in-ulm.de/~mascheck/bourne/ b. BourneShell / Where does the Bourne shell live? 英文 http://mywiki.wooledge.org/BourneShell c. The Heirloom Bourne Shell 英文 http://heirloom.sourceforge.net/ 4. マニュアル a. The Base Specifications Issue 7, 2013 Edition 英文 http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html b. FreeBSD 日本語マニュアル検索 http://www.jp.freebsd.org/man-jp/search.html c. JM Project (Japanese) http://linuxjm.sourceforge.jp/ 5. FAQ 等 a. UNIXの部屋 ( 2011年 ) http://x68000.q-e-d.net/~68user/unix/ b. Linux JF (Japanese FAQ) Project http://linuxjf.sourceforge.jp/
57 :1 ◆01VkPKFOHeoR :2014/07/06(日) 20:07:38.32 .net c. Advanced Bash-Scripting Guide 英文 http://www.tldp.org/LDP/abs/html/ d. Unix Programming FAQ 日本語訳 ( 2000年 ) http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/ 6. ツール □G. 前スレ 1. ☆シェルスクリプトを勉強するにあたって☆ http://hibari.2ch.net/test/read.cgi/unix/989659936/ 2. 便利なシェルスクリプト見せろ http://pc.2ch.net/test/read.cgi/unix/996949546/ 3. シェルスクリプト総合 その1 http://pc5.2ch.net/test/read.cgi/unix/1101820646/ 中略。検索して下さい 4. シェルスクリプト総合 その23 http://peace.2ch.net/test/read.cgi/unix/1404204950/
58 :1 次スレ早め立おくどう? ◆01VkPKFOHeoR :2014/07/06(日) 20:12:09.15 .net □H. 関連スレ 1. sed http://peace.2ch.net/test/read.cgi/unix/1085730992/ 2. 正規表現 http://peace.2ch.net/test/read.cgi/unix/1039165754/ 3. Regular Expression(正規表現) Part12 http://peace.2ch.net/test/read.cgi/tech/1387257592/ 4. Perlについての質問箱 63箱目 http://peace.2ch.net/test/read.cgi/tech/1392906213/ 5. ECMAScript デス 4 http://peace.2ch.net/test/read.cgi/tech/1325448978/ 6. Rubyについて Part49 http://peace.2ch.net/test/read.cgi/tech/1382307475/ 7. Pythonのお勉強 Part49 http://peace.2ch.net/test/read.cgi/tech/1387528488/ 8. 【node.js】サーバサイドjavascript 2【Rhino】 http://peace.2ch.net/test/read.cgi/tech/1358937029/
59 :1 ◆01VkPKFOHeoR :2014/07/06(日) 20:14:23.19 .net □I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。 1. F.6 ツール a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます ShellCheck http://www.shellcheck.net/about.html
60 :1 ◆01VkPKFOHeoR :2014/07/06(日) 20:20:15.84 .net □J. テンプレートの変更案や、おすすめの本、リンク等が有りましたら続けてどうぞ! 1. 検索しやすい様に、先頭に "コメント複数行\n指示\n□X" を付けて指定して下さい。 追加や、削除、挿入、移動、分割等と適切に書いて下さい。 900 レスまでに別の方の反論が無ければ、次にスレッドを立てる人が適当に判断して 取り込むはずです。 2. レス例 スクリプトスレを列挙するのは不要に感じる 削除 □H. 関連スレ H.5から8 ECMAScript, Rubyについて, Pythonのお勉強, サーバサイドjavascript 3. レス例 これは、聖なる本 追加 □E. 学習用テキスト 4.お勧め図書 a 伝承シェルプログラミング ( 199X年 ) http://www.example.net/404.html | テンプレートの変更案や、お勧めのリンク、本等が有りましたら、 V あ、張り切って〜、どうぞ〜! 案じゃ無くてつぶやきでも、どうぞ〜!
61 :1 ◆01VkPKFOHeoR :2014/07/06(日) 20:42:24.70 .net 自分でも追加してみます。syntastic とか、shlint とかって、使っている人少ない みたいですがどうですか? 追加 □F 6. ツール b. vim 用 syntastic https://github.com/scrooloose/syntastic c. checkbashisms も使用してチェック duggan/shlint GitHub https://github.com/duggan/shlint >>49 案 挿入 □E. 学習用テキスト 3. UNIX FAQ LIST http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
62 :1 ◆01VkPKFOHeoR :2014/07/06(日) 20:52:47.98 .net >>49 案 修正 □E. 学習用テキスト 1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/index.html http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf # >>50 削除どうしましょう?余計そうなものが他にも有るので、ご意見下さい。 # 出来れば、初心者も歓迎する雰囲気を消したくないのと、>>49 とぶつかるので。 # >>50 案 長すぎるので、学習用テキストは不要ではないか # 削除 # □E. 学習用テキスト # あと、ポータビリティーについて、私は違和感が無かったのですが、日本語じゃないかも。 # いくつか書籍も調べました。書き込めたら、別に書きます。 # 回りくどい書き方しましたが、ツール類のご意見下さい。 # 以上です。連投失礼しました。 # >>49 UNIX FAQ LIST 見覚えある。なつかしい。fj とかも見てましたよ。買い物したり
63 :名無しさん@お腹いっぱい。 :2014/07/06(日) 22:40:39.84 .net portability の訳語についてです。移植性、汎用性、可搬性と訳されているようです ポータビリティーはそのままじゃあ通じないのかなあ?しっくりくる言葉のご意見下さい O'Reilly Japan - 詳解 シェルスクリプトでは、移植性 としています 原著 Classic Shell Scripting Shell Portability Issues and Extensions 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 汎用性としています。原著は未確認 可搬性は、O'Reilly Japan - 入門 bash や、bashクックブックで使われています スクリプトではないですが、Small is beautiful. ではじまる、UNIX 哲学とかでは 本や、ネットを見ると Choose portability over efficiency. で移植性や、移植しやすさ あと、F.1.a autoconf マニュアル は、移植性のあるシェルプログラム です 次に、連投規制についてですが、もしかして誤解されていたら残念なので一応 前置き、1 候補の A. B を分割して書き込んだ事、E を 2 回書いた事で、 3 レス分は余計に書いていますので、一応ほぼ全てを一度に書き込めはします 書けない 2 レス分+αは、スレ消化前に少し早めに立てて、分けて書き込むとかで 無理ではないかと思います ただ、今までが 1 のみだったので、>>50 ももっともです。どんどん書き変えて下さい
64 :名無しさん@お腹いっぱい。 :2014/07/06(日) 22:45:14.31 .net わりと どうでもいいよね〜 ね〜♪ _ ‐..::  ̄ ̄ ::::... 、 . ィ r'::/ ::ィ:::::::::::j:::::::ヽ::::\ ,._.._ .......、._ _ /:/l! | ::|::/ |::::::::∧:::レ::l:::| :::::rヘ ヽ :~""''.>゙' "~ ,、、''‐'、| l ::仏_ノヘ:/ ー- ハ:::!::::::|::::i ゙、'、::::::ノ:::::::_,.-=. _〜:、 /::::リy=ミ ' ィ=ミ /:::::!::::/:::::! ``、/:::::::::__....,._ `゙'Y' _.ェ-、..._ |::::{xx xx/::::::「)'|:::::::| ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 lハ:仆 ..._ヽフ /:::: /´ |:::::::| " .!-'",/ `'-‐'') /\ ` Y::::ソ勺 7イV_ !:::::::! .-''~ >'゙:: ‐'"゙./ ヽ. __ |::/ 爻___ん'´ッ'⌒ヽ! :::::! //::::: ', (__,、\/ /‐―一弋{、 /  ̄_) ' /::::: .:'; \ ' { :::\ /~::!
65 :名無しさん@お腹いっぱい。 :2014/07/06(日) 22:50:31.53 .net どうでもよくない
66 :名無しさん@お腹いっぱい。 :2014/07/06(日) 22:55:44.82 .net めっちゃ頑張ってるのは評価するが需要にあってるかどうか微妙 レスを見ても長すぎるテンプレを褒める書き込みはない その16でどんな議論があったのかは知らんが、今の提案は全部長文すぎて読む気が起きん Small is beautifulなんだろう?
67 :名無しさん@お腹いっぱい。 :2014/07/06(日) 23:03:24.69 .net ―┼‐ ノ / | --ヒ_/ / \ヽヽ ー―''7 `」 ┼, 二Z二 レ / /´レ' \ ―7 ̄} | ー-、 / (__ (|フ) (__ノ _ノ ∨` ノ / / _ノ \_ ─┼- / | ‐┼- | ー|― ─┼─ | \ レ /  ̄Tー / ノ -─ (二フヽ \/ _ノ (二フ\ ヽ_ノ / 、__ i';i /__Y ||真|| /⌒彡 _ ||露|| /⌒\ /冫、 ) ・・・・・・。 \ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄\ `./⌒ i ` /ゝ _,,..,,,,_ ||\`~~´ (十万石) \( > ('\\ ./ ,' 3 `ヽーっ ・・・・・・。 ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄\`つ ⌒ _) l ⊃ ⌒_つ .|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| `'ー---‐ ( 'A) ・・・。 〃∩ ∧_∧ <⌒/ヽ___ /(ヘ)ヘ ⊂⌒( ・ω・) ・・・。 <_/____/ zzzz・・・ `ヽ_っ⌒/⌒c
68 :名無しさん@お腹いっぱい。 :2014/07/06(日) 23:53:00.43 .net テンプレはどっかのwikiに置いてよ。
69 :名無しさん@お腹いっぱい。 :2014/07/07(月) 00:09:44.87 .net http://info.2ch.net/ 2ch公式のwikiがあるからここ利用したら良いよ
70 :名無しさん@お腹いっぱい。 :2014/07/07(月) 06:30:40.74 .net >>64 勝手に進めてま〜す♪ >>66 "Small is beautifulなんだろう?" は必要ですか?皮肉っぽく不快です 読む気が起きないなら、どこを削除するか具体的にお願いしますとは言えないので、 ごっそり削除した案を上げておきます 長くなった部分は、1.過去ログの内容も多く、他に 2.移植性、3.POSIX、 4.Bourne Shell、5.関連スレや、6.テンプレ変更案を促す内容を追加しましたが、 ほぼ削除しました >>49 で UNIX FAQ を上げてもらっているので、何らかの参考リンクは 有ってもいいのでしょうが、取捨選択、別途追加は皆さんにお任せします >>68 >>69 せっかくの提案ですが、今後とも wiki でなくこのスレで進めた方が 良いと考えているので、少なくとも私は作りません。申し訳ない
71 :名無しさん@お腹いっぱい。 :2014/07/07(月) 06:31:14.62 .net 長すぎて、読む気がしない 修正、削除 □A. お約束 --- >>42 そのまま □B. お約束の補足 --- 下記。2, 3, 4 参考リンクへの参照を止め直接記入 5 削除 □C. 初心者へのアドバイス --- >>44 そのまま □D. 前スレ --- に変更して直前スレのみにする 1. シェルスクリプト総合 その23 http://peace.2ch.net/test/read.cgi/unix/1404204950/ □その他 --- 削除
72 :名無しさん@お腹いっぱい。 :2014/07/07(月) 06:31:57.21 .net □B. お約束の補足 1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。 ls -l /bin/sh や readlink -e /bin/sh で確かめて下さい。 2. ポータビリティーについては、下記を参照して下さい。 a. autoconf マニュアル 移植性のあるシェルプログラム http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html b. Portability talk [Bash Hackers Wiki] 英文 http://wiki.bash-hackers.org/scripting/nonportable 3. POSIX については、man 7 standards や下記 ( の特に Shell & Utilities ) を参照して下さい。 The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文 http://pubs.opengroup.org/onlinepubs/9699919799/ 4. Traditional Bourne Shell については、下記を参照して下さい。 a. The Traditional Bourne Shell Family History and Development 英文 http://www.in-ulm.de/~mascheck/bourne/ b. The Heirloom Bourne Shell 英文 http://heirloom.sourceforge.net/
73 :名無しさん@お腹いっぱい。 :2014/07/07(月) 07:01:26.69 .net テンプレなんてドーデモエー テンプレ検討だけでスレ埋めるなよ シェルスクリプトの話しろよ
74 :名無しさん@お腹いっぱい。 :2014/07/07(月) 09:01:44.79 .net ポータビリティーがそのままじゃ通じないとか言ってんじゃねえんだよ ただ読み方カタカナ表記しただけの長々しいカタカナが君には見やすいのか 俺はそう思わないしカタカナ列挙した糞翻訳は読みづらいし頭に入ってこない 極論すれば英語のままの方がマシだ で、 できるだけ環境問わずそのまま使えるようにするのは 可搬性の向上なんだよ 移植性だと書き換え前提でその書き換えをしやすくする感じが強くなる 汎用性は可搬性みたいなことよりも*目的*を限定しない感じになる
75 :名無しさん@お腹いっぱい。 :2014/07/07(月) 09:16:21.73 .net /.:::.::.::.::.:: ト\ /∧:.::.::.::|:.::.:: |:.::.::.:.::.::.:.::.::.:.\ .: ::.::.::.::.::. |-‐''"´│:.::.::.|:.::.::.jヽ ::.:.::.:.::.::. |::.:.::.:. .: ::.::.::.::.: l:| |:j.::._∧::.:/ ハ.::.::. }::.::.:|^';.::.::'. .: ::.::.::.::.: |:!=-、 ノ:'!.::;仁∨ j:ハ.:: ;'::.::.::|ノ} :.::.'、 ふ〜ん …で? .::.::.|.::.::.::.|:ヽ ∨ '弌示圷 j/.:: /.::| '.::.::.::.:ヽ .:|.: |.::.::.::.'ャ弌示 ゝ.:ソ /.::./ :.::|/.::.::.::.::.::.::\ .::!八.::.::.::ヘ ゝ.:ソ  ̄´厶:イ :.::.:|、.::.::.::.::.::.::.::.:\ 、ヽ.:\.::.::.:.. ` , |:i.::.::.::| \.::.::.::.::.::.::.::.:. \ .丶.:\:|>‐ヘ | .::.::.::| 丶、 _;rz: -‐ ⌒丶、 \:〈 ^トーゝ_ --、 1 :.::.::.| // \ |ヽ´ ⌒>‐ 、 、<. │.::.::. ! // 丶、 |.:: \ `く. Y:| \|.::.::.::.| |:l \ |.::.::.::.`7ーr:、 ,ノ::lヽ _|.::.::.: | / j:j \ |.::.::.:: / |:/ / |::{ |.::.::.: |´ ̄ /:/ 、__ \ |.::.::.:/ / / .l八 │:.::.: | |::| '⌒丶、
76 :名無しさん@お腹いっぱい。 :2014/07/07(月) 09:18:42.70 .net 割りと胴で萌ぇ
77 :名無しさん@お腹いっぱい。 :2014/07/07(月) 09:46:44.64 .net テンプレは自分で勝手に決めていいよ。
78 :名無しさん@お腹いっぱい。 :2014/07/07(月) 10:48:06.14 .net いちいち誰にでもわかりやすいようにする必要はない。 ポータビリティで通じるし、通じないならそいつがタコなだけ。 シェルスクリプト書くような奴は、単語の意味を自分で調べるくらいできる。 ここは幼稚園か? 違うだろ? 出来ない奴は相手にしなければいいだけ。 目の前にすぐ調べられる魔法の箱があるのに活用できない奴は、もはや現代では馬鹿の謗りを免れえない。
79 :名無しさん@お腹いっぱい。 :2014/07/07(月) 12:18:24.40 .net bashって$RANDOMが定義済みなんだな。 自分で範囲を決めて作ったランダムを$RANDOMに突っ込んで、 呼び出したときの値の範囲がおかしいから、???ってなったわ。 頭にBASH_つけるとかして欲しかったな。
80 :名無しさん@お腹いっぱい。 :2014/07/07(月) 12:33:34.10 .net >>79 それは bash独自じゃなく、zshでも kshでも同じだよ。 RANDOMを普通変数として使いたいなら、 先に unset RANDOM してから RANDOM=1234 とか自分で代入すれば値は変化しない。
81 :名無しさん@お腹いっぱい。 :2014/07/07(月) 13:11:10.01 .net zshだとunsetしても普通の変数にはなってくれないよ
82 :名無しさん@お腹いっぱい。 :2014/07/07(月) 13:43:36.07 .net 純正シェルで使って良いシェル変数は$aから$mの13個だけだと言ってるだろうが。
83 :名無しさん@お腹いっぱい。 :2014/07/07(月) 13:46:22.00 .net いま純正シェルの話じゃないから。
84 :名無しさん@お腹いっぱい。 :2014/07/07(月) 17:41:52.70 .net ファイルがたくさんあって、それら全部に対して ・手っ取り早く文字コードを調べるのにfileコマンドを使う (file *) ・正確に出したい時にiconvコマンドを使う (iconv -f code < filename) という事をやってたんだが、手っ取り早く正確に文字コードを調べる方法って何かないかな? むしろ皆のやり方を知りたい
85 :名無しさん@お腹いっぱい。 :2014/07/07(月) 17:42:00.33 .net 前スレ http://peace.2ch.net/test/read.cgi/unix/1383260330/990 のつり餌 > bourneシェルの中でもV1-V6はコマンドラインインタプリタとしての... > PWBシェルでも動作可能なことが純正シェル道 V1 - V6 は Bourne shell ではなく、Thompson shell その22 のスレのデフォルトシェルは Bourne shell であって Mashey shell ( PWB shell ) ではない よって、前スレ >>983 を失格というのは間違い そもそも、Bourne shell の B は大文字で書く
86 :名無しさん@お腹いっぱい。 :2014/07/07(月) 17:44:47.15 .net 純性シェルじゃないと何が困るの?
87 :名無しさん@お腹いっぱい。 :2014/07/07(月) 17:45:52.30 .net >>84 nkf -g
88 :名無しさん@お腹いっぱい。 :2014/07/07(月) 17:46:08.15 .net $()使うなとか言い出す輩がいる
89 :名無しさん@お腹いっぱい。 :2014/07/07(月) 19:14:22.01 .net >>88 $( )を使わないようにすることは、Bourneシェルを基準にすることで達成されるから、 純正シェルまで遡る必要はなくなる。
90 :名無しさん@お腹いっぱい。 :2014/07/07(月) 19:16:57.19 .net nkf←古くて時代遅れ iconv←今風これからの標準 って認識あるんだけどnkfの方が全体的に使いやすいし 機能も豊富だからつい使っちゃうんだよなあ
91 :名無しさん@お腹いっぱい。 :2014/07/07(月) 19:59:00.94 .net iconvって文字コードにエラーがあるとファイルの途中で異常終了しちゃうから使いにくい。
92 :名無しさん@お腹いっぱい。 :2014/07/07(月) 20:38:05.32 .net >>86 困るとかじゃなく、あれは武道とか精神修練とかそっち系のアレだから。
93 :名無しさん@お腹いっぱい。 :2014/07/07(月) 23:24:27.14 .net nkf入ってないんだよなうちの会社の環境… 別環境でnkf -gがめっちゃ使いやすかったからなんで入ってないんだと思ってしまう 客先環境だから仕方ないんだけどさ
94 :名無しさん@お腹いっぱい。 :2014/07/08(火) 11:12:40.53 .net >>90 にならってみた nkf ← 日本語 / 自動判定有り / 入っていない事がある / 素敵 iconv ← 多言語 / 自動判定無し / POSIX / i昆布とか名前が嫌い >>84 が日本語と限定してないので nkf と思っても、考えてしまった >>91 iconv -c とか? >>86 コンパイル時に使用するスクリプトでは、場合により v7 shell でも動く様に書いた方がいい みたいです autoconf マニュアル (24 April 2012) を見ると v7 shell や SVR2 がどうのと書いています # commentsも使うなとか言い出す輩です。: comments とかは何かで使った覚えが有るけど >>78 でポータビリティで通じない奴はタコだと。確かに >>74 なるほど、全ての場合についてのコメントが参考になります コンピュータと電算機の様に、カタカナvs漢字については個人・職業差も有りますが、 >>51 >>74 で可搬性を積極的に押される方がいるし、 >>63 >>78 は特にポータビリティ押しではないので、今のところ可搬性に決まりですか?
95 :名無しさん@お腹いっぱい。 :2014/07/08(火) 11:13:47.31 .net テンプレがどうでも良い方は、どうでも良いとして、>>65 >>73 の意見もあるので、 話題が尽きた時等、スクリプトの話の邪魔にならない程度に、遠慮ぎみに進めたいと思います 特にレスが無ければ、長いという意見と可搬性という意見で、>>71 を元に可搬性としたものに なりそうです
96 :名無しさん@お腹いっぱい。 :2014/07/08(火) 11:24:27.61 .net iconv -c でも駄目な場合がある。 nkfはそういう場合でもデコード頑張る。
97 :名無しさん@お腹いっぱい。 :2014/07/08(火) 12:43:54.29 .net nkfの方が日本語を扱う上で現実的
98 :名無しさん@お腹いっぱい。 :2014/07/08(火) 12:48:17.25 .net この程度のテンプレは長いに入らん スレ立てる人が面倒で無ければテンプレ付ければいいし 面倒なら誰かに任せてもいい
99 :名無しさん@お腹いっぱい。 :2014/07/08(火) 15:55:56.14 .net いや長い まぁどうせ1回読んだらもう読まないし長いから何が困るってこともないんだが その長いテンプレを議論する為に何レスも長文が続くのはゴメンだわ
100 :名無しさん@お腹いっぱい。 :2014/07/08(火) 19:18:04.90 .net >>95 そうそう、 http://peace.2ch.net/test/read.cgi/bgame/1373037042/ のテンプレと比べたら大したことないよね
101 :名無しさん@お腹いっぱい。 :2014/07/08(火) 23:55:30.14 .net ふむ。ちょっとテンプレ短すぎかもしれないね
102 :名無しさん@お腹いっぱい。 :2014/07/09(水) 01:02:34.06 .net >>100 テンプレくっそ笑ったwww
103 :名無しさん@お腹いっぱい。 :2014/07/09(水) 01:32:21.63 .net こ、これは凄いなw
104 :名無しさん@お腹いっぱい。 :2014/07/09(水) 01:46:32.61 .net >>102 そのスレのテンプレはこれでもかなり簡略化されたほう 過去ログだと200レスくらいテンプレだったりする2chでは伝説のスレ
105 :名無しさん@お腹いっぱい。 :2014/07/09(水) 02:58:02.90 ID:H147htlKQ とある学校に勤務しているものです。すみませんが、質問させてください。 linuxのfortranコンパイラ(g77)で、 g77 hogehoge.f -o hogehoge.f とやると、実行ファイルがソースを上書きするので困っています。 自分はさすがに気をつけていますが、学生がたまに失敗してしまいます。 以前はf2c用のシェルスクリプトを少し修正して上書きしないように していたのですが、勤務先が変わってそのスクリプトが手元にありません。 とりあえず、/usr/bin/f77に #!/bin/sh cp $1 $1.backup /usr/bin/g77 $* というような、サルでもわかるようなシェルスクリプトを書いて、 ソースをbackupファイルに一時保存させてしのいでいるのですが はっきりいって美しくありません。ソースをリードオンリーにして コンパイル後に再びパーミッションを戻すことも考えたのですが、 コンパイル中に Ctrl-Cで逃げてしまうと不都合が生じます。 ようは第一引数(hogehoge.f)と -o 以下の引数が同じであれば 警告を出してexitするようにすればいいのですけれど、 私がシェルスクリプトを書いていた時代はすでに20年以上前の遠い昔、 細かな文法は忘却の彼方です。 どなたかお優しいかた、助けていただけるとありがたいです。 よろしくお願いします。
106 :名無しさん@お腹いっぱい。 :2014/07/09(水) 07:17:36.50 .net >>100 >>104 100レス目にふさわしい書き込みGJ 111レスでもすごいが、以前は200もあったのか!? 個性的なスレだ
107 :名無しさん@お腹いっぱい。 :2014/07/09(水) 21:13:58.36 .net >>100 キーボードでスクロールする俺には辛いテンプレだわ…w
108 :名無しさん@お腹いっぱい。 :2014/07/11(金) 11:29:07.96 .net このスレって「シェルスクリプト高速開発手法入門」とかUSP MAGAZINEとか読んでる人いるの?
109 :名無しさん@お腹いっぱい。 :2014/07/11(金) 11:59:21.47 .net USP MAGAZINE → 定期購読 シェルスクリプト高速開発手法入門 → 買ったけど積ん読状態
110 :名無しさん@お腹いっぱい。 :2014/07/12(土) 02:57:49.50 .net 高速開発手法って発売前にちょっと噂になって興味あったけど、アマゾンの「なか見!」読んだら一気に冷めたわ Cとかで書いたプログラムをシェルから実行するだけみたいだし、本書で解説するbashCMSは著者自身は使って無くて、 WordPress使った方が得って著者自身が書いてて、え?じゃあ意味無いじゃんって 完全にネタ本
111 :名無しさん@お腹いっぱい。 :2014/07/12(土) 03:04:31.69 .net 釣れればいいんですよ釣れれば。 >>109 みたいにお金出してくれる人が偉いんです。
112 :名無しさん@お腹いっぱい。 :2014/07/12(土) 03:19:42.90 .net ここシェルスクリプトについての愚痴でもいいんすか? いま、Visual Cで書かれたソースコードを c shellにマイグレーションするという とんでもないプロジェクトに今月から投入された 俺に慰めの言葉とアドバイスをくれ あと質問だが、shellスクリプトとシェルスクリプト、どっちが正しい表記?
113 :名無しさん@お腹いっぱい。 :2014/07/12(土) 04:01:04.76 .net >>112 君は多分自分の仕事をきちんと理解してないなw
114 :名無しさん@お腹いっぱい。 :2014/07/12(土) 04:09:54.37 .net c shellて忌まわしきはcshのcshだよね
115 :名無しさん@お腹いっぱい。 :2014/07/12(土) 07:59:48.46 .net gccとかmakeとか、シェル上のコマンドを使ってCプログラムを開発という意味だったりして
116 :名無しさん@お腹いっぱい。 :2014/07/12(土) 14:35:12.56 .net >>109-110 実は自作自演
117 :名無しさん@お腹いっぱい。 :2014/07/12(土) 14:41:47.48 .net シェルスクリプトとはほとんど関係ないけど、とりあえずネタふり http://overthewire.org/wargames/bandit/
118 :名無しさん@お腹いっぱい。 :2014/07/12(土) 20:21:13.77 .net シェルterminalに直接ソースを書いてhello worldってできるの?
119 :名無しさん@お腹いっぱい。 :2014/07/12(土) 22:19:06.09 .net http://peace.2ch.net/test/read.cgi/unix/1331382186/841
120 :名無しさん@お腹いっぱい。 :2014/07/14(月) 00:42:07.40 .net はじめまして、誘導されて来ました。質問させて下さい。 ubuntu 11.20です。 1 yyyy-mm-dd ... n yyyy-mm-dd というテキストから、各行を名前に持つディレクトリを n個 生成するのはどうしたらできますか? また、できたディレクトリに、各日に撮影されたデータを 移動するうまいやり方があったら教えて下さい。 ファイル名の頭がyyyy-mm-ddとなっているのと、exif情報があります。 iphoneで撮影してdropboxのcamera uploadsに溜まっている 写真を整理しようと思い、 ls -h cut -c-11 uniq を調べながら使って冒頭のテキストを作るところまでできたところです。 「それならそもそもこういうやり方をすればもっと上手い」とかでも構いません。 当方プログラミングはほとんどわかりませんが、以上よろしくおねがいします。
121 :名無しさん@お腹いっぱい。 :2014/07/14(月) 01:32:38.62 .net >>120 cat テキスト | xargs mkdir でディレクトリを作れる。 テキストを使わないなら ls -1 | cut -c -11 | uniq | xargs mkdir でもいいと思う。 ファイルの移動は、ファイルとディレクトリの 4文字2文字-2文字(日付の部分) が一致することを利用する。 for i in ????-??-?? ; do mv -i "$i"?* "$i"/ ; done | (パイプ)と xargs と ? と for文 で出来るから、意味を調べていくといいと思う。
122 :名無しさん@お腹いっぱい。 :2014/07/14(月) 01:33:41.74 .net >>120 mkdir2種類。 $ cat dates |while read n date;do mkdir $date;done $ cut -d ' ' -f 2 dates |xargs mkdir move $ find . -mindepth 1 -type d -printf "%f\n"|while read d;do find . -type f -name "$d*" -exec mv {} $d \; ;done
123 :名無しさん@お腹いっぱい。 :2014/07/14(月) 01:40:38.50 .net >>120 そもそもjhead -nで出来た気がする。
124 :名無しさん@お腹いっぱい。 :2014/07/14(月) 01:58:51.30 .net >>123 これで文句ないだろ。 $ jhead -nf%Y-%m%d/%f *.jpeg -nfのfは重複防止だから、場合によってはない方がいいかも。
125 :名無しさん@お腹いっぱい。 :2014/07/14(月) 23:22:43.26 .net ログファイル等の検索で、 「ある文字列が最初に出た行以下すべてを表示する」場合、sedコマンド以外で簡単な方法ないでしょうか? (有った気がするのですが忘れてしまいました)
126 :名無しさん@お腹いっぱい。 :2014/07/14(月) 23:49:03.52 .net >>125 grepで-Aをでかくするとか、grepで行番号出させて最初の行番号からtailするとか
127 :名無しさん@お腹いっぱい。 :2014/07/15(火) 00:44:39.09 .net >>125 $ awk '/ある文字列/,0' ログファイル とか?
128 :名無しさん@お腹いっぱい。 :2014/07/15(火) 09:12:14.40 .net 改行または先頭からある文字列までをげとしておいて 先頭からある文字列までをそれで置き換えればいいのさ
129 :名無しさん@お腹いっぱい。 :2014/07/15(火) 09:29:12.58 .net お前は何を言ってるんだ
130 :名無しさん@お腹いっぱい。 :2014/07/15(火) 10:10:18.21 .net >>125 なんで sed じゃだめなん?
131 :名無しさん@お腹いっぱい。 :2014/07/15(火) 10:53:40.15 .net >>125 findじゃないのか?
132 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:20:14.93 .net >>131 findでどうやるの?
133 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:36:05.62 .net ぱっと見awkで簡単にいけそうだなっと思ったが >>127 がどうなってんのか簡単過ぎてよくわからないw
134 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:42:15.10 .net sedがダメという状況でawk使うというのは解決になってない気がしなくもない。 >>133 パターン条件だけ書いてデフォルトprintしてるだけだろ
135 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:48:32.55 .net >>133 行範囲の終了条件が 0(偽)だからいつまでも一致せず、最後の行までという意味になる。
136 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:50:06.54 .net >>133 sed -n '/regex/,$p' といっしょ。awk はファイル終端を表す $ が使えないので、 $ のかわりに常に偽の 0 で代用してる。
137 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:52:21.20 .net ちょっと苦しいが、>>126 以上の案が思いつかん… tail -n $(( $(wc -l < file) - $(grep -c 'pattern' file | head -n 1) )) file なんかすごい簡単にいけそうなのになにこれキモい… sedならsed '/pattern/,$!d' fikeでいいのに
138 :名無しさん@お腹いっぱい。 :2014/07/15(火) 11:52:49.79 .net なるほど ,0の部分がよくわからなかったんだ 0が一致しないから終わりまで全部って意味になるのね
139 :名無しさん@お腹いっぱい。 :2014/07/15(火) 12:01:32.63 .net >>127 みたいに簡単に書けるならsedでもawkでもいいんじゃね?w
140 :名無しさん@お腹いっぱい。 :2014/07/15(火) 12:17:18.82 .net 俺の中ではsedでいいじゃんという結論になっている
141 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:02:52.08 .net なんでsedじゃだめなんだろう。
142 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:17:40.07 .net ある文字列の検索が終ったあとは余計なCPUパワーを使わずに単純出力させたい。 sedを使う方法だとログを表示中(| less してるとかを想定)は、ずっとsedプロセスが残ったままで、それを経由するので無駄。 とか?
143 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:19:21.62 .net >>137 >>126 はこんな感じとして、どういう事? tail -n "+$( grep -ne "$regex" "$file" | head -n 1 | cut -d : -f 1 )" "$file" ついでに、マッチした行の n 行下からの印字 (GNU sed) sed -ne "/${regex}/,\$ { /${regex}/,+$(( n - 1 )) d; p }" "$file"
144 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:29:06.38 .net >>142 がいいことを言った。 lessで表示する前提なら、 less +/ある文字列 logfile だけでいいじゃんw
145 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:37:26.67 .net >>142 それsed以外の方法でもたいてい同じになるんじゃね。
146 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:39:25.76 .net なぜsed禁止なのか>>125 に聞きたい。 外野の憶測じゃないく。
147 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:55:45.10 .net >>142 つきるめるなら、文字列がマッチした時点でその行の先頭を指してる標準出力ファイルディスクリプタをもったまま 何らかのプログラムをexecするプログラムを作れということか! いらねえw
148 :名無しさん@お腹いっぱい。 :2014/07/15(火) 13:57:06.69 .net 「男は度胸!何でも試してみるもんさ」
149 :名無しさん@お腹いっぱい。 :2014/07/15(火) 14:01:24.62 .net >>146 禁止なんて誰も書いてないだろ sedより簡単な方法があったような気がするから教えてだろ。
150 :名無しさん@お腹いっぱい。 :2014/07/15(火) 14:15:08.24 .net >>149 > sedより簡単な方法があったような気がするから教えてだろ。 そうは書いてない。
151 :119 :2014/07/15(火) 14:28:02.53 .net みなさんありがとうございました。>>121 で思い通りのことができて嬉しいです。 雰囲気以上のことはあまりわかりませんでしたが調べてみます。 使いこなせるようになりたいのでまた疑問ができたら質問させて下さい。 ありがとうございました。
152 :名無しさん@お腹いっぱい。 :2014/07/15(火) 15:02:59.04 .net >>150 どう解釈しても良いけど「sed禁止」と読み取れる 文言はどのへん?
153 :名無しさん@お腹いっぱい。 :2014/07/15(火) 15:08:29.18 .net 禁止というのはおれの誤読かもしれないけど それならそうと>>125 が訂正してくれればいい。
154 :名無しさん@お腹いっぱい。 :2014/07/15(火) 15:40:34.02 .net ログファイル等の検索で、 「ある文字列が最初に出た行以下すべてを表示する」場合、sedコマンド以外で簡単な方法ないでしょうか? (有った気がするのですが忘れてしまいました) それほど複雑な文言じゃないが
155 :名無しさん@お腹いっぱい。 :2014/07/15(火) 15:45:07.25 .net おそらく >>144 が期待される回答
156 :名無しさん@お腹いっぱい。 :2014/07/15(火) 17:23:09.40 .net sedでも簡単だけど、言語かコマンドかでフィーリングが違うな。 awkでも出来るけど、なるべくcut使ったり。
157 :名無しさん@お腹いっぱい。 :2014/07/15(火) 20:26:40.19 .net awkは「言語としても使えるコマンド」って印象があるなあ プログラマだからそう思うのかな
158 :名無しさん@お腹いっぱい。 :2014/07/16(水) 01:50:47.65 .net >>144 を見てlessって思ったより便利なのかと思って試したんだが、 これlessで眺めるの前提だからうまく機能するんだな これ利用してファイルに吐き出す方法ないものか
159 :名無しさん@お腹いっぱい。 :2014/07/16(水) 02:02:13.79 .net >>158 表示されてないだけで、読み込まれてはいるんだから、何か違う気が。
160 :名無しさん@お腹いっぱい。 :2014/07/16(水) 20:57:53.64 .net awkとかsed使うくらいならperlの方がいい ポータブルだしね
161 :名無しさん@お腹いっぱい。 :2014/07/16(水) 21:59:50.66 .net >>160 コマンドとして考えるとperlはちょっとデカいかな 長いスクリプト書くなら、複数プロセスを通すより軽くて良いが
162 :名無しさん@お腹いっぱい。 :2014/07/16(水) 22:06:31.32 .net このスレで言うのもなんだが、awkとsed覚える前にPerl覚えちゃったクチだわ awk/sed入っててPerl入ってないなんて組み込み系か宗教上の理由じゃない限り有り得ないし さらにzshが意外とzsh内で完結できる守備範囲広いからそっちの方も勉強するようになって ますますawk/sedは覚える機会が…
163 :名無しさん@お腹いっぱい。 :2014/07/16(水) 22:32:42.77 .net 俺もawk,sed覚える前にperl覚えたけど 大抵のことはbash,awk,sedその他で出来てしまうから 逆にperl書かなくなっちゃた派だな
164 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:01:49.69 .net perlのワンライナーがキモくてどうも使う気になれない
165 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:08:27.28 .net 俺の場合、インタラクティブにはsed/awk その組み合わせをメモするついでにシェルスクリプトにする場合もある 何にしてもshebangにsedやawkを書くことはないな、shになる 最初からスクリプトとして書くつもりならperlになるかな こちらは逆にシェルスクリプトに埋め込むことを滅多にしない
166 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:09:55.07 .net perlはワンライナーに限らずキモい使い方される事の多い環境。 ワンライナーではキモいコード使うことが多いってだけで、 perlワンライナーのキモさは本質的にperlそのもののキモさ。 キモいけどまぁあれはあれで便利なもんだよ。キモいけど。
167 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:14:05.74 .net awkとかsedは、ヒアドキュメントにして見づらくならない程度。 長くて2〜30行以内。 あと、拡張正規表現が標準正規表現と互換性(ほんの少しだけど)がないから、めんどくさい。
168 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:15:14.38 .net perlのキモさを見て使いこなしたくなったけど結局勉強していない
169 :名無しさん@お腹いっぱい。 :2014/07/16(水) 23:58:16.92 .net perlでがっつりスクリプト書くならCで書いちゃうなw 正規表現でさらっと処理するならawkかsedで充分。
170 :名無しさん@お腹いっぱい。 :2014/07/17(木) 00:01:12.64 .net 最近流行のキモかわいいって奴
171 :名無しさん@お腹いっぱい。 :2014/07/17(木) 00:12:53.36 .net Rubyのほうが相性いい
172 :名無しさん@お腹いっぱい。 :2014/07/17(木) 02:21:44.72 .net Apacheの1日分のログで、IPアドレスごとに1分ごとの平均接続数を一覧で確認したいのですが、どうゆう方法で1分ごとの平均を出したらいいのでしょうか?あ、スレ違いとかスレ目的とずれてたらスルーしてください。
173 :名無しさん@お腹いっぱい。 :2014/07/17(木) 03:58:54.58 .net >>172 出現回数数えて1日で割ればいいだろ。
174 :名無しさん@お腹いっぱい。 :2014/07/17(木) 09:15:03.26 .net >>172 確かに! DoSとかクロールとかが埋もれないようにとか思ってたけど、それで十分ですね。 ありがとうございます! 難しく考えすぎてました...orz
175 :名無しさん@お腹いっぱい。 :2014/07/19(土) 13:56:55.63 .net 124と似ていますが、行番号だけの表示をさせたい… シェル作成しているのだが(行番号を取得してログの一定範囲を表示させたい)んだが、sshで別サーバのログをgrep,sed,awkしてたりするんだが、上手くいかない… わかりづかくて申し訳ない
176 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:08:26.92 .net わからんなw
177 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:09:31.57 .net 今まで書いた部分をstackoverflowあたりに貼って質問してみれば
178 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:10:19.25 .net >>175 awk '/ある文字列/{print NR}' logfile
179 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:12:15.92 .net >>175 sed -n '/ある文字列/=' ログファイル
180 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:17:49.12 .net >>178-178 最初に一致した行番号だけ表示するならqやexitを追加しとけ。 sed -n '/ある文字列/{=;q}' file awk '/ある文字列/{print NR;exit}' file
181 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:42:31.15 .net >>180 >>180 >>180 どうもです。まださわりはじめたばかりでどうも入りづらく… ちなみに私が実施していたコマンド set 変数 = `ssh 鯖 " grep -n 文字 ファイル | tail -1 | sed 's/ /: g' | awk '{print $1}' 環境がいまないので教えていただいたのを試してみたい… ちなみに最後にヒットした行番号を抜き出します。 パイプの使い方がいまいちわからん…このコマンドだと最後の行の文章まで引き出してしまう
182 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:50:17.23 .net >>181 最後にヒットした行番号かよ ほれ↓ awk '/ある文字列/{t=NR}END{print t}' ファイル
183 :名無しさん@お腹いっぱい。 :2014/07/19(土) 14:56:32.05 .net >>182 .なんでそんなに分かるんだwww ありがとうございます。
184 :名無しさん@お腹いっぱい。 :2014/07/19(土) 15:38:14.87 .net 手元に何らかのUnix系環境あると楽だぞ UnixやBSD、LinuxやMacを使ってるならそこで色々試せばいいし Windowsでも、ちょっとお試し程度ならCygwinでも問題ない ただCygwin独自の問題もあること考えると仮想マシンにUnix系の環境あると便利
185 :名無しさん@お腹いっぱい。 :2014/07/19(土) 15:51:10.13 .net 知らない間に、レス数が増えてるな。なんか、反応が早すぎるよね >>175 出遅れたけど一応 sed sed -e '=' "$filename" | sed -n 'N; /'"$regex"'/{ s/\n.*//; h }; ${x; p}' そして、>>181 のを直してみた grep -n "$regex" "$filename" | tail -n 1 | cut -d : -f 1
186 :名無しさん@お腹いっぱい。 :2014/07/19(土) 21:46:32.14 .net >>182 もしよろしければなぜそうなるか教えていただきたい… 私が作成したコマンド含めて…
187 :名無しさん@お腹いっぱい。 :2014/07/19(土) 23:51:41.96 .net 書いた人じゃないが awk '/ある文字列/{t=NR}END{print t}' ファイル ある文字列 にマッチすると、その行の行番号をtに保存する END(つまりすべての行読み込みが終わった後)に最後にtに保存された行番号を表示する
188 :名無しさん@お腹いっぱい。 :2014/07/20(日) 06:34:00.38 .net >>187 あ、なるほど。 説明さんくす!
189 :名無しさん@お腹いっぱい。 :2014/07/20(日) 07:00:55.80 .net NRはNumber of Recordとかそんな感じの変数。
190 :名無しさん@お腹いっぱい。 :2014/07/20(日) 19:48:31.71 .net テキスト中に現れる<text:s c="n"/>のような文字列を n個の半角スペースに置き換えるにはどうすればいいでしょうか たとえば<text:s c="23"/>だったら、半角スペース23個に置き換えられるとうれしいのですが
191 :名無しさん@お腹いっぱい。 :2014/07/20(日) 22:09:44.57 .net >>190 これもawk案件かな。 改行が入ってたりはしないんだな?
192 :名無しさん@お腹いっぱい。 :2014/07/20(日) 22:49:16.40 .net >>190 全ての行をechoで出力するように置換して、 該当の部分を`printf %23s " "`に置換、 それらを評価してテキストを出力する。 この方法は元のテキストで、shが解釈する文字をどの程度使ってるかでコストが変わる。
193 :名無しさん@お腹いっぱい。 :2014/07/20(日) 23:03:44.63 .net >>190 ,190 とりあえずやっつけで、、、 $ cat hoge.txt | awk '{if(match($0, /^(.*)<text:s +c="([0-9]+)"\/>(.*)$/, m)){printf("%s%" m[2] "s%s\n", m[1], " ", m[3])}else{print}}' これは <text:s〜> が同一行に複数あったらダメだな。。。 誰かもっとスマートな方法をお願い
194 :名無しさん@お腹いっぱい。 :2014/07/20(日) 23:34:45.34 .net Perl なら一行で… $ cat hoge.txt | perl -pe 's@<text:s +c="(\d+)"/>@sprintf("%$1s", " ")@ge'
195 :名無しさん@お腹いっぱい。 :2014/07/21(月) 00:03:55.79 .net ついにperlさんが活躍するのか sedで頑張ろうと思ったがどうやっても複雑になるからあきらめた 前スレに出てたスクリプトを出力するスクリプトを書けばって気はするが、作り方が分からん……
196 :名無しさん@お腹いっぱい。 :2014/07/21(月) 05:21:43.96 ID:L6Zz/yiU+ >>190 ,195 192だが、やってみたらこうなった。 $ cat in.xml|sed -e "s/^\(.*\)\$/echo '\1'/" -e 's|<text:s c="\([0-9]\+\)"/>|'\''"$(printf "%\1s" " ")"'\''|g'|while read;do eval $REPLY;done printf埋め込むまわりのクォートがわけわからんことに。 こんな感じのを作ってる。入力にシングルクォートがあったら終わりかな。 eval echo '<?xml version="1.0"?>' eval echo ' <p>'"$(printf "%10s" " ")"'</p>'
197 :名無しさん@お腹いっぱい。 :2014/07/21(月) 05:24:03.35 .net >>191 ,195 192だが、やってみたらこうなった。 $ cat in.xml|sed -e "s/^\(.*\)\$/echo '\1'/" -e 's|<text:s c="\([0-9]\+\)"/>|'\''"$(printf "%\1s" " ")"'\''|g'|while read;do eval $REPLY;done printf埋め込むまわりのクォートがわけわからんことに。 こんな感じのを作ってる。入力にシングルクォートがあったら終わりかな。 eval echo '<?xml version="1.0"?>' eval echo ' <p>'"$(printf "%10s" " ")"'</p>'
198 :名無しさん@お腹いっぱい。 :2014/07/21(月) 06:28:07.01 .net sed で2通り。2番目は、長いです 1. POSIX shell and GNU sed #!/bin/sh ReTag1='<text:s +c="' ReTag2='"/>' sed -re ' : Loop s@^(.*)'"${ReTag1}"'([0-9]+)'"${ReTag2}"'(.*)$@echo '\''\1'\''"$( printf "%\2s" " " )"'\''\3'\''@e t Loop '
199 :名無しさん@お腹いっぱい。 :2014/07/21(月) 06:29:23.32 .net 2. 連投失礼します ReTag1='<text:s \{1,\}c="' ReTag2='"/>' sed -e ' # using: unix.stackexchange.com/questions/36949/ the answer of Simon Richte : Loop1 \@'"${ReTag1}"'[0-9]\{1,\}'"${ReTag2}"'@ { : Loop2 s@\('"${ReTag1}"'[ <]*\)0\([0-9]*'"${ReTag2}"'\)@\1<\2@ s@\('"${ReTag1}"'[ <]*\)1\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)2\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)3\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)4\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)5\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)6\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)7\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)8\([0-9]*'"${ReTag2}"'\)@\1< \2@ s@\('"${ReTag1}"'[ <]*\)9\([0-9]*'"${ReTag2}"'\)@\1< \2@ t Loop2
200 :197 の続き :2014/07/21(月) 06:31:35.30 .net : Loop3 s@\('"${ReTag1}"'< *\) <\([ <]*'"${ReTag2}"'\)@\1< \2@ t Loop3 s@'"${ReTag1}"'<*\( *\)'"${ReTag2}"'@\1@g } t Loop1 ' 197 のインデントを置換するのを忘れた
201 :名無しさん@お腹いっぱい。 :2014/07/21(月) 06:38:37.60 .net 197 ですが、@\1<数字分の半角スペース\2@ で置換します 連続した半角スペースが、1つになってしまったので、読み替えて下さい
202 :189 :2014/07/21(月) 11:38:36.49 .net >>190 です。みなさんありがとうございます。 いただいたどの案でも目的を達することができました。
203 :189 :2014/07/21(月) 11:39:16.74 .net >>192 printfを使うというのは目からウロコでした。 ある文字を指定された回数だけ出力する(expand?のような、あるいはBASICの STRING?のような)コマンドを探したりしていたのですが見つからず…
204 :189 :2014/07/21(月) 11:40:06.63 .net >>191 ,192 できました。同一行に複数ある場合ですが、ちょっと後出しみたいで申し訳ないのですが、 入力をあらかじめタグの切れ目で改行しておけばよいので全然問題ないです。
205 :189 :2014/07/21(月) 11:40:55.78 .net >>194 ううむ、簡潔ですね。さすがperlです。sedやawkでだめならperlかなと思っていたので そのものズバリの回答ありがたくいただきました。
206 :189 :2014/07/21(月) 11:41:42.39 .net >>197 ご明察のとおり元のテキストファイルはxmlファイルで、 OpenOffice Writerの文書ファイルからcontent.xmlを取り出したものです。 evalを使ったスクリプト、期待どおり動作しました。入力中にシングルクォートは ありませんでしたが、アスタリスクがあって、ちょっと副作用出ました。 この辺が>>192 さんのおっしゃるコストでしょうか。
207 :189 :2014/07/21(月) 11:42:20.07 .net >>198 GNU sedだとeコマンドが使えるのですね。ループの使い方とあわせてとても勉強になりました。 >>199-199 うーん、そういう方法があったか!と唸ってしまいました。 元記事Simon Richterさんのsedで加減の演算を実装してしまう方法はとてもマニアックですが sedでもここまでできるという見本のような使い方だと思いました。
208 :189 :2014/07/21(月) 11:47:24.63 .net 上にもちょっと書きましたが、入力ファイルはOpenOffice Writerの.odtファイルに含まれているcontent.xmlで、 unzip -qq -c document.odt content.xml | sed -e 's,<[^>]\+>,,g' このような感じのフィルタスクリプトでxmlタグを取り除いてやると、元の文書のうち文字情報だけを 取り出すことができるので、これを~/.lessfilterに登録しておけばlessでファイルの内容をさっと確認 できるなと思ったのが出発点です。 しかし複数のスペースが入力されているところは<text:s text:c="n">(すみません、正しくはこうでした) のようにxmlの記法?でまとめられてしまっていて、これがsedでは(というか自分の力量では) うまく変換できなかったので、質問させていただいた次第です。
209 :名無しさん@お腹いっぱい。 :2014/07/21(月) 12:59:04.26 .net xmlなんだからパーサーに食わせればいいと思う。
210 :名無しさん@お腹いっぱい。 :2014/07/21(月) 13:30:11.09 .net パーサー使っていいならodt2txtもありになってしまうじゃん あくまで標準的なコマンドでやりたかったんじゃないの?
211 :名無しさん@お腹いっぱい。 :2014/07/21(月) 13:31:59.53 .net >>206 >>197 だけど、evalは危険なので気をつけて下さいね。何らかの方法で任意のコマンドが実行できるかも知れない。 >>209 xmlstarletでやろうとしたけど挫折した。純粋なxsltなら出来そうだけど。
212 :名無しさん@お腹いっぱい。 :2014/07/21(月) 13:40:58.27 .net >>210 時間の無駄。 XMLパーサの再発明(しかも超劣化版)してどうするの?
213 :名無しさん@お腹いっぱい。 :2014/07/21(月) 14:10:56.03 .net 別にパーサでやるのも、あくまでシェルスクリプトでやるのもアリでしょ。 そこの議論やるより、スクリプトを書いたほうが建設的。
214 :名無しさん@お腹いっぱい。 :2014/07/21(月) 14:18:33.58 .net >>212 なんでも使える環境で作業してるなら Perl でも Python でも Ruby でも使えば良いじゃん なんでこのスレいるの?
215 :名無しさん@お腹いっぱい。 :2014/07/21(月) 18:39:51.57 .net 最近は>>190 みたいにxslt使うまでもないのは s.split(/<(^[>]+)>/m).forEach みたいな感じでnode.jsだな 改行入っててもOKだし
216 :名無しさん@お腹いっぱい。 :2014/07/21(月) 22:19:23.30 .net 今回はperlさんが最適解っぽいな しかしawkで>>193 のようなやり方があるとは matchの3つ目の引数使って後方参照出来るってことだよな? これは使いこなすと強そうだ
217 :名無しさん@お腹いっぱい。 :2014/07/21(月) 22:55:42.90 .net gawk限定でもいいのかっていうのはこのスレではやや気になる。 自分だけなら好きなように使うけど(特にgawk4.0以降の多次元配列)。
218 :名無しさん@お腹いっぱい。 :2014/07/21(月) 23:04:16.52 .net pythonやrubyは?
219 :名無しさん@お腹いっぱい。 :2014/07/22(火) 01:25:48.78 .net #!gwak と書いて置けばいいさ
220 :名無しさん@お腹いっぱい。 :2014/07/22(火) 02:03:04.51 .net >>219 一行目からtypoってのはせつない。
221 :名無しさん@お腹いっぱい。 :2014/07/22(火) 02:19:18.56 .net shebang行に相対パスは環境依存…とかそれ以前にグワック
222 :名無しさん@お腹いっぱい。 :2014/07/22(火) 14:57:15.09 .net 空白の行を取り除くとして、方法が何通りかあると思うんですけど どんな方法がありますか?また一般的な方法はどれですか?
223 :名無しさん@お腹いっぱい。 :2014/07/22(火) 15:00:37.53 .net >>222 grep -v ^$ 空行ならこうだけど、空白の行なら'^ \+$'かな。
224 :名無しさん@お腹いっぱい。 :2014/07/22(火) 15:54:13.53 .net 「空白行を取り除く」という言葉を重視するなら sed かな
225 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:03:13.55 .net tr -s \\n #空行を取り除く
226 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:09:28.69 .net 質問は空行じゃなくて空白行。
227 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:14:47.98 .net 空白行と空行ってなにか違うんですか?
228 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:20:14.87 .net 空行は何もない行。 空白行は空白のみがある行。
229 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:31:35.12 .net s/\n+/\n/m
230 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:32:18.04 .net s/\n\s*\n/\n/m
231 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:35:12.21 .net それじゃ答えになってない。
232 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:39:33.57 .net sed様のお手を煩わすまでもない、 お前など、このgrepが排除してやるわ # 仕様後出しアタック grepを倒したからと言っていい気になるなよ 奴は正規表現四天王の中でも最弱 ここまで妄想した。
233 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:42:45.97 .net >>229 >>230 /^ \+$/d sだけがsedではない。
234 :名無しさん@お腹いっぱい。 :2014/07/22(火) 16:49:27.94 .net >>229 >>230 はsedとは言ってない。
235 :名無しさん@お腹いっぱい。 :2014/07/22(火) 18:57:35.09 .net 汎用性を考慮して行頭、行末、行頭と行末の空白文字を取り除くスクリプトを用意 #!/bin/sh progname=`basename $0` case $progname in ltrim) sed -e 's/^[[:space:]]\+//g' "$@" ;; rtrim) sed -e 's/[[:space:]]\+$//g' "$@" ;; lrtrim) sed -e 's/^[[:space:]]\+//g' -e 's/[[:space:]]\+$//g' "$@" ;; *) echo "unsupported program name: $0" 1>&2 ; exit 1 ;; esac 誰かファイル末尾の空行を削除するスクリプト作って
236 :名無しさん@お腹いっぱい。 :2014/07/22(火) 19:48:19.55 .net 少なくとも空行、空白行削除なら >>223 のをちょいとだけいじって grep -v '^ *$' でいい気がするんだが sed使うほどでもないだろうこれ
237 :名無しさん@お腹いっぱい。 :2014/07/22(火) 20:19:58.02 .net >>228 ちょっとまって。 空白しかないんでしょう? 改行があったらダメじゃん? でも改行ないと行じゃないよ? あれ?
238 :名無しさん@お腹いっぱい。 :2014/07/22(火) 20:21:24.69 .net >>236 仕様後出しアタック っタブ
239 :名無しさん@お腹いっぱい。 :2014/07/22(火) 20:23:59.82 .net 全角スペースもお願いします。 全角スペースに見える未定義コードもお願いします。
240 :名無しさん@お腹いっぱい。 :2014/07/22(火) 21:19:36.04 .net >>235 sed でタブと全角スペース込み unnamed) sed -e ' : Loop N $ d /^[[:space:]\n]*$/ b Loop ' ;;
241 :名無しさん@お腹いっぱい。 :2014/07/22(火) 21:20:33.95 .net >>239 お前みたいな曖昧な提案しかできない奴が仕様をまとめるから炎上するんだ
242 :238 :2014/07/22(火) 21:34:16.78 .net 一々言う事でもないけど、"$@" つけ忘れた こういうミスを、書き込む前に気付く様な人に、いつかなりたい
243 :名無しさん@お腹いっぱい。 :2014/07/22(火) 22:29:32.36 .net >>236 sedのdコマンドのほうが、意味的に近いかなと思うんよね grepはどうしても「抽出する」イメージが強いコマンドだし
244 :名無しさん@お腹いっぱい。 :2014/07/22(火) 22:30:45.89 .net >>239 [[:space:]] これの対象にならないならもうだめぽ
245 :名無しさん@お腹いっぱい。 :2014/07/22(火) 22:35:40.42 .net sedっていうとどうも編集役っていう先行イメージがな。置換とか 行の一部を編集ならsed、行丸ごと処理ならgrepだと勝手に思ってる 同じ処理ならgrepのほうが高速に動く……多分
246 :名無しさん@お腹いっぱい。 :2014/07/22(火) 22:40:11.60 .net >>239 バカには見えない文字があるので仕様通りです。
247 :233 :2014/07/22(火) 23:00:49.86 .net >>240 おお、さっそく作ってくださってありがとうございます。 tac と組み合わせればファイル先頭の空行も取り除くことができるので願ったり叶ったりです。 自分も早くパターンスペースやホールドスペース、ループを自在に操れるようになりたいです。
248 :名無しさん@お腹いっぱい。 :2014/07/23(水) 10:33:53.58 .net 具体的な話しじゃないけど 無印良品のデータベースって市販の管理ソフトだと 効率が悪いんで、txtベースで資料を造ってボーンシェルかなにかで 検索システム造ったと聞いたが、cat|grepとかだったのかな。
249 :名無しさん@お腹いっぱい。 :2014/07/23(水) 10:45:35.15 .net >>248 話があやふやだな。 ぐぐればすぐソース出てくるじゃん。 http://www.atmarkit.co.jp/news/200909/07/lltv03.html > cat|grepとかだったのかな。 UUOC
250 :名無しさん@お腹いっぱい。 :2014/07/23(水) 11:47:14.88 .net >>249 ありがとう。 ググルよりオマエに頼ってオマエを愛したい。
251 :247 :2014/07/23(水) 11:49:25.56 .net やだよ気持ち悪い。
252 :名無しさん@お腹いっぱい。 :2014/07/23(水) 12:35:21.83 .net >>232 >>250-249 笑った。四天王の中でも最弱とか、よく出てきそうなフレーズだなあ と思って調べると、有名なネタですか 先頭の空行のも書いてみました。正規表現で2回走査する所がいまいちですが unnamed2) sed -e ' 0, /[^[:space:]]/ { /[^[:space:]]/! d } ' ;; [ここか[:space:]ここに] 空白文字を足せば解決の様な気がしますが、落とし穴?
253 :名無しさん@お腹いっぱい。 :2014/07/23(水) 18:59:04.95 .net >>238 grep -v '^[[:space:]]*$' ちょっと苦しいか
254 :名無しさん@お腹いっぱい。 :2014/07/23(水) 23:57:04.71 .net >>252 ファイル先頭の空行を削除するスクリプトありがとうございます。 アドレス0の使い方を学びました!
255 :名無しさん@お腹いっぱい。 :2014/07/24(木) 13:40:13.62 .net >>194 Perl は 'x' で文字列のリピートができるのか… '*' じゃないんだな $ cat hoge.txt | perl -pe 's@<text:s +c="(\d+)"/>@" " x $1@ge'
256 :名無しさん@お腹いっぱい。 :2014/07/24(木) 13:43:45.55 .net catが無駄です
257 :名無しさん@お腹いっぱい。 :2014/07/24(木) 13:49:57.72 .net cat始まりとか割とよくやるよな。 最初だけcurl $url|tee cache|した時とか特に。
258 :名無しさん@お腹いっぱい。 :2014/07/24(木) 13:55:08.80 .net cat始まりで実行するのは素人。 コマンドライン上、ファイルを最初に書きたいなら、 < file script > outfile ってやればいいだけ。catもパイプも要らん。
259 :名無しさん@お腹いっぱい。 :2014/07/24(木) 13:57:57.68 .net 問題:この話題は過去何回目でしょう?
260 :名無しさん@お腹いっぱい。 :2014/07/24(木) 14:22:21.45 .net スクリプトではなく対話のシェルに打ち込むなら ネコを使っておいた方がヒストリを検索するときに まとまっていて楽w
261 :名無しさん@お腹いっぱい。 :2014/07/24(木) 15:05:56.09 .net >>256 そのツッコミが無駄
262 :名無しさん@お腹いっぱい。 :2014/07/24(木) 15:55:01.75 .net >>258 なるべくなら少ない方法を使い回したい。 あと入力がgzのものがあって、zcatに置き換えるのはありがち。
263 :名無しさん@お腹いっぱい。 :2014/07/24(木) 18:41:09.48 .net おれも最初に cat するクセがあったんだけど、以前このスレで違いを教わってやめた cat するのとしないのとの、実行時間の違い 対象ファイルは DVD 版 KNOPPIX にあるファイル KNOPPIX (ややこしいな) $ du -h KNOPPIX 4.0G KNOPPIX $ time bash -c 'tail KNOPPIX > /dev/null' real 0m1.811s user 0m0.000s sys 0m0.004s $ time bash -c '< KNOPPIX tail > /dev/null' real 0m0.182s user 0m0.000s sys 0m0.004s $ time bash -c 'cat KNOPPIX | tail > /dev/null' real 9m6.519s user 0m4.148s sys 0m28.584s
264 :名無しさん@お腹いっぱい。 :2014/07/24(木) 19:05:01.60 .net そんな差あったのか パラメータにファイル指定するより標準入力に突っ込んだほうが早いというのは知らなかった 俺も今後は控えよう
265 :名無しさん@お腹いっぱい。 :2014/07/24(木) 19:19:08.09 .net その例は・・・w catの次が標準入力を先頭から普通に読むタイプのフィルタならそこまで差はつかないと違う? tailはちょっと特殊な読み方をするんじゃないのかな
266 :名無しさん@お腹いっぱい。 :2014/07/24(木) 19:39:35.46 .net じゃあ、tailの代わりに wc -c でどぞ。 -c も付けるんだぞ。
267 :名無しさん@お腹いっぱい。 :2014/07/24(木) 19:56:43.08 .net >>263 の3番目だけは遅いブロックデバイスへのブロックリードが大量に発生するんだよね catが全部読んでtailに渡しながら、tailは先頭から改行カウントするしかないからね その結果I/O待ちのidle時間が膨大になる 1番目と2番目はtailがKNOPPIXのファイル記述子を直接得られるので、seekして後ろの方から読んで改行を探せる その結果ブロックリードの量が激減するので時間がかからない まあtailの特殊事情だから、wc -cならここまで差はつかないだろう
268 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:00:30.78 .net >>267 wc -c こそ大差がつくんだが、、
269 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:09:45.96 .net ほう。wc -c の方が大差がつくとなると何か自分が知らない仕組みがあるのかなあ? とても興味があります
270 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:17:46.27 .net おお。たしかに差がでるなあ?なんでcat通したwcはこんな遅いんだ?
271 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:19:56.37 .net 並列化が云々
272 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:24:59.10 .net ああ、なるほどwそりゃそうだw wc -cだとデータの中身は見なくていいのね だからファイル記述子が直接得られりゃ、即効で終われるのか
273 :名無しさん@お腹いっぱい。 :2014/07/24(木) 20:30:26.87 .net 「cat file|」だと後段の入力はパイプだけど、「<file 」だと後段の入力はファイルになるんだっけ。 大抵は大丈夫だけど、物によっては動作自体異なる場合もあるのかな。 >>263 >>264 2つ目ってキャッシュ効いてたりしないよな?
274 :名無しさん@お腹いっぱい。 :2014/07/25(金) 08:31:16.26 .net >>257 でも今回はそうじゃない。
275 :名無しさん@お腹いっぱい。 :2014/07/25(金) 08:52:07.01 .net >>274 >>262
276 :名無しさん@お腹いっぱい。 :2014/07/25(金) 08:54:14.00 .net >>275 >>274
277 :名無しさん@お腹いっぱい。 :2014/07/25(金) 09:13:13.05 .net >>276 言っている意味わかんないんなら黙ってろよ。
278 :名無しさん@お腹いっぱい。 :2014/07/25(金) 09:28:17.80 .net 今回はzcatする予定もない
279 :名無しさん@お腹いっぱい。 :2014/07/25(金) 10:07:22.00 .net 260 名無しさん@お腹いっぱい。 sage 2014/07/24(木) 15:55:01.75 >>258 なるべくなら少ない方法を使い回したい。
280 :名無しさん@お腹いっぱい。 :2014/07/25(金) 10:18:05.92 .net >>279 今回は使い回す予定もない cat file | より < file の方がタイプ数も少ない
281 :名無しさん@お腹いっぱい。 :2014/07/25(金) 10:19:21.44 .net >>280 好きにしろよ。ただし押し付けるな。
282 :名無しさん@お腹いっぱい。 :2014/07/25(金) 10:20:16.66 .net >>279 は使いまわすんだよ。
283 :名無しさん@お腹いっぱい。 :2014/07/25(金) 13:11:52.68 .net >>260 <file gzip -d| zcat file| <file cat file| 260の件と合わせてヒストリ集めるならリダイレクトの方がまとまりやすいかも
284 :名無しさん@お腹いっぱい。 :2014/07/25(金) 14:36:59.66 .net じゃそういう事で、 ・cat|すんなハゲ をテンプレに追加ね
285 :名無しさん@お腹いっぱい。 :2014/07/25(金) 15:32:43.14 .net 彡⌒ミ (´・ω・`) 三 また禿の話してる (| |) (γ / 三 し ○ 三 ス───────────────────────────
286 :名無しさん@お腹いっぱい。 :2014/07/25(金) 17:01:40.93 .net cutすんなハゲ ∧_∧ ( ;´Д`) ( つ 彡⌒ミ ) 「( ・∀・) |/~~~~~~ヽ
287 :名無しさん@お腹いっぱい。 :2014/07/25(金) 17:13:54.07 .net 使いやすいほうでいい
288 :名無しさん@お腹いっぱい。 :2014/07/26(土) 09:12:27.17 .net 無駄にかき回したくは無いが...テンプレと云う事で 対話シェルで入力するコマンドラインを、使いまわす場合、 当然変化するので、 複数ファイルになる場合や参考*1の様な例が有る事を考えると、 テンプレを意識する様な一般的な結論に至らない様に思います 同参考を読んでいると、スクリプトの場合でも、 cat | command の有用な事が有るので、併記するとか、 何かもう少し書き方を工夫する必要が有る様に思います 少し考えてみたので、次レスで 参考*1 Useful use of cat(1) http://www.in-ulm.de/~mascheck/various/uuoc/ > ( cmd; cat file; cmd ) | cmd > cat > textfile > cat log1 log2 log3 | tr '[:upper:]' '[:lower:]' > easy "intuitive" switching on the command line between different types input > cat<<EOF|cmd
289 :名無しさん@お腹いっぱい。 :2014/07/26(土) 09:13:21.15 .net >>257 >>262 >>262 >>284 の主張も 9.b のリンク先に入っているので円満解決か? 具体的なテンプレ案を書いておきます >>256-281 の議論を経て >>284 の提案 に有用な例を加えた 追加 □C. 初心者へのアドバイス 9. cat|すんなハゲ a. 詳細は "Useless Use of Cat" UUOC で検索して下さい b. 有用な場合も有ります Useful use of cat(1) 英文 http://www.in-ulm.de/~mascheck/various/uuoc/
290 :名無しさん@お腹いっぱい。 :2014/07/26(土) 10:58:33.06 .net >>288 そのページはcatの有効的な使い方であって、cat|の有効的な使い方では無い しかもこれ↓インチキ引用だし > easy "intuitive" switching on the command line between different types input > cat<<EOF|cmd
291 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:00:53.46 .net ああ、cat|だと本来のconcatも含まれちまうか。 cat file|すんなハゲ かな
292 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:26:34.76 .net cat hoge | するなっていうかさ、してもいいんだけどさ。 無駄にやってダサいって思わんもんかな。 特に cat hoge | grep fuiga とか。
293 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:37:37.21 .net >>292 人に見せるもんじゃないしなぁ
294 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:42:40.65 .net 多様性を殺したいのならwindowsだけ使ってればいいのに。
295 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:43:23.99 .net 行番号つける時、cat file | cat -n とかw
296 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:46:51.48 .net 最初にcatして中身見て、後を付け足して行くだろ。 < $file cat から始めるの?
297 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:47:44.63 .net >>296 zshなら桶
298 :名無しさん@お腹いっぱい。 :2014/07/26(土) 11:53:46.86 .net zshは、 <file だけで中身表示できる。catいらん。
299 :名無しさん@お腹いっぱい。 :2014/07/26(土) 12:19:00.70 .net zsh使いって顧客先のサーバに無断でzsh入れて使ってそう
300 :名無しさん@お腹いっぱい。 :2014/07/26(土) 13:31:13.78 .net ちらほらと行頭に< file の記述を見るんだけど、 wc -l < file < file wc -l だったらお前らはどっちが正しいって思うの?
301 :名無しさん@お腹いっぱい。 :2014/07/26(土) 13:43:38.66 .net >>300 どちらも正しい。 強いて言えば <file wc -l の方がcsh馬鹿よけになる。(cshではエラーになるので)
302 :名無しさん@お腹いっぱい。 :2014/07/26(土) 13:45:58.98 .net 前者かな。cshでも使えるので
303 :名無しさん@お腹いっぱい。 :2014/07/26(土) 13:58:36.12 .net csh馬鹿は、引数そのまま渡す時に "$@" と書くべきところを $* とか書くんだよな。 csh撲滅すべし。
304 :名無しさん@お腹いっぱい。 :2014/07/26(土) 14:01:11.67 .net 好きなように書けばいいよ 書きやすい 読みやすい GOLF 速い
305 :名無しさん@お腹いっぱい。 :2014/07/26(土) 14:02:29.67 .net スレタイ的に人に見せるものなので 楽しい 楽しそう を追加
306 :名無しさん@お腹いっぱい。 :2014/07/26(土) 15:00:44.36 .net すまん、俺がバカなのかもしれないが、 >>301 は後者を推しつつ、>>302 は前者を推してて どちらも理由がcshの為なんだけどどういう事なんだ
307 :名無しさん@お腹いっぱい。 :2014/07/26(土) 15:04:52.20 .net eshellは許される < が移植されてないから
308 :名無しさん@お腹いっぱい。 :2014/07/26(土) 15:18:13.74 .net | | \ / ____ , -‐……‐--. . . 、 \ | | / \ / /. : : : : : : : :ヽ-‐.: :_;. --- .._: : : : : : : :\ \ / _ 争 も _ /, -‐==ミ: : : : _,ィニ-‐……ー-: 、`ヽ、: : : : ヽ、 _ 争 _ _ え っ _ . .:´: : : : : : : ≠:7: : : : : : : : : : : : :ヽ、 ヽ| : i : : :, _ え _ _ : . と _ /.: : : : -‐: :7´: : /:,ハ : : : :ヽ : : : ゝ-- :\ | : :! : : : , _ : _ _ : _ /, -‐/.: : : : :i : : /ィ:爪: : :\ :\ : : :\: : :`ト : !: : : :′ _ : _ 〃 /. : : : : : : |.:イ :ハ:| \: .、\: : xィ¬ト、: :| : : ! : : : : :, / \ /.: :/.: : : : /l : |/Гト、 / |_,ノ0:::ヽ : : :i : : : : :′ / \ / | | \ | .:/.:/. : : :i: i : | |ノ0:::ト ::::::::::::: |: :∩::::::ト: : : !: : : : : : :, / | | \ ∨i: |: : : : |: :ヽ| |::∩::| :::::::::::::::: !.::∪::::::| |: : :i : : : : : : ′ ,ィ /〉 |: |: : i : :', : | |::∪::| :::::::::::::::: !: : : : : :||: : i : : : : : : : :, / レ厶イ ヽハ: : :、: :ヽ| l : : : |::::: , ::::└――┘ ! : : i : : : : : : : ′ / ⊂ニ、 い、: :\/  ̄ ̄ ', : : i : : : : : : : : , _, -‐' ⊂ニ,´ r 、 _ ヽ: :〈 <  ̄ フ |: : : ! : : : : : : : :′,.-‐T _,. -‐'´ ̄ くヾ; U| | : \ /| : : :i : : : : :_, -‐' | / r―' ヽ、 | : : : \ イ: : :| : : :i_,. -
309 :名無しさん@お腹いっぱい。 :2014/07/26(土) 15:36:03.04 .net >>306 >>301 は反csh派。>>302 はcsh馬鹿。
310 :名無しさん@お腹いっぱい。 :2014/07/26(土) 16:34:31.90 .net tcshは< file catできるんじゃね?w
311 :287 :2014/07/26(土) 18:54:23.44 .net とりあえず、不適切なら □C.-9. b. を削除したいと思いますが、その前に >>290 さんの主張がよく分からないので2つ質問します もともと、"This Week's Useless Use of Cat Award" から派生した話ですから、 cat の有効的な使い方を挙げています しかしページ中に cat| が有り、それで十分ではないでしょうか? また、インチキ引用の理由がよく分かりません。もう少し詳しくお願いします 次に、>>291 "cat file|すんなハゲ" について "cat|すんなハゲ" の方がリズムと勢いが有り、タイトルとしては良さげで 残念ですが、"cat file|すんなハゲ" という事で あとは、"This Week's Useless Use of Cat Award" ネタが 火を吹いていると理解してます
312 :名無しさん@お腹いっぱい。 :2014/07/26(土) 20:11:42.88 .net >>311 catが有効な場合もあり(あんたが引用したページにもある)、catを一切使うなと 言っているのではない。cat file一つ | するのはアホと言っている。 > また、インチキ引用の理由がよく分かりません。もう少し詳しくお願いします 上の三つは具体的なコマンドだったが、次の > easy "intuitive" switching on the command line between different types input は次行の > cat<<EOF|cmd の説明に見える、ところがcat <<EOFはヒアドキュメントなのでインチキと言った。 ちなみに、ヒアドキュメントは<<EOF cmdで用が足りるね
313 :287 :2014/07/26(土) 21:54:46.82 .net >> 288 >>312 なるほど、分かりました。...ということは、削除しないでよろしそうですね あと、確かに <<EOF cmd で用が足りそうですね ということで、改めて、修正案を挙げておきます ついでに、>>98-101 でテンプレの長さについて意見をいただいていましたが、 話題が尽きた時を狙っていましたが、良い機会ですので まとめさせていただきます >>256-281 の議論を経て >>284 の提案 に >>288-289 の議論で修正 追加(追加案の修正) □C. 初心者へのアドバイス 9. cat file|すんなハゲ a. 詳細は "Useless Use of Cat" UUOC で検索して下さい b. 有用な場合も有ります Useful use of cat(1) 英文 http://www.in-ulm.de/~mascheck/various/uuoc/
314 :名無しさん@お腹いっぱい。 :2014/07/26(土) 21:59:56.66 .net 連投規制は特に問題でないと思うので >>54 は省き、今までの長さに関して参考に なる書き込みを挙げました >>50 ( F.2 までをみて ) 学習用文書はいらない。充実してても考え物 >>66 長文すぎて読む気がおきない >>77 自分で勝手に決めて良い >>98 長くない。スレを立てる人が面倒で無ければ付ければ良い >>99 長いから何が困るってこともないが、議論で長文が続くのは迷惑 >>100 100レス超のテンプレもある。大した事はない >>101 ( >>71 では ) 短すぎかも
315 :名無しさん@お腹いっぱい。 :2014/07/26(土) 22:00:57.65 .net >>99 は長い方のテンプレを否定する訳ではなさそうなので、特にレスが無ければ 長い方 ( >>42-45 >>47-48 >>56-60 に >>61-62 >>313 の修正を加えたもの ) にしたいと思います 出来れば、さらに私の未熟な案を書き変えていただきたいです 特にテンプレ議論の為に別スレを設ける程では無いので、 >>99 には申し訳ないですが、ここで続けさせていただきます。すみません >>98 >>99 >>100 >>101 意見の衝突は、ある意味不快な思いをするものですが、 あえて書き込んでいただき、ありがとうございます
316 :名無しさん@お腹いっぱい。 :2014/07/26(土) 22:08:51.37 .net 説明書みたいなテンプレが欲しかったら wiki に隔離して そっちでやればいいんじゃないの クソ長いテンプレを毎回コピペするなんて シェルスクリプトを扱うような人間がやるもんじゃないと思うが
317 :名無しさん@お腹いっぱい。 :2014/07/26(土) 22:39:26.90 .net 抜けていました ポータビリティーを可搬性に書き変えます >>316 短いテンプレだと、 >>71-72 に >>313 の修正を加えたもの もしくは、それに部分的に追加したものですかね 私は、wiki は別の場所だと思っているので作りませんが、 皆さんの意見が反映されたものになればと思っています
318 :名無しさん@お腹いっぱい。 :2014/07/26(土) 22:44:16.39 .net 勝手にやってろって感じ
319 :名無しさん@お腹いっぱい。 :2014/07/26(土) 23:26:52.32 .net 流れを止めて申し訳ない さらにレスをいただいて、必要が有ればまとめたいと思います >>310 tcsh から、続けて下さい
320 :名無しさん@お腹いっぱい。 :2014/07/27(日) 01:32:50.94 .net >>314 >>100 と>>101 は明らかに冗談だろ
321 :名無しさん@お腹いっぱい。 :2014/07/27(日) 06:15:49.19 .net 明らかとは言えないが、冗談ともとれる 冗談ともとれるが、しかしながら、 意見を聞いておいてこれは冗談でしょと、 勝手に、気軽に、決めつけられる程ではない
322 :名無しさん@お腹いっぱい。 :2014/07/27(日) 06:24:08.29 .net Q. シェルスクリプト は UNIX の勉強に使えますか? A. シェルスクリプト は UNIX に慣れた人間が スクリプト言語を気取るのには向いていますが、 UNIX の勉強には向いていません。
323 :名無しさん@お腹いっぱい。 :2014/07/27(日) 06:38:56.46 .net >>322 UNIXの勉強って何だよ。
324 :319 :2014/07/27(日) 06:41:49.25 .net 訂正 >>100 は冗談を言っているのは確かだが、同時に意見にもなっている その意見についてまで、冗談と切り捨てられる程はっきりしていない >>101 も、>>100 を受けて冗談で発言したともとれる とれるが、これも冗談と切り捨てられる程ではない
325 :名無しさん@お腹いっぱい。 :2014/07/28(月) 02:21:28.17 .net 結局、どうやったらハゲないかの結論は出たの?
326 :名無しさん@お腹いっぱい。 :2014/07/28(月) 04:25:48.67 .net 早く寝る
327 :名無しさん@お腹いっぱい。 :2014/07/28(月) 16:41:27.99 .net #!/bin/sh #maemuki ハゲててもかっこいい有名人 #maemuki 渡辺謙 ブルース・ウィリス 竹中直人 所ジョージ ジャン・レノ #maemuki ジェイソン・ステイサム ショーン・コネリー 西村雅彦 #maemuki ウィリアム王子 ジダン ユル・ブリンナー 松平健 #maemuki ショーン・コネリー ニコラス・ケイジ case "$1" in --maemuki) sed -ne '/^#maemuki / {s/^#maemuki //; s/ /\n/g; p}' "$0" ;; *) echo 'ハゲの話が終ったら起こしてね' ;; esac
328 :名無しさん@お腹いっぱい。 :2014/07/30(水) 22:13:48.68 .net expr 0 + 0の終了ステータスってなんで1なの?
329 :名無しさん@お腹いっぱい。 :2014/07/30(水) 22:16:09.78 .net >>328 man expr に書いてなかったの?
330 :名無しさん@お腹いっぱい。 :2014/07/30(水) 22:29:24.87 .net >>329 ありがとう 結果が0かnullの時は1を返すって書いてあった そういう仕様ということか
331 :名無しさん@お腹いっぱい。 :2014/07/30(水) 23:34:20.07 .net exprにはそろそろご退場願いたいもんだ。
332 :名無しさん@お腹いっぱい。 :2014/07/30(水) 23:54:34.93 .net でも$(())ってshにあったっけ
333 :名無しさん@お腹いっぱい。 :2014/07/31(木) 05:43:36.38 .net exprの文字列処理は $(( ))ではできない。
334 :名無しさん@お腹いっぱい。 :2014/07/31(木) 09:13:26.43 .net そして expr 0123 : '\(.\)' のように、 文字列を切り出した結果が 0 になるときも 1 で終了するのであった。 計算で 0 になったときはともかく、 正規表現にちゃんとマッチしてるのにエラーっぽい終了コード返すのはマジで勘弁してくれ。
335 :名無しさん@お腹いっぱい。 :2014/07/31(木) 11:25:08.92 .net catで始めておくと、差し替えが楽だよね zcatに限らず
336 :名無しさん@お腹いっぱい。 :2014/07/31(木) 11:29:08.36 .net そういう終った話題はいいです。
337 :名無しさん@お腹いっぱい。 :2014/07/31(木) 12:27:01.65 .net >>332 Solarisもksh93になったことだし。 古い環境以外では、禁止してもいいだろ。
338 :名無しさん@お腹いっぱい。 :2014/07/31(木) 12:34:30.79 .net >>337 >>333
339 :名無しさん@お腹いっぱい。 :2014/07/31(木) 12:46:14.65 .net Solarisの basename/dirnameコマンドは、exprを使って実装されてる。
340 :名無しさん@お腹いっぱい。 :2014/07/31(木) 12:55:14.92 .net たぶん話がかみ合ってない。 シェルの中でループとか単純な計算をするのに、わざわざexpr使うのは、読みくくなるし速度も劇落ちになるので、使うなってことだろ。
341 :名無しさん@お腹いっぱい。 :2014/07/31(木) 13:00:58.00 .net そういう意味にはとれないな。 おそらく >>331 は exprの数値計算しか知らなくて、数値計算は $(())にやらせて expr自体退場(廃止)したいという意味で書かれたと思われる。 で、exprって文字列処理にも使うんだよ、、って指摘されて恥さらし。
342 :名無しさん@お腹いっぱい。 :2014/07/31(木) 13:08:50.97 .net libgmp使ってるexprだと、exprの方が数値計算も優秀だな。 $ expr 11111111111 '*' 11111111111 123456790120987654321 $ echo $((11111111111 * 11111111111)) -5670418394979206991 ←ww
343 :名無しさん@お腹いっぱい。 :2014/08/03(日) 06:41:46.30 .net $ echo '11111111111 * 11111111111' | bc 123456790120987654321 計算結果が、美しいな POSIX でないけど正規表現でのマッチングなら、[[ str =~ re ]] もあるね
344 :名無しさん@お腹いっぱい。 :2014/08/13(水) 08:09:42.72 .net シェルスクリプトのシの字もわからない者です。 質問させてください。 シェルスクリプトはコマンドの集合体と認識しているのですが、可能かどうか。 また可能であるならばどのようにすれば書き方をすれば良いかお聞きしたいです。 複数のコマンドの出力結果を一つのシェルスクリプトにまとめた上で、一行で出力出来たらいいなと思っているんですが可能でしょうか?
345 :名無しさん@お腹いっぱい。 :2014/08/13(水) 08:17:49.57 .net >>344 | tr -d '\n'
346 :名無しさん@お腹いっぱい。 :2014/08/13(水) 08:24:21.13 .net >>345 さん ありがとうございます。 ただこれが何を意味しているのかすらわからないです。 一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。 少しでも良いので説明してもらえないでしょうか?
347 :名無しさん@お腹いっぱい。 :2014/08/13(水) 08:47:45.57 .net man tr tr - translate or delete characters tr [OPTION]... SET1 [SET2] Translate, squeeze, and/or delete characters from standard input, writing to standard output. -d, --delete delete characters in SET1, do not translate
348 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:17:30.68 .net >>344 「シェルスクリプトのシの字もわからない」って要約すれば 「基本すら調べるの面倒だから一から十まで教えろ」ってことでいいんだよね?
349 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:20:18.29 .net >>344 まずはこれを日本語に書き直してからだ
350 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:20:51.99 .net 粘着されてもうざいから、答えてやる。意味は自分で調べろ。 { cmd1; cmd2; cmd3; } | tr -d '\n'
351 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:29:03.26 .net >>347-348 ありがとうございます。
352 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:48:16.88 .net ただこれが何を意味しているのかすらわからないです。 一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。 少しでも良いので説明してもらえないでしょうか?
353 :名無しさん@お腹いっぱい。 :2014/08/13(水) 10:52:56.74 .net 挿入ネタはいいです
354 :名無しさん@お腹いっぱい。 :2014/08/13(水) 11:02:28.67 .net 挿入ネタって何ですか?
355 :名無しさん@お腹いっぱい。 :2014/08/13(水) 13:53:13.00 .net いつもの釣りの人だろ。 相手しちゃいかん。
356 :名無しさん@お腹いっぱい。 :2014/08/18(月) 00:08:16.70 .net >>352 trは標準入力から読み込んだ文字を置き換え、切り詰め、削除し、標準出力に書き込みます。 つまり結果を受け取り出力します。 この場合、いくつかのコマンド結果をパイプでtrに渡し、改行を削除して、まとめて出力しています。 最初の回答の man tr ... はtrのマニュアルから参照した説明です。 つまり、この方はtrを使うといいよと言っている。 しかし、あなたはこのことに何の目的があるのでしょうか? よく分かりませんが、とにかく可能だということですね。
357 :名無しさん@お腹いっぱい。 :2014/08/18(月) 00:20:04.68 .net ぜんぜん意味を汲み取れない。 さぽせんの人って、こういうのを相手にしてるんだろうな。 大変だなすごいな。
358 :名無しさん@お腹いっぱい。 :2014/08/18(月) 00:22:28.56 .net >>344 , 354 なんでお前さんはそんなに挑発的な文章を書くんだ? 無自覚なのか? まぁそれは置いておくとしても お前さん自身は理論的に考え、説明しているつもりで「俺の言っていることを理解できないヤツがアホ」くらい思っているのだろうが 実際は自身の説明の仕方が悪いということくらいは気付いた方がいい
359 :名無しさん@お腹いっぱい。 :2014/08/18(月) 00:28:30.23 .net この方とかあなたとかが誰を指すのかさっぱりわからない。
360 :354 :2014/08/18(月) 00:40:35.08 .net 354の私は通りすがりで、誰かに不快な思いをさせるつもりはありません。 本当に分からない人の気持ちも分かるから念のためと思い、書き込みました。 親切心です。失礼しました。(^^;
361 :名無しさん@お腹いっぱい。 :2014/08/18(月) 00:42:23.14 .net みんな混乱してカオスになっただけじゃねーかw
362 :354 :2014/08/18(月) 00:44:22.34 .net この方とは回答してくれた人で、あなたは350の質問者を指していました。
363 :名無しさん@お腹いっぱい。 :2014/08/18(月) 08:46:56.20 .net この説明で初心者向けと思ってるからITは怖い
364 :名無しさん@お腹いっぱい。 :2014/08/18(月) 08:51:01.71 .net この説明でわからないようなゆとり初心者は恐い
365 :名無しさん@お腹いっぱい。 :2014/08/18(月) 10:30:51.05 .net シェルスクリプトのシの字も分からないゆとりには、シェルスクリプトとはなんぞやから始まって種類、文法も教えなきゃいけないの? 時給とか貰えるの?
366 :名無しさん@お腹いっぱい。 :2014/08/18(月) 10:41:51.03 .net >>363 んじゃ君が初心者向けに教えてあげてよ。
367 :名無しさん@お腹いっぱい。 :2014/08/18(月) 10:53:03.78 .net えー、 シェル、というのは貝を表す英語で、スペルはshellです。 UNIXにおけるシェルは、貝とは関係ないのですが、 むかし、サンOSというOSにあったサンビューというデスクトップに シェルツールというウィンドウがあり、このウィンドウのアイコンには 貝の絵が書かれていました。 あ、、長くなるので今日のシェル講座はここまでにします。 ではまた来週。
368 :名無しさん@お腹いっぱい。 :2014/08/18(月) 11:07:46.92 .net それぞれ入力してあとは自分で考えな 普通に出力 echo hello コマンドをまとめる { echo hello1; echo hello2; echo hell3; } まとめたコマンドの結果から改行をなくす { echo hello1; echo hello2; echo hell3; } | tr -d '\n'
369 :名無しさん@お腹いっぱい。 :2014/08/18(月) 11:11:46.58 .net つshell=+貝殻
370 :名無しさん@お腹いっぱい。 :2014/08/18(月) 11:30:07.45 .net ドシロートがちょっと通りますよ… $ unset a;for i in {1..9}; do a+=$i;echo $a; done $ unset a;for i in {1..9}; do : $[a+=i];echo $a; done bashだけど、そ〜なのか〜って感じ
371 :名無しさん@お腹いっぱい。 :2014/08/18(月) 11:30:53.52 .net > 複数のコマンドの出力結果を一つのシェルスクリプトにまとめた上で、 って書いてあるのをそのまま読み取ると 複数のコマンドを実行した結果そのものがコマンドになっていて それを一つのシェルスクリプトにまとめたいと言っているように受け取れるかな つまりシェルスクリプトを動的に生成したいのか?とか
372 :名無しさん@お腹いっぱい。 :2014/08/18(月) 13:23:56.51 .net じゃconfigureで
373 :名無しさん@お腹いっぱい。 :2014/08/18(月) 23:42:46.87 .net ありがとうございます。 ただこれが何を意味しているのかすらわからないです。 一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。 少しでも良いので説明してもらえないでしょうか?
374 :名無しさん@お腹いっぱい。 :2014/08/18(月) 23:59:27.37 .net configure コマンドを使用すると、次のチーム プロジェクト設定を管理できます。 しかし、あなたはこのことに何の目的があるのでしょうか? よく分かりませんが、とにかく可能だということですね。
375 :名無しさん@お腹いっぱい。 :2014/08/19(火) 17:44:32.47 .net 設定済みtcshからzshに乗り換えました tcshではシンボリックリンクで cd ..したところパスが展開されて親ディレクトリに移動しました zshに乗り換えてからはシンボリックリンクが置いてあるディレクトリに戻ります どう設定すれば親ディレクトリにいけるでしょうか
376 :名無しさん@お腹いっぱい。 :2014/08/19(火) 17:52:31.84 .net cd -P
377 :名無しさん@お腹いっぱい。 :2014/08/19(火) 17:56:52.92 .net set -w
378 :名無しさん@お腹いっぱい。 :2014/08/19(火) 17:56:54.07 .net >>376 試したところ リンクが置いてあるディレクトリに飛んで パス展開、親ディレクトリ移動はされませんでした 解答ありがとうございます
379 :名無しさん@お腹いっぱい。 :2014/08/19(火) 17:59:32.15 .net >>377 ありがとうございます! まさしく求めていたものです
380 :名無しさん@お腹いっぱい。 :2014/08/19(火) 18:02:45.22 .net zshスレあるよ zsh その7 http://peace.2ch.net/test/read.cgi/unix/1337844883/
381 :名無しさん@お腹いっぱい。 :2014/08/19(火) 18:19:48.13 .net >>380 案内どうもです
382 :名無しさん@お腹いっぱい。 :2014/08/19(火) 18:46:21.17 .net せっかくのシンボリックリンク追従機能を無効にするのかよw せめて cd -P でそのコマンドだけ一時的に無効にする方法にしとけよ。
383 :名無しさん@お腹いっぱい。 :2014/08/19(火) 18:53:28.22 .net Pオプションの意味を理解できてなかった なるほど 後々困るのも嫌なので>>390 助言ありがとうございます
384 :名無しさん@お腹いっぱい。 :2014/08/19(火) 19:55:01.47 .net うーむ、目からうろこだな >>390
385 :名無しさん@お腹いっぱい。 :2014/08/19(火) 19:56:54.78 .net 何者なんだ>>390 …
386 :名無しさん@お腹いっぱい。 :2014/08/19(火) 20:00:35.37 .net 期待してるぞ。>>390
387 :名無しさん@お腹いっぱい。 :2014/08/19(火) 20:01:16.48 .net 3九丸不成
388 :名無しさん@お腹いっぱい。 :2014/08/19(火) 21:05:26.91 .net 期待age
389 :名無しさん@お腹いっぱい。 :2014/08/19(火) 21:11:13.31 .net ksk
390 :名無しさん@お腹いっぱい。 :2014/08/19(火) 21:20:59.24 .net プレッシャードキドキ
391 :名無しさん@お腹いっぱい。 :2014/08/19(火) 21:52:25.48 .net 。 。 / / ウロコじゃなくて目玉がポーン! ( Д )
392 :名無しさん@お腹いっぱい。 :2014/08/19(火) 22:10:00.24 .net \ / \ 丶 i. | / ./ / \ ヽ i. .| / / / \ ヽ i | / / / \ -‐ ー __ わ た し で す -- 二 / ̄\ = 二  ̄ | ^o^ |  ̄ -‐ \_/ ‐- / / ヽ \ / 丶 \ / / / | i, 丶 \ / / / | i, 丶 \
393 :名無しさん@お腹いっぱい。 :2014/08/19(火) 22:29:52.06 .net ・・・・・・
394 :名無しさん@お腹いっぱい。 :2014/08/19(火) 22:33:08.05 .net がっかりだよ
395 :名無しさん@お腹いっぱい。 :2014/08/19(火) 22:59:17.61 .net ハイ、カイサーン
396 :名無しさん@お腹いっぱい。 :2014/08/19(火) 23:52:29.88 .net sedの使い方の質問はここで良いでしょうか?
397 :名無しさん@お腹いっぱい。 :2014/08/20(水) 00:04:59.76 .net ↓これよりも、ここの方が適切だと思った理由は? http://peace.2ch.net/test/read.cgi/unix/1085730992/
398 :名無しさん@お腹いっぱい。 :2014/08/20(水) 00:04:59.78 .net sed http://peace.2ch.net/test/read.cgi/unix/1085730992/
399 :名無しさん@お腹いっぱい。 :2014/08/20(水) 00:05:29.71 .net >>398 失礼しました。
400 :名無しさん@お腹いっぱい。 :2014/08/20(水) 00:05:34.37 .net 2/100sで被ったわ
401 :名無しさん@お腹いっぱい。 :2014/08/28(木) 13:44:30.46 .net シェルスクリプトで、小数点を 切り上げ たいのですけども。 bc や awk など、どうやるにしても大変で、さくっとできるスマートな方法知りませんか?
402 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:12:52.50 .net >>401 http://blog.trippyboy.com/2011/shell/bash%E3%81%A7%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5%E3%81%97%E3%81%9F%E3%81%84%E3%81%AE%E5%B7%BB/
403 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:16:02.57 .net >>402 四捨五入じゃなくて「切り上げ」です。 しかも、そのリンク先の方法は知ってますし、それでは大変なのでもっとさくっとできるスマートな方法を質問してます。
404 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:18:41.71 .net あぁ、すまん。 なんか勘違いした。
405 :399 :2014/08/28(木) 14:22:46.50 .net ありがとうございます。 四捨五入のやりかたなので、読み飛ばしていましたけど… アルゴリズム的には「切り上げ」ならば、0.999 を足せばいいのかな?
406 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:26:14.70 .net それだと 4.0001 が切り上がらないんでは。
407 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:27:08.86 .net >>405 だめだろ。 でかい整数を引いて負にしてから小数点以下を削って同じ整数を足すか、 0から引いて負にしてfloorとってまた0からひくか。
408 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:32:24.29 .net シェルスクリプトだから、扱う数値はすべて正の数としていいよね。 小数点以下がすべて0か、または空文字列であることを判定して、 そうじゃない場合は1を加算、のアルゴリズムでいいと思う。
409 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:33:03.16 .net >>408 > シェルスクリプトだから、扱う数値はすべて正の数としていいよね。 なんでそうなるんだw
410 :399 :2014/08/28(木) 14:37:03.83 .net どなたか本音を代弁してくれてたw >>406 そこは、欲しい精度まで 9 を追加する感じに。 他に思いつきですが、正規表現で [0-9]*.[1-9] で条件判定して整数の 1 を足す感じで試してみます。 これも、精度がほしかったら [0-9]*.[0-9][1-9] と増やす感じ? 今回は小数点第3位(ミリ秒単位)まであればいいので、どっちかで逃げてみます。 ありがとうございました。
411 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:43:01.99 .net >>402 よりだいぶ長くなったけど。 awk '{ n = int($1); if (n==$1) print n; else print n+1 }'
412 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:44:58.40 .net >>411 あ、これ負の数のときだめだ。 まぁシェルスクリプトだから、扱う数値はすべて正の数としていいよね。
413 :名無しさん@お腹いっぱい。 :2014/08/28(木) 14:47:50.25 .net これでいいか。 awk '{ n = int($1); if (n==$1 or n<=0) print n; else print n+1 }'
414 :名無しさん@お腹いっぱい。 :2014/08/28(木) 20:09:05.06 .net >>299 slも入ってると思うから確認してみろ
415 :名無しさん@お腹いっぱい。 :2014/08/29(金) 01:48:55.50 .net シェルスクリプトで精度求める気になれない。そこだけコマンド化する。
416 :名無しさん@お腹いっぱい。 :2014/08/29(金) 12:46:41.55 .net >>415 そういう誰でもできる方法でいいなら いちいちこのスレで聞かない
417 :名無しさん@お腹いっぱい。 :2014/08/29(金) 12:53:39.00 .net > シェルスクリプトで精度求める気になれない などと意味不明の言葉を口走っており。動機は不明。
418 :名無しさん@お腹いっぱい。 :2014/08/29(金) 12:59:42.77 .net >>413 なら精度関係ないよ。
419 :名無しさん@お腹いっぱい。 :2014/08/29(金) 13:17:22.52 .net 内部では倍精度浮動小数とかだろうけど、ulpが1を越えるような大きな整数だとどうなるんだろうな
420 :名無しさん@お腹いっぱい。 :2014/08/29(金) 13:39:48.42 .net >>419 整数だから処理しなくていいんじゃないの?
421 :名無しさん@お腹いっぱい。 :2014/08/29(金) 13:41:25.69 .net 整数堂々と勝負する。
422 :名無しさん@お腹いっぱい。 :2014/08/29(金) 13:53:59.75 .net bash考えたヤツって相当頭悪いんだろうな
423 :名無しさん@お腹いっぱい。 :2014/08/29(金) 14:00:39.34 .net >>422 なんでそう思ったの?
424 :名無しさん@お腹いっぱい。 :2014/08/29(金) 21:43:45.47 .net >第4章 コマンドは、臆さず作れ。大人気ない大人にならぬために 1億人が同じ処理に別々のコマンド作ってたら・・・、どっちが大人げないかなぁ。。。
425 :名無しさん@お腹いっぱい。 :2014/08/29(金) 22:06:49.40 .net 「1億人が〜」って言うのが大人気ない
426 :名無しさん@お腹いっぱい。 :2014/08/29(金) 22:09:34.31 .net >>425 全世界で考えれば大した数じゃあないでしょ?
427 :名無しさん@お腹いっぱい。 :2014/08/29(金) 22:11:07.54 .net 大した数だよw
428 :名無しさん@お腹いっぱい。 :2014/08/29(金) 22:21:31.55 .net 時間軸ずらした「延べ」人数だったら?
429 :名無しさん@お腹いっぱい。 :2014/08/29(金) 22:40:32.59 .net あ、「延べ」じゃおかしいか 「世代別の実数」のほうがいいか
430 :名無しさん@お腹いっぱい。 :2014/08/30(土) 00:23:33.88 .net 手を動かさなければ、いつまでたっても大人気ないコードを生みだすプログラマを卒業することはできないのだ。
431 :名無しさん@お腹いっぱい。 :2014/08/30(土) 02:55:29.82 .net 新しい言語を学ぶために "Hello, world!" してる人に向かって 「Hello, world! を表示するコマンドは1億人が作ってるんだ大人げない!」 とか言わないよな普通
432 :名無しさん@お腹いっぱい。 :2014/08/30(土) 12:28:42.62 .net なんか大人げない話題が続いている
433 :名無しさん@お腹いっぱい。 :2014/08/30(土) 14:13:33.67 .net # iif cond cmd # iif "$n = 'm'" "menu_start" # iif "$n = 'e'" "edit_history" # @param1 cond # @param2 cmd function iif() { echo "iif $1" if eval "[ $1 ]";then eval "$2" fi }
434 :名無しさん@お腹いっぱい。 :2014/08/30(土) 19:14:19.60 .net hello, world
435 :名無しさん@お腹いっぱい。 :2014/08/30(土) 21:21:52.95 .net Linux全般に言えるのは、逆引きマニュアルのサイトが極めて少ないってこと abc順なんてコマンド知った上での確認にしか使えないよな やっぱこれでメシ食ってる人もいるから閉鎖的・保守的なんかいな これもまた、技術は進んでも人間はー、だな
436 :名無しさん@お腹いっぱい。 :2014/08/30(土) 21:30:14.10 .net Linuxの話はLinux板で。
437 :名無しさん@お腹いっぱい。 :2014/08/30(土) 21:41:41.14 .net bashなんかをチョット使うためにネットで探す側にとっちゃUでもLでもどーでもいいわけで
438 :名無しさん@お腹いっぱい。 :2014/08/30(土) 21:50:07.24 .net なら「Linux全般に言えるのは」なんて限定つけなくていいでしょ。
439 :名無しさん@お腹いっぱい。 :2014/08/30(土) 22:01:03.44 .net >>432 大人気ない話題, 大人気だな(ドヤ
440 :名無しさん@お腹いっぱい。 :2014/08/30(土) 22:10:08.01 .net >>435 man -k サイトが必要とされてると思うなら、お前が作ってもいいんだぜ。
441 :433 :2014/08/30(土) 22:11:53.32 .net わりーわりー、じゃあ「UNIX・Linux全般に言えるのは」に訂正ね やれやれ・・・
442 :433 :2014/08/30(土) 22:15:41.48 .net >>440 遠慮しときまーす 音楽再生するのにスクリプトが必要だっただけなんで ほかの事に時間つかいまーす
443 :名無しさん@お腹いっぱい。 :2014/08/30(土) 22:41:00.39 .net 果実を食い荒らすことしかしない奴。
444 :名無しさん@お腹いっぱい。 :2014/08/30(土) 22:54:58.21 .net ∧ ∧ / ヽ ./ .∧ / `、 / ∧ /  ̄ ̄ ̄ ヽ ,-v-、 ( ̄ ̄ ̄ ̄ ̄月曜日  ̄ ̄ ̄) / _ノ_ノ:^) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ / _ノ_ノ_ノ /)<やぁ、気分はどうだい? /:::::::::: ヽ-=・=-′ ヽ-=・=- / / ノ ノノ// 夏休みは終わりだよ。 ヽ::::::::::: \___/ / ノ ̄ ̄)____ノ ヽ__:::::::::::::: \/ / /" / ̄ ノ /\\ //\ ヽ ゙ ノ | \\ // |\ /`ー''"ー'
445 :433 :2014/08/30(土) 22:59:57.98 .net しかし幼稚なレスしか返ってこんねー マジで小学生レベルだもんなぁ 話の趣旨に対して何の言及もないんだもんな ま、しょっちゅう使ってる人が一番わかってて「何をいまさら」で、レスするのもアホらしいからスルーされてるんだろう、と思う
446 :名無しさん@お腹いっぱい。 :2014/08/30(土) 23:06:00.30 .net お前具体的な話何もしてないじゃん 煽りに対しては煽りしか返ってこないだろそんなもん
447 :433 :2014/08/30(土) 23:08:49.51 .net 具体的にはこのスレの全員死んでほしいんだよ
448 :名無しさん@お腹いっぱい。 :2014/08/30(土) 23:11:02.53 .net rm -rf /
449 :433 439 440 443 :2014/08/30(土) 23:17:48.46 .net ははは、こりゃ幼稚園レベルだ。IDないからってなぁ オトナゲナイどころの話じゃないねぇ じゃあさいなら(433 439 440 443で発言したものでーす) 445 名前:433[sage] 投稿日:2014/08/30(土) 23:08:49.51 具体的にはこのスレの全員死んでほしいんだよ
450 :名無しさん@お腹いっぱい。 :2014/08/31(日) 01:19:27.47 .net 小学生でも独学でサーバー構築できる時代ですし 小学生が常駐してても何もおかしくはない そんな時代なのに情報の探し方を知らない大人はいなくならないんだよなぁ
451 :名無しさん@お腹いっぱい。 :2014/08/31(日) 02:34:39.38 .net >>447 自殺はよくないぞ。 俺は一応止めたからな。
452 :名無しさん@お腹いっぱい。 :2014/08/31(日) 18:47:03.58 .net # iif cond cmd1 [cmd2] function iif() { if eval "[ $1 ]";then eval "$2" else if [ $# -eq 3 ]; then eval "$3" else : fi fi }
453 :名無しさん@お腹いっぱい。 :2014/08/31(日) 18:54:52.98 .net function show_arr() { local var_name=$1 eval local arr=(\"\${$var_name[@]}\") local i=0 for a in "${arr[@]}"; do echo "$i $a" ++ i done }
454 :名無しさん@お腹いっぱい。 :2014/09/03(水) 19:17:02.10 .net 羽ばたきは反則だろw
455 :名無しさん@お腹いっぱい。 :2014/09/03(水) 20:25:11.15 .net そう?
456 :452 :2014/09/04(木) 10:58:52.18 .net ごめんごめん、鳥人間コンテストの誤爆 orz
457 :名無しさん@お腹いっぱい。 :2014/09/06(土) 09:02:25.48 .net 過疎ってきて、残念だな 比較的短時間でレスが付くが、住人同士の書き込みはないし ひたすら質問を待っているようだが >>444 >>447 の様な調子だと、気味悪くて、質問とか出来ないよね
458 :名無しさん@お腹いっぱい。 :2014/09/06(土) 09:13:54.24 .net 挿入ネタはいいです
459 :名無しさん@お腹いっぱい。 :2014/09/06(土) 13:27:08.22 .net 既読スルー
460 :119 :2014/09/06(土) 17:32:44.85 .net お久しぶりです119です。その節はお世話になりました。また質問させてください。 「dropboxとevernoteに同じpdfファイルがあったらdropboxのを削除」ってなんとか 自動化できませんか?多分できないかもですが200本ぐらいあって嫌気が差して。。。 今度はubuntu14.04です。geeknoteのインストールはできました。 よろしくお願いします。
461 :名無しさん@お腹いっぱい。 :2014/09/06(土) 19:25:15.36 .net geeknoteってテキストしか取得できないんじゃなかったか evernote APIを直接叩いてファイルハッシュを取得した方が確実では
462 :名無しさん@お腹いっぱい。 :2014/09/06(土) 19:47:39.71 .net 未読スルー
463 :119 :2014/09/06(土) 22:44:57.62 .net ふええ
464 :名無しさん@お腹いっぱい。 :2014/09/07(日) 00:53:04.47 .net cronとかで定期実行 md5sumなどで同一性のチェック rm で削除か? pdfだけなら同一性のチェックはファイルネームとサイズだけ見ても大丈夫かもしれない
465 :ジジイ :2014/09/07(日) 01:19:39.17 .net 助けてあげたいが、dropboxとかevernoteとかそんなハイカラなものは使ったことがないし どんなものかも知らない
466 :名無しさん@お腹いっぱい。 :2014/09/07(日) 07:57:58.48 .net evernoteならen-mediaタグかどっかにmd5持ってた気がしたから ファイル名で検索→ノート取得→ハッシュ値取得が楽だと思う dropboxはシェルスクリプトでいけるけどevernoteは面倒だな 俺ならRubyで書いてしまう
467 :名無しさん@お腹いっぱい。 :2014/09/07(日) 10:23:46.37 .net >>466 全ノート(もしくはpdfが含まれていそうなノート)をエクスポートすればシェルスクリプトだけで存在確認できるかも Enexファイルはxmlだしgrepできる で、今試したらいけた $ grep 'hash="<PDFファイルのMD5>"' ./エクスポート結果.enex <en-media type="application/pdf" style="cursor:pointer;" width="100%" height="62046" hash="<PDFファイルのMD5>"/> あとは>>464 の手順で問題ないと思うけどどうだろうか
468 :名無しさん@お腹いっぱい。 :2014/09/07(日) 11:01:38.80 .net >>467 自分が吐いた決め打ちフォーマットじゃないんだから 一般的なXMLとして扱うのが普通じゃないかな? xmlにgrepとか笑い話だよ
469 :名無しさん@お腹いっぱい。 :2014/09/07(日) 11:36:30.18 .net >>468 em-mediaタグのtype見てhash値検索するように改変してくれてもいいのよ 個人利用レベルなら hash="" だけで十分でないかと思うけどね Enexファイルは数十GB以上になることだってあるんだろうし、できることなら高速な方がいいでしょ
470 :名無しさん@お腹いっぱい。 :2014/09/07(日) 13:08:07.21 .net >>460 fuseとかでmountされてるなら簡単そうだ。
471 :名無しさん@お腹いっぱい。 :2014/09/07(日) 13:13:22.51 .net >>468 xmlstarlet sel -t -v //hash とかか。 値のマッチってどう書くんだっけ。
472 :名無しさん@お腹いっぱい。 :2014/09/07(日) 13:15:48.55 .net hashは属性か。 //en-media[@hash=値] だっけ。
473 :名無しさん@お腹いっぱい。 :2014/09/07(日) 14:51:02.99 .net xmlstarlet sel -t -m "//en-media[@type='application/pdf']" --if "@hash='<PDFファイルのMD5>'" -c . -n 正規表現並にソラで使えるようにならないとな。
474 :119 :2014/09/07(日) 15:15:43.65 .net レスありがとうございます。勉強します。
475 :名無しさん@お腹いっぱい。 :2014/09/07(日) 15:46:39.05 .net >>473 xmlstarlet って使ったことなかったから興味本位で実行してみたら落ちた そのままじゃ使えないのかな? hoge.enex は 4 GB くらい $ xmlstarlet sel -t -m "//en-media[@type='application/pdf']" --if "@hash='<PDFファイルのMD5>'" -c . -n /hoge.enex Attempt to load network entity http://xml.evernote.com/pub/evernote-export3.dtd hoge.enex: xmlSAX2Characters: huge text node: out of memory
476 :名無しさん@お腹いっぱい。 :2014/09/07(日) 15:56:20.46 .net >>475 修行中なので詳しい訳ではない。 ストリーム処理だと思うから、深さの方が関係ありそうな気がするけど。 あとは-nの前に-bを入れてみるとか。
477 :名無しさん@お腹いっぱい。 :2014/09/07(日) 15:59:06.67 .net 馬鹿でかいtext nodeがあるのか。
478 :名無しさん@お腹いっぱい。 :2014/09/07(日) 16:42:53.09 .net xmlをgrepしたらいけないの?
479 :名無しさん@お腹いっぱい。 :2014/09/07(日) 17:47:26.60 .net evernote ってバイナリを base64 で保存してるんでしょ? とんでもないサイズの値があっても不思議ではないな
480 :119 :2014/09/07(日) 17:51:49.12 .net お世話になります。なんかわかってきました。 find . -type f -exec md5sum {} \; > ~/md5sum.txt で md5checksum.txt ができました。これの一列目が<PDFファイルのMD5>なのでxmlstarlet sel かgrepできればいいんですよね。 >>475 はEntity 'nbsp'って怒られました。-nの前に-bでも一緒でした。エラーメッセージ?をコピペした方がいいんだろうか。 >>467 のやり方ですけど、ためしにひとつのハッシュ値でgrepしたらありました!で続きはどうしたらいいんでしょうか。 一列目<PDFファイルのMD5>を取り出す →xargsかなんか使ってgrepかfindか何かに渡す →ヒットしたハッシュ値を持つファイルを一覧化 →見ながら削除(rmとか怖い) みたいな感じでしょうか?教えてください!Evernote-test-2014-09-07.enexは181mbです。 あと残念ながらdropbx内のpdfのファイル名とevernoteのノート名とそこに添付されてるpdfファイル名がばらばらのがあります。 のでハッシュ値を使うしかないみたいです。
481 :名無しさん@お腹いっぱい。 :2014/09/07(日) 19:07:01.61 .net >>480 grepしちゃいけないってことはないけど、順番が逆だったり、変なとこに改行あったりで、やりにくい時もある。だから自分はxmlstarletも慣れるため、なるべく使ってる。 >>480 xmlstarlet valで出るエラーなら、ちゃんとしたxmlでないのかも。どのルール(dtd)使うのかが一致してなさそう。無視するオプションもあった気がするけど。 無理にxmlstarlet使う必要はない。
482 :名無しさん@お腹いっぱい。 :2014/09/08(月) 09:25:12.72 .net >>574 たまにやるからいいのよ。普段は服きとけって思うもん。 んで、たまーに特別企画で脱ぐ。 むしろすっぽんぽんにならなくていいよ。 まあ、でも、服着てる写真が一番ってのは同意。
483 :あ :2014/09/08(月) 10:03:15.93 .net >>482 お前ときたら...
484 :名無しさん@お腹いっぱい。 :2014/09/08(月) 11:42:58.09 .net わざと誤爆してスレ活性化って最近はやってるの?
485 :名無しさん@お腹いっぱい。 :2014/09/08(月) 13:01:45.35 .net 流行ってないよ。
486 :名無しさん@お腹いっぱい。 :2014/09/08(月) 13:10:13.06 .net じゃあはやらせようね
487 :名無しさん@お腹いっぱい。 :2014/09/08(月) 13:37:07.07 .net >>574 の貼る画像に期待。
488 :名無しさん@お腹いっぱい。 :2014/09/08(月) 20:48:30.29 .net >>481 トンクス 試してみる、そのツール
489 :名無しさん@お腹いっぱい。 :2014/09/08(月) 23:33:21.80 .net もう板全体を3人くらいしか見てないからなぁ
490 :名無しさん@お腹いっぱい。 :2014/09/10(水) 00:47:47.39 .net それはないやろ。Unix板、200人くらいは書き込んでると思うけど
491 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:32:23.40 .net >>490 俺とオマエだけだよ、あとは犬板
492 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:36:45.77 .net んなわけないだな
493 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:36:46.21 .net DOSの操作性を超えたunixはありますか?
494 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:37:15.14 .net >>493 unixの操作性を超えたDOSってある?
495 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:38:39.37 .net そういう意味じゃなくてunixって未だにDOSの操作性を超えてませんよね?
496 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:42:46.89 .net zshよりcommand.comの方が操作性に優れるという人現る
497 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:42:50.33 .net >>494 改変コピペにかまうな
498 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:43:29.62 .net >>495 そう思ってる人に、超えるUNIXは無いだろうね。 あくまでも君の評価規準なわけだし。
499 :名無しさん@お腹いっぱい。 :2014/09/10(水) 10:46:26.75 .net そういう意味じゃなくてunixって未だにDOSの操作性と同等レベルという意味だろ
500 :名無しさん@お腹いっぱい。 :2014/09/10(水) 12:21:16.54 .net Disk Operating System ?
501 :名無しさん@お腹いっぱい。 :2014/09/10(水) 12:39:07.21 .net 構うな構うな
502 :名無しさん@お腹いっぱい。 :2014/09/10(水) 13:28:40.18 .net >>499 VUEって知ってるか?
503 :名無しさん@お腹いっぱい。 :2014/09/10(水) 14:30:43.32 .net このスレ、俺とお前の2人しかいない説、間違いであることが 釣り師によって暴かれたw
504 :名無しさん@お腹いっぱい。 :2014/09/10(水) 14:40:01.88 .net なるほど。釣り師含めて3人しかいないんですねw
505 :名無しさん@お腹いっぱい。 :2014/09/10(水) 14:43:45.02 .net いや、俺で5人目。
506 :名無しさん@お腹いっぱい。 :2014/09/10(水) 14:56:25.60 .net 全部多重人格のお前
507 :名無しさん@お腹いっぱい。 :2014/09/10(水) 14:59:22.25 .net >>493 先に「DOSの操作性」を定義してくれ。Appleが Mac出した頃に言ってたやつか?
508 :名無しさん@お腹いっぱい。 :2014/09/10(水) 15:16:50.47 .net 操作性どころか機能性で劣ってる
509 :名無しさん@お腹いっぱい。 :2014/09/10(水) 17:16:24.41 .net どのDOSのこと言ってるの? -- DOS -- MS-DOS PC-DOS FreeDOS QDOS DR-DOS PTSDOS AppleDOS AtariDOS AmigaDOS Commodore DOS
510 :名無しさん@お腹いっぱい。 :2014/09/10(水) 17:27:55.31 .net -- Unix -- Unix System-V BSD/OS Xenix [SCO Open Server] (Microsoft/SCO) FreeBSD NetBSD OpenBSD Debian k/FreeBSD Linux mkLinux (Apple) HP-UX (HP) Tru64 Unix (COMPAQ/HP) Nonstop-UX (TANDEM/COMPAQ/HP) AIX (IBM) Solaris (Sun/Oracle) EWS (NEC) Super UX (NEC) NEWS (SONY) MacOSX (apple) A/UX (Apple) Interix (Softway Systems/Microsoft) Irix (Silicon Graphics) NeXT (NeXT) z/OS (IBM) QNX Plan9 UX/4800 (NEC) minix
511 :名無しさん@お腹いっぱい。 :2014/09/10(水) 20:43:27.68 .net 10年ぶりにLinux戻るので『入門bash第3版』を買った ニュースグループ comp.lang.shell を購読していた頃は bash の知識が維持されていたんだけどな
512 :名無しさん@お腹いっぱい。 :2014/09/11(木) 01:44:35.87 .net >>510 日本での話なんだからUni-OSに決まってルナ うんぬは言わせない。 ちなみに私の名前は中野です。
513 :名無しさん@お腹いっぱい。 :2014/09/11(木) 01:52:05.05 .net >>512 無論だな
514 :名無しさん@お腹いっぱい。 :2014/09/11(木) 01:55:58.41 .net 遅くまで起きてなくてもいいんですぜ 追い上げですね
515 :名無しさん@お腹いっぱい。 :2014/09/11(木) 03:48:41.09 .net unix-osってあったのか。初耳。シグマプロジェクトがらみ? パナ、ファコム、内田洋行
516 :名無しさん@お腹いっぱい。 :2014/09/11(木) 07:28:53.74 .net >>509 VSEは?
517 :名無しさん@お腹いっぱい。 :2014/09/11(木) 10:47:38.04 .net >>511 板違い。
518 :名無しさん@お腹いっぱい。 :2014/09/11(木) 16:09:20.38 .net 最近年取ってきたから、10年前とか2〜3年前くらいの感覚でやばい。 ニコニコ動画で グラディウス5 の画面みて「最新のゲームって超絶すげー」とか感心してたら 10年前発売の旧作だと知りショック。そりゃPS2だもんな。昔のはずだよ。
519 :名無しさん@お腹いっぱい。 :2014/09/11(木) 17:15:47.87 .net そういえば2〜3年前くらい前の今日、アメリカですごい事件あったよね?
520 :名無しさん@お腹いっぱい。 :2014/09/11(木) 17:20:28.74 .net 雑談はよそでやれ
521 :名無しさん@お腹いっぱい。 :2014/09/11(木) 19:55:30.30 .net そういえば今日じゃないけど5〜6年前くらい前、ドイツで壁壊し祭りみたいなのあったよね?
522 :名無しさん@お腹いっぱい。 :2014/09/11(木) 22:28:03.76 .net 動いてる、動いてるよぉぉ
523 :名無しさん@お腹いっぱい。 :2014/09/11(木) 22:34:34.98 .net 生きてるわ
524 :名無しさん@お腹いっぱい。 :2014/09/12(金) 00:21:23.77 .net kshってどうなの?業務で使われているのか? AIXのデフォルトがkshだっけ
525 :名無しさん@お腹いっぱい。 :2014/09/12(金) 00:35:56.81 .net Linux以外はkshなんじゃないの? cshで仕事をするアホはいないだろうし。
526 :名無しさん@お腹いっぱい。 :2014/09/12(金) 02:33:21.92 .net うちはよく使ってるよ bashとほぼ変わらんと思ってる
527 :名無しさん@お腹いっぱい。 :2014/09/12(金) 02:37:45.72 .net MacOSXはLinuxでもないのにbashデフォだな
528 :名無しさん@お腹いっぱい。 :2014/09/12(金) 03:23:37.29 .net 10.4からbashになったんだったかな。その前はtcshだったと思うw マニアックすぎる。
529 :名無しさん@お腹いっぱい。 :2014/09/12(金) 08:09:32.88 .net 今はオリジナルのAT&T kshがオーブンソース化されているね。 http://www.kornshell.com/
530 :名無しさん@お腹いっぱい。 :2014/09/13(土) 19:03:41.41 .net オーブンソースか。
531 :名無しさん@お腹いっぱい。 :2014/09/14(日) 03:56:07.71 .net シェル(貝)がオープンでソースかけられてるって? うまそうだな
532 :名無しさん@お腹いっぱい。 :2014/09/14(日) 06:06:08.22 .net 挿入ネタはいいです
533 :名無しさん@お腹いっぱい。 :2014/09/14(日) 10:06:24.25 .net 529はぶっけかけの方じゃないか?
534 :名無しさん@お腹いっぱい。 :2014/09/14(日) 17:11:01.54 .net 今シェルについて勉強してます。 どなたかash、bsh、cshの違いにつ いて教えて頂けませんか? メリット、デメリットがわからず、どれを使って良いのかわかりません。 自分で調べろやは無しでお願いします。
535 :名無しさん@お腹いっぱい。 :2014/09/14(日) 18:21:28.45 .net 勉強してるんなら自分で調べるべきだろ。
536 :名無しさん@お腹いっぱい。 :2014/09/14(日) 18:34:45.06 .net 挿入回答はいいです
537 :名無しさん@お腹いっぱい。 :2014/09/14(日) 19:04:37.79 .net >>534 bshっていうとbeansh、javaのシェルじゃないか。bashの間違いだろ。 cshはともかく、便利なbashと、互換性のあるashは両方使えばいい。 csh使うならtcshとかzshの方がいいんじゃないか。 とりあえず、ついてんの使え。
538 :名無しさん@お腹いっぱい。 :2014/09/14(日) 19:05:30.05 .net >>534 あとdashとkshも忘れるな。
539 :名無しさん@お腹いっぱい。 :2014/09/14(日) 19:08:29.20 .net 宿題は自分でやれ
540 :名無しさん@お腹いっぱい。 :2014/09/14(日) 19:44:39.21 .net bashにしろって言ったら「仕事では(t)cshを使うことになった!だまされた!」って言うだろうし cshにしろって言ったら「いまどきcshなんて使ってない!だまされた!」とか言うんだろ? どうせそうなんだろ?
541 :名無しさん@お腹いっぱい。 :2014/09/14(日) 20:17:27.68 .net >>534 a b c で並んでいるけど、基本ば sh (bourne shell) か ksh あたりな。 別にどれつかってもそんなにかわらないが、zsh だけは他と違いすぎるのであくまで趣味で。 スクリプト書くのでなければ csh でもいいが、基本は ksh bash だよ
542 :名無しさん@お腹いっぱい。 :2014/09/14(日) 21:50:14.99 .net >>534 改変コピペ http://peace.2ch.net/test/read.cgi/unix/1398419457/71
543 :名無しさん@お腹いっぱい。 :2014/09/14(日) 21:50:21.53 .net >>534 基本 bourne shell (/bin/sh) の派生と csh の派生があると考えたら良い。 普通に使う分にはそれほど違いはない。 csh系もけっこうコマンド叩いたりするには良い。 何が違うかと言えば、csh系はシェルスクリプトの文法がC言語に似ていて独特。 基本的にcshでシェルスクリプトを書かないのがマナーとされている。 自宅では好きなの使えば良い。 bashもけっこう拡張されていて、ポータブルじゃないスクリプトがLinuxなんかに 書かれていて、これもちょっとあまり良いことではないかもしれない。 Linuxのbash向けに書かれたスクリプトが他のOSでは走らないという ことが起こり得る。 Linuxの /bin/sh は /bin/bash へのリンクなので、bashがデフォルト。 だが、他のOSには bash がデフォルトで入っているわけではない。 /bin/sh の bourne shell で動くように書くのがお作法とされている。
544 :名無しさん@お腹いっぱい。 :2014/09/14(日) 22:24:54.67 .net 改変コピペにマジレスしても無駄。
545 :名無しさん@お腹いっぱい。 :2014/09/14(日) 22:48:05.25 .net ログが残って、これからUnix業界に入ってくる新人が同じ質問してググって ひっかかるから意味あるにょ
546 :名無しさん@お腹いっぱい。 :2014/09/15(月) 02:08:57.75 .net メリット、デメリットって聞くのはゆとり世代なんだよなぁ。 BシェルであることがメリットだがBシェルであることがデメリットだし CシェルであることがメリットだがCシェルであることがデメリットだし 個性のあるものや違いのあるものは、それ自体がメリットとデメリットを 兼ね備えてるんだから、そんなメリットをキニシナイで「何が違うか」 を追求すればいいのに。
547 :名無しさん@お腹いっぱい。 :2014/09/15(月) 03:36:26.77 .net トートロジーとかいらね
548 :名無しさん@お腹いっぱい。 :2014/09/15(月) 13:59:14.54 .net Cシェル使ってても、Bシェル(系)の読み書きは必須。 でも、逆はそうでもない。 Cシェル覚えるのは、実際にスクリプトにぶつかってからでいい。
549 :名無しさん@お腹いっぱい。 :2014/09/15(月) 17:13:35.55 .net そんなのにぶつかったら、cshは知りません。といって窓際ジジイに振れ。 ジジイから仕事を取り上げてはイカン。
550 :名無しさん@お腹いっぱい。 :2014/09/16(火) 13:45:24.39 .net As soon as he starts to gently stroke my hair, my shell begins to open. 優しく髪をさわられるやいなや私の貝が開くのです 竹内由恵
551 :名無しさん@お腹いっぱい。 :2014/09/16(火) 14:01:09.03 .net そういうよくある男女の日常はいいです。
552 :名無しさん@お腹いっぱい。 :2014/09/16(火) 14:58:11.67 .net 彼女は上付きでやたらでかい栗あるよ。
553 :名無しさん@お腹いっぱい。 :2014/09/16(火) 15:01:24.53 .net そういう彼女の正規表現はいいです。
554 :名無しさん@お腹いっぱい。 :2014/09/16(火) 16:39:08.22 .net え? まんこって正規表現になるのか? 性器表現かと思っていた。
555 :名無しさん@お腹いっぱい。 :2014/09/16(火) 16:39:59.70 .net そういう直接表現はいいです。
556 :名無しさん@お腹いっぱい。 :2014/09/16(火) 16:49:16.49 .net まんこは表現じゃなくて、インスタンスだろ?
557 :名無しさん@お腹いっぱい。 :2014/09/16(火) 17:03:44.39 .net そういう話はどうでもいいです。
558 :名無しさん@お腹いっぱい。 :2014/09/16(火) 20:24:42.56 .net 職場の若い男の子に1回だけ許したら主人のより大きくて、、
559 :名無しさん@お腹いっぱい。 :2014/09/16(火) 21:15:35.64 .net おいおい困るよー。 男の子のインスタンスを参照外しをしてくれ。
560 :名無しさん@お腹いっぱい。 :2014/09/17(水) 02:01:03.34 .net 下ネタは俺ももういらん。楽しいからずっと続いてしまう。
561 :名無しさん@お腹いっぱい。 :2014/09/17(水) 02:06:24.32 .net 下ネタって楽しいものなのか 男だけどおっさんの下ネタとか聞きたくない
562 :名無しさん@お腹いっぱい。 :2014/09/17(水) 02:21:47.63 .net 下ネタは長葱が有名だね。
563 :529 :2014/09/17(水) 04:18:24.99 .net 貝をオーブンで焼くっていっただけなのに、なぜか続くな。 正規表現とか出てきだすと、もう sed で 置換 しちゃいやよとかとまらんからもうやめれ。
564 :名無しさん@お腹いっぱい。 :2014/09/17(水) 07:05:23.59 .net OK、俺には早すぎるスレだった
565 :名無しさん@お腹いっぱい。 :2014/09/17(水) 14:51:28.26 .net シェルスクリプトの話題 MacOSXで意外と良い機能 automator 使ってる人いる? アレ、他のOSにも広がるといいのだが。
566 :名無しさん@お腹いっぱい。 :2014/09/17(水) 17:29:57.29 .net automator? kwsk
567 :名無しさん@お腹いっぱい。 :2014/09/17(水) 17:48:24.59 .net ggr
568 :名無しさん@お腹いっぱい。 :2014/09/17(水) 17:51:18.46 .net MacのGUIによる自動化ツールじゃなかったっけ? Apple製品で固められたソフトウェア環境で、Appleの考えるUXに従う操作を自動化する的な奴。 Appleの考えるUXの範囲の操作しか出来ないし、Apple製品で固めなきゃ駄目だから広まらんだろう。 ただこれシェルスクリプトの話題か・・・?
569 :名無しさん@お腹いっぱい。 :2014/09/17(水) 20:42:46.79 .net リモートから、なんちゃらスクリプトでitunesのコントロールとかしてたことはあるけど、何だっけなぁ。
570 :名無しさん@お腹いっぱい。 :2014/09/17(水) 20:46:02.61 .net ぐぐったらosascriptってコマンドっぽい。中身はapplescript。automatorからも使えるらしいから、その話かな。
571 :名無しさん@お腹いっぱい。 :2014/09/17(水) 22:18:52.00 .net ごめん、勘違いだったわ。Automatorってシェルスクリプトかと思っていた。
572 :名無しさん@お腹いっぱい。 :2014/09/17(水) 23:25:58.55 .net Windowsで言えばcomオブジェクトを使うPowerShellスクリプトを生成する GUIのウィザードみたいなもの?インタフェース情報を日本語で出してくれると 確かに便利だと思うが... スクリプト?
573 :名無しさん@お腹いっぱい。 :2014/09/18(木) 01:59:22.10 .net 自分の「ユーザー名だけ」を得るにはどうやればよいのでしょうか。 今はこうしてるんですけど何かコマンドありますか? expr "`id`" : 'uid=[0-9]\{1,\}(\([^)]\{1,\}\)'
574 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:07:48.35 .net echo $USER
575 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:08:10.72 .net >>573 whoami
576 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:08:46.73 .net id -u -n
577 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:10:38.33 .net >>573 なんでそんなに面倒くさいことやってるの? せめて help くらい見ようとは思わないの?
578 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:12:11.02 .net >>577 何のhelp?
579 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:12:11.99 .net >>577 そこのレベルに行くまでのステップとしてこういうスレが必要
580 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:15:30.80 .net >>578 id
581 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:20:51.40 .net >>573 が expr と正規表現さえ知らずにいれば もっとシンプルな答えに辿り着けたんだろうな
582 :名無しさん@お腹いっぱい。 :2014/09/18(木) 02:45:03.81 .net 皆さんありがとうございます。 man id は一応読んだのですが、-n だけやって出ねーじゃんと怒ってたのでした。 ありがとうございました。
583 :名無しさん@お腹いっぱい。 :2014/09/18(木) 12:19:41.74 .net >>578 へーあにーそんばで へーなじゃあにばで へーゆのあにさーわん へーぇ うえないわずんが
584 :名無しさん@お腹いっぱい。 :2014/09/18(木) 12:28:45.24 .net こういうのおもしろいと思って書いてるのかな
585 :名無しさん@お腹いっぱい。 :2014/09/18(木) 12:31:53.72 .net 面白さを期待して2chを開いたら負け
586 :名無しさん@お腹いっぱい。 :2014/09/18(木) 21:29:39.70 .net >>582 そういう質問良いと思うよ。説明する方も勉強になる。 この過去ログがどこかにストックされて、またいつか誰かが読む。
587 :名無しさん@お腹いっぱい。 :2014/09/18(木) 22:05:19.49 .net 本人乙ω
588 :名無しさん@お腹いっぱい。 :2014/09/18(木) 22:21:33.17 .net $whoami >>575
589 :584 :2014/09/18(木) 22:22:09.13 .net $whoami >>575 と書いておくべきだったかな。
590 :名無しさん@お腹いっぱい。 :2014/09/18(木) 22:40:14.98 .net $ who am i $ あれ、いつからこうなった?
591 :名無しさん@お腹いっぱい。 :2014/09/18(木) 23:25:45.65 .net >>590 whoの結果は?
592 :名無しさん@お腹いっぱい。 :2014/09/18(木) 23:44:55.44 .net who mom like
593 :名無しさん@お腹いっぱい。 :2014/09/19(金) 06:29:35.60 .net >>591 $ who myname tty8 2014-09-13 10:21 (:0) $ who am i $ who mom likes $ whoami myname $ でした。
594 :名無しさん@お腹いっぱい。 :2014/09/19(金) 06:37:03.81 .net >>576 Solarisのidコマンドには -u や -n のオプションがないんだよ。 しかもwhoamiコマンドも/usr/ucb送りだからインスコされてない場合が多い。 よって、>>573 みたいにするのが最善。
595 :名無しさん@お腹いっぱい。 :2014/09/19(金) 06:52:46.26 .net >>574 $USER は、その時点のuidがセットされているとは限らない。 たとえば su したとき、rootにならずに su前のユーザー名のままになる。
596 :名無しさん@お腹いっぱい。 :2014/09/19(金) 07:28:44.10 .net なんだ、>>573 って超上級者かよ。素人がとんでもない暴走をしているように見えた。
597 :名無しさん@お腹いっぱい。 :2014/09/19(金) 07:30:54.28 .net basename $0 をポータブルにするために ${0##*/} に書くのと同じ感じ?
598 :名無しさん@お腹いっぱい。 :2014/09/19(金) 07:35:31.05 .net >>573 はもうちょっと簡単に書けるだろ expr "`id`" : '.*uid=[^(]*(\([^)]*\))' ちなみに uidのところを gid に買えて id -gn の動作にもできる。
599 :名無しさん@お腹いっぱい。 :2014/09/19(金) 07:43:55.67 .net どうでもいいことかもしれないけど、Unixのこの手のシェル芸は顔文字に見えてしまうことがけっこうある。 (*.*) すべてのファイル
600 :名無しさん@お腹いっぱい。 :2014/09/19(金) 07:59:02.69 .net id | (IFS='()' read u n o; echo $n)
601 :名無しさん@お腹いっぱい。 :2014/09/19(金) 08:18:30.62 .net (IFS='()'; set `id`; echo $2)
602 :名無しさん@お腹いっぱい。 :2014/09/19(金) 09:04:43.38 .net >>599 すべてのファイルなら*でよいのだが
603 :名無しさん@お腹いっぱい。 :2014/09/19(金) 09:39:40.02 .net DOSの人か。
604 :名無しさん@お腹いっぱい。 :2014/09/19(金) 09:57:33.32 .net 逆に、「拡張子のないファイルだけ」を表すのが難しかったりする
605 :名無しさん@お腹いっぱい。 :2014/09/19(金) 10:03:59.99 .net 例えば fileA fileB ・・・ *** ××× === ÷÷÷ とあった場合、ループ処理を行いながら1行ずつ結合するにはどのようにすればいいのでしょうか。
606 :名無しさん@お腹いっぱい。 :2014/09/19(金) 10:19:02.50 .net >>605 paste fileA fileB
607 :名無しさん@お腹いっぱい。 :2014/09/19(金) 12:22:12.15 .net >>605 スクリプトでやると意外と面倒くさいな
608 :名無しさん@お腹いっぱい。 :2014/09/19(金) 12:49:08.21 .net こういうことがやりたいの? exec 3< fileA exec 4< fileB while read a <&3; st_a=$? read b <&4 || [ "$st_a" = 0 ] do echo "$a $b" done
609 :名無しさん@お腹いっぱい。 :2014/09/19(金) 12:51:38.48 .net この板って&が化けるんだ、、
610 :名無しさん@お腹いっぱい。 :2014/09/19(金) 13:07:14.44 .net >>605 です。 >>606 >>608 のお方、ありがとうございます。 最終的にやりたいこととしては 複数のファイルの中にあるものを連結させるのと同時に先頭や間に文字列を追加。 さらには連結させた一行一行がコマンドとして一括実行出来ればと思ってるんですが中々良い方法が見つかりません。
611 :名無しさん@お腹いっぱい。 :2014/09/19(金) 13:11:13.45 .net perlか何かで書いた方が楽そう。
612 :名無しさん@お腹いっぱい。 :2014/09/19(金) 13:13:40.58 .net >>610 だったら >>608 の方法でいいじゃん。これベースに必要な処理を書き加えるだけ。
613 :名無しさん@お腹いっぱい。 :2014/09/19(金) 15:35:05.43 .net >>610 そういうのはEXCEL使えば一瞬で終わることがある。 Unix使いだが、Excelも愛用している。
614 :名無しさん@お腹いっぱい。 :2014/09/19(金) 15:46:53.92 .net excelの起動が一瞬でないのに
615 :名無しさん@お腹いっぱい。 :2014/09/19(金) 15:51:02.66 .net 彼がスクリプト書くのに悩む時間よりは短いんだろう
616 :名無しさん@お腹いっぱい。 :2014/09/19(金) 15:59:07.58 .net なんでも無理にスクリプト組む必要はないと思うぞ。業務の場合は特に。 勉強目的なら時間かけて考えるべきだが、 業務の場合はスピードが求められるから、いろいろな方法でやればいいじゃん
617 :名無しさん@お腹いっぱい。 :2014/09/19(金) 16:03:29.91 .net >>613 連結させた各行を(UNIX)コマンドとして実行したい、と言ってるのに、 EXCEL(笑)でやるってアホか
618 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:13:35.14 .net エクセルとかアプリも使って良いなら、 >>606 の時点で終わってるわけだが。
619 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:33:28.05 .net >>618 どういうこと?
620 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:34:19.24 .net >>618 うむ、俺もなぜ paste がスルーされたのかわからん。 pasteがスルーされてるからEXCELを提案したが >>617 テキストファイルを交互に読み込ませるなどの場合、 EXCELでデータのインポートをして、セルの操作で一列に並べて cat file1a cat file2a cat flle1b cat file2b cat file3a : : : それをコピーして、 #!/bin/sh の真下にコピペして冗長なスクリプト流して一瞬で作業が終わる時とかもある。 急ぎの場合は、EXCELで済むときはそうやってる。 ただし、スクリプト書く方が早い場合と、EXCELでスクリプト作った方が早い場合の 見分けなんかはある程度経験値がいる。
621 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:35:19.20 .net EXCELやEXCELのマクロを使ってやる時もあるし、 テキストエディタのマクロを使ってコマンドを作る時もあるし、 シェルスクリプトを書く場合もあるってこと。
622 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:44:02.87 .net >>619 アプリに依存しないでshだけで動く必要がある場合もあるから。配布の場合とか。 自分の手間を省くためのツールなら、何でもありだから、 プリインストールのexcelを起動する前に、pasteをインスールして実行できるんじゃないかという勢い。
623 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:48:56.23 .net やっぱEXCELとか使ってると無能になるんだな。
624 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:49:06.19 .net pasteじゃうまくいかなかったんじゃなかったっけ。
625 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:51:54.03 .net pasteをわざわざインストールしなきゃいけない環境ってあるの?
626 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:57:33.57 .net 後出しの追加仕様があっただけだろ。 それがevalとかの内容だったのに、そこで更にエクセルの方が、とか言ってる 餌が登場で、元の話はどうでもよくなってる空気
627 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:58:21.37 .net >>622 EXCELで作った冗長スクリプトってどこでも使えるよ。 EXCELが無理ならEmacsで作ればいいし。
628 :名無しさん@お腹いっぱい。 :2014/09/19(金) 20:00:54.64 .net 25歳。 エクセラー、Microsoftの回し者と呼ばれる俺だけど、みんなもMOS受けてみなよ。 超お勧め。 つか、>ループ処理を行いながら1行ずつ結合するにはどのようにすればいいのでしょうか。 これをやったらみんな満足するってことかな。 元のテキストのサンプルくらいははってほしいよな〜と
629 :名無しさん@お腹いっぱい。 :2014/09/19(金) 20:07:20.23 .net 人生の選択に失敗したからって人を巻き込もうとするなよ。
630 :名無しさん@お腹いっぱい。 :2014/09/19(金) 20:15:16.46 .net >>628 > 元のテキストのサンプルくらいははってほしいよな〜と >>605 にあるじゃん。
631 :名無しさん@お腹いっぱい。 :2014/09/20(土) 00:32:19.77 .net excelってコマンド起動で引き数渡しても結果吐き出してくれたり すんの? だったら使いたいなぁ。 Windowsにマウントかけたり日本語ファイル名使われたり いろいろ面倒なんだよな。 excelでフィルタ処理かかるならそれで良いわ
632 :名無しさん@お腹いっぱい。 :2014/09/20(土) 00:54:04.64 .net CSV を直接いじるより Excel であーでもないこーでもないと 試行錯誤しながら加工・集計・グラフ化した方が楽な時もある マクロの自動記録を使えば GUI 操作を手順化して VBA 出力できるし その VBA を Ruby や Python から呼ぶって感じで使えば シェルスクリプトからバッチ処理として呼ぶことも出来る
633 :名無しさん@お腹いっぱい。 :2014/09/20(土) 00:57:57.30 .net >>60 いいな、これ。 paste だと、おなじ行数だけコマンドを記述したファイルを用意しないと…なので いちど Excel に貼り付けて concatenate やら & やらで組み立てて流し込んでた。 素晴らしい。
634 :名無しさん@お腹いっぱい。 :2014/09/20(土) 01:02:38.79 .net >>633 60 じゃなくて 606 だw 関係ないけど、サーバごとに中途半端な差分が必要なコンフィグとか Excel から FSO でコンフィグを吐き出させたりしてる。 vbLf が心の友。
635 :名無しさん@お腹いっぱい。 :2014/09/20(土) 01:24:27.74 .net >>634 わかる Excel がエディタ兼シェルスクリプト生成ツールになってたりする
636 :名無しさん@お腹いっぱい。 :2014/09/20(土) 01:40:04.56 .net >>634 git使えよ
637 :名無しさん@お腹いっぱい。 :2014/09/20(土) 09:32:44.10 .net excelでテキスト操作とか嫌がらせにもほどがある
638 :名無しさん@お腹いっぱい。 :2014/09/20(土) 09:53:30.66 .net execlしか使ったことない。execvの方が多いか。
639 :名無しさん@お腹いっぱい。 :2014/09/20(土) 10:34:06.98 .net >>631 CSVやテキストデータの読み込みなんて大昔からついているし、 ソートとかセルの操作をVBAやショートカット、関数などを組み合わせて 手早く処理をすると、シェルスクリプトを書くよりも簡単にコマンドの羅列なんかを 生成できるので、それをTeratermからスクリプトとして登録したり、 NFSやSMBがあればマウントしてもいいし、メールで送ってもいいし なんしどうにでもできる。 >>632 Mac版のExcelもアップルスクリプトやVBA使えるし、いろいろ 拡張されていて、思わぬ機能や使い方がしれっと搭載されていたりするよな。 >>637 馬鹿にしてないで深みに入っていくとEXCELは無現の可能性を秘めているソフトだぞ。 ゲームも作れる、イラストもかける、大よそなんでもできる。 知り合いは、VBAでマクロを組んで、客が欲しいCGIを選択肢を選んでカスタマイズ していけば、自動でPerlのコードを生成するプログラムを書いていた。 そいつは自営業・フリーランスのSEだけど、客の50万円100万円くらいの 依頼をそのシステムで半日でくみ上げていて、偉いやつだなと思ったぞ
640 :名無しさん@お腹いっぱい。 :2014/09/20(土) 10:39:57.24 .net ここは「シェルスクリプト総合」スレなんで他所行って下さい
641 :名無しさん@お腹いっぱい。 :2014/09/20(土) 11:06:18.65 .net >>640 そもそも事の始まりはあいまいな質問を出した>>605 に問題があるだろ シェルスクリプトでやるより他の方法が良いよ・・もまたシェルスクリプトのスレにふさわしい話題だ。 文字列処理ではC使わずにPerlつかえよってアドバイスとかも有効だろ
642 :名無しさん@お腹いっぱい。 :2014/09/20(土) 11:33:52.33 .net expr で拡張子を除いたファイル名にって時 これは期待通りだけど、 $ expr "/tmp/hoge.txt" : '.*/\(.*\)\.' $ hoge 数字だけのファイル名だとこうなっちゃうのね・・ $ expr "/tmp/0001.txt" : '.*/\(.*\)\.' $ 1
643 :名無しさん@お腹いっぱい。 :2014/09/20(土) 11:35:17.30 .net >>641 そこまでで終わってればよかったんだけどな。
644 :名無しさん@お腹いっぱい。 :2014/09/20(土) 11:37:05.58 .net >>642 うちではならない
645 :名無しさん@お腹いっぱい。 :2014/09/20(土) 11:39:52.11 .net >>642 どこの expr よ? バグじゃないの? ちゃんと 0001 になるよ。
646 :名無しさん@お腹いっぱい。 :2014/09/20(土) 12:19:08.46 .net >>642 OSX だけなった。なんだこれ。
647 :名無しさん@お腹いっぱい。 :2014/09/20(土) 12:43:01.82 .net 変数代入必要だけど、expr使わずにこうしろということか。 $ f=/tmp/0001.txt; f=${f##*/}; echo ${f%.*} 0001
648 :名無しさん@お腹いっぱい。 :2014/09/20(土) 12:45:12.04 .net >>646 え? 0001 になるけど $ expr "/tmp/0001.txt" : '.*/\(.*\)\.' 0001 $ sw_vers ProductName: Mac OS X ProductVersion: 10.9.4
649 :名無しさん@お腹いっぱい。 :2014/09/20(土) 13:27:17.39 .net >>648 ProductName: Mac OS X ProductVersion: 10.6.8 さっさとアップグレードしろって事かな。めんどくせー。
650 :名無しさん@お腹いっぱい。 :2014/09/20(土) 21:06:24.47 .net Mac用のパッケージマネージャとかあるんだから新しい入れれば良いんじゃね?
651 :名無しさん@お腹いっぱい。 :2014/09/20(土) 21:53:15.08 .net シャッチョさん、新しい入れるー?
652 :名無しさん@お腹いっぱい。 :2014/09/21(日) 01:11:35.77 .net >>639 MS Officeが便利なのは否定しないけどスレチなのは何とかしようよ。 >>640 Excelをシェルスクリプトで操作する例を出してくれればそれはそれでアリなんだけどな。 xlsファイルとかにスクリプトを記述するのはシェルスクリプトじゃないスクリプトなんで却下で。 ExcelはCOMで操作できるし、wshとかPowerShellでやっても良ければ楽勝なんだけど、 wshはshとついてるけどシェルじゃないし、PowerShellは一種のシェルだけど…このスレ的には有りか…?
653 :名無しさん@お腹いっぱい。 :2014/09/21(日) 01:44:24.04 .net >>652 Windows PowerShell Part4 http://peace.2ch.net/test/read.cgi/win/1359719778/l50
654 :名無しさん@お腹いっぱい。 :2014/09/21(日) 01:56:48.40 .net >>653 専用スレはどこかって話じゃなくて、 このスレ的にはPowerShellのShellはShellScriptのShellとして扱っても良いのかって話でしょうが
655 :名無しさん@お腹いっぱい。 :2014/09/21(日) 02:05:07.55 .net $ 場違いなのは\ $ 間違いない zsh: command not found: 場違いなのは間違いない
656 :名無しさん@お腹いっぱい。 :2014/09/21(日) 02:14:51.70 .net >>655 % zsh なのに何で $ にしてるの。 zsh: can't open input file: なのに何で
657 :名無しさん@お腹いっぱい。 :2014/09/21(日) 02:35:03.71 .net つまらないよ
658 :名無しさん@お腹いっぱい。 :2014/09/21(日) 02:37:59.78 .net >>639 なんか意味がわからないけど 例えばsedとかを多用してデータ編集やソートや改行編集を する簡単なスプリクトを組むとするじゃない。 コレをUnixでは コマンド ファイル名 とかで流せば自動生成されてファイルをいじれるよね。 ワイルドカードやスケジュールも取りながら。 これをexcelでも内容のマクロにデータを吸わせて処理させて吐かせられるの? 例えばexcel.exe マクロ名 ファイル名 とかいう引数で処理できちゃうのかな? ちょっと種類多いファイルで大きなデータ量の自動編集でのフィルタの様な 仕事を良く書いてるんで、excelで通せるなら成形の拡張性も大きいし利用したいのよ。 引数でワイルドカードのデータを与えられないなら無理なんだわ 手作業でexcelに吸わせて吐かすような時間ないから。 もしかして開いたexcelのマクロ上でワイルドカードの吸い込みと吐き出しの 自動処理ができるのかな? それならスケジュールに組めなくても1作業で処理できそうだが。
659 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:13:05.98 .net >>658 >>620 で書かれているけど611はその場で必要なスクリプトを素早く作る為のツールとしてエクセルを話題に出したように思える。 バッチ処理を想定していなかったんしゃないの?
660 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:31:27.50 .net >>658 WindowsならCOMを叩けばGUI触らずにExcelで色々な処理させる事ができるんだけど、 COMを複数回のコマンド実行の組合せで操作する方法は聞いたことがないんだよなぁ… 標準入出力を経由しての生成した・されたCOMオブジェクト受け渡しが出来んと、 ワンライナーが本体な事になってシェルスクリプトらしくないし、どうやれば上手く出来るだろう。 >>659 その時点ではそうかもしれんけど、そっから先はExcel便利って言ってるだけだからな。 このスレでそういうということはシェルスクリプトからExcel操作できるに違いない的な?(多分違う)
661 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:36:17.98 .net >>659 そういうことなの? スクリプトはすぐに書けるから関係ないんだよなぁ。 精製されたデータをフォーマットや利用都合に併せて 編集改ざんするだけなんで。 >>660 たとえばexcelのマクロファイルのショートカットを置いて そこにエクスローラで大量につかみ取ったファイルを ドロップしたら、規則に従って自動生成されたファイルが 書き出されるだけでも良いのだけど。
662 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:36:21.80 .net >>658 すれ違いなのでこの辺りでやめておくが >手作業でexcelに吸わせて吐かすような時間ないから Excelでも中級以上になるとそうそう早い作業が行える場合もあるわけさ。 それが前提でシェルスクリプトでここで質問するレベルの場合、 1.シェルスクリプトを習得することが目的 2.作業をはやく終えたい 2が目的の場合、EXCELでやったらいい場合もあるよってお話。 それを必要以上に掘り下げると延々とすれ違いの話題が続くのでやめておくわ。
663 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:37:46.40 .net >>660 それこそ、WindowsでUnixのシェルスクリプト使えばできるが、まあこの辺でやめておこう。 cygwin sfu sua mkstoolkit powershell applescript とかいろいろ方法はあると思う。
664 :名無しさん@お腹いっぱい。 :2014/09/21(日) 03:45:47.71 .net 冷静に考えて、EXCELで生成したバッチを張り付けて長すってのも シェルスクリプトの問題解決手法の一つの話題かもしれん。 俺以外も何人か「たまにやる」って書き込んでるし。 同じ感じでEmacsとか秀丸のマクロを使うとかもやる。 肩の力を抜いて何が何でもシェルで制御みたいな使命感からの解放というテーマ
665 :名無しさん@お腹いっぱい。 :2014/09/21(日) 06:32:06.32 .net >>647 も悪くないと思う #!/bin/bash time { for(( i=1000; i; --i )) do if #[[ '/var/tmp/0001.txt' =~ (.*/)?([^.]*)[.]?.* ]] [[ '/var/tmp/0001.txt' =~ .*/(.*)[.].* ]] then echo "rematch: ${BASH_REMATCH[1]}" fi done } | tail -n 1 time { for(( i=1000; i; --i )) do printf 'expr: ' expr "/tmp/0001.txt" : '.*/\(.*\)\.' done } | tail -n 1 time { for(( i=1000; i; --i )) do f='/tmp/0001.txt' f="${f##*/}" echo "parameter expansion: ${f%.*}" done } | tail -n 1
666 :名無しさん@お腹いっぱい。 :2014/09/21(日) 09:16:08.44 .net >>655 なんで\付けてるのにプロンプト出てくるの?
667 :名無しさん@お腹いっぱい。 :2014/09/21(日) 09:18:33.09 .net PS2='$ '
668 :名無しさん@お腹いっぱい。 :2014/09/21(日) 12:28:44.73 .net >>661 WSHスクリプトにファイルをドロップしてそこからExcelのCOMオブジェクト作って 処理させるのは余裕の筈だけど、名前にsh付いてるだけでシェルスクリプト関係ないっす。 >>664 テキストエディタの矩形選択と正規表現置換だけでも結構色々出来るね 引数が不変だとか、その場で一度やれば終わりな作業ならこれで済ます
669 :名無しさん@お腹いっぱい。 :2014/09/21(日) 19:37:15.32 .net こんばっしゅ(bash) 標準出力と標準エラー出力、標準入力から入力した文字列を コンソールとログファイルに出力させたいです。良い方法ありますでしょうか? お願いします。 # これだと標準入力から出力した文字列が出力されないんです・・・ exec &> >(tee ${logfile})
670 :名無しさん@お腹いっぱい。 :2014/09/21(日) 19:59:15.06 .net script
671 :名無しさん@お腹いっぱい。 :2014/09/21(日) 20:12:34.14 .net >>670 ありがとうございます script だと、プロンプト部も出力されてしまうんですよね すみませんが、どうにか script 以外で実現する方法はないでしょうか?
672 :名無しさん@お腹いっぱい。 :2014/09/21(日) 20:52:36.54 .net exec < <(tee -a $logfile) exec > >(tee -a $logfile) 2>&1
673 :名無しさん@お腹いっぱい。 :2014/09/21(日) 20:53:45.12 .net >標準入力から入力した文字列をコンソールとログファイルに出力させたいです。 とはどういうこと?readコマンドとかのお話?
674 :名無しさん@お腹いっぱい。 :2014/09/21(日) 20:54:55.21 .net すみませんが詳しい方のみ回答をお願いします
675 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:23:04.08 .net いや、お前の質問の仕方が悪いんだろ?
676 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:23:31.18 .net 態度悪いから教えてやらねえ
677 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:33:25.07 .net >>672 ファイル名は別にする方がいいと思う
678 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:34:11.37 .net >>673 そうですね。 read コマンドで入力された文字列がログに出ないので困っています。 格納された変数をファイルにリダイレクトすれば、暫定的に対処できるのですが それだと一時凌ぎにしかならないので・・・
679 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:39:09.02 .net >>672 おお、なんかそれっぽい! 手元にUNIX環境がない&知識が乏しいため検証できませんが 大変助かりました。ありがとうございます。 >>677 どういう糸か聞いてよろしいですか? ファイルへの書込みタイミングを気にされているのでしょうか
680 :名無しさん@お腹いっぱい。 :2014/09/21(日) 21:50:57.09 .net >>678 >>679 やっぱり態度悪いんだよ。
681 :名無しさん@お腹いっぱい。 :2014/09/21(日) 22:04:39.41 .net >>679 >>どういう糸か聞いてよろしいですか? 上のteeと下のteeが同時に動いていて同じファイルに書き込むから
682 :名無しさん@お腹いっぱい。 :2014/09/21(日) 22:13:35.11 .net >>681 tee に追記オプションを指定していますが、それでは解決しないのでしょうか? 書き込みのタイミングによっては、どちらか一方しか書き込みされないことを懸念されていると
683 :名無しさん@お腹いっぱい。 :2014/09/21(日) 22:17:05.41 .net 上と下の tee で実施している処理を ひとつの exec & tee コマンドで実装できれば解決できそうですね
684 :名無しさん@お腹いっぱい。 :2014/09/22(月) 01:33:23.91 .net 名無しで煽って喧嘩させようとする暇人がいるw
685 :名無しさん@お腹いっぱい。 :2014/09/22(月) 02:39:39.41 .net >>663 さすがに目の前にUNIXの箱が置いてあるのに できそこないのエミュは使わんなぁ。
686 :名無しさん@お腹いっぱい。 :2014/09/22(月) 08:30:03.61 .net なりすましに簡単に釣られんな
687 :名無しさん@お腹いっぱい。 :2014/09/22(月) 09:29:43.37 .net tee を一つには思いつかなかったが exec なら exec 3>> "$logfile" 0< <( tee /dev/fd/3 ) 1> >( tee /dev/fd/3 ) 2>&1
688 :名無しさん@お腹いっぱい。 :2014/09/22(月) 20:11:58.76 .net >>685 その>>663 の中に「エミュレータ」は一つも存在しない。 あえて言えばCygwinは「シミュレータ」かもしれないが。 SFU・SUAはネイティブUnixだど。
689 :名無しさん@お腹いっぱい。 :2014/09/23(火) 14:41:53.66 .net これでFA exec 2>&1 >(tee -a "$logfile") < <(tee -a "$logfile")
690 :名無しさん@お腹いっぱい。 :2014/09/23(火) 14:54:11.96 .net >>689 それじゃ標準エラーがlogfileに出力されないし、細かいところ間違ってる。
691 :名無しさん@お腹いっぱい。 :2014/09/25(木) 19:05:00.25 .net $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
692 :名無しさん@お腹いっぱい。 :2014/09/25(木) 19:25:49.73 .net >>691 今日1日で何回それを見たことやら・・・もうお腹いっぱいです。 久々にありえないレベルの脆弱性でしたね。bash死すべし。
693 :名無しさん@お腹いっぱい。 :2014/09/25(木) 19:51:28.19 .net >>691 いいけど、この場合envコマンドは不要なのでenvない方がいい。cshとかいうのは消滅してるので。
694 :名無しさん@お腹いっぱい。 :2014/09/25(木) 20:15:03.71 .net シェル関数のexportを環境変数で渡す時、関数定義を実行するつもりで関数定義終了後の任意の文字列までコマンドとして実行してしまう、ということか。bash1でも症状発生するぞ。こんな昔からあったのか、、
695 :名無しさん@お腹いっぱい。 :2014/09/25(木) 20:28:15.93 .net >>694 そもそも環境変数で関数が定義できるとか、誰が発明したんだよ。 echo='() { /bin/rm -rf /; }' とか絶対するなよ。
696 :名無しさん@お腹いっぱい。 :2014/09/25(木) 20:35:57.05 .net 一応、引用元 90の日記: GNU Bashに脆弱性、環境変数を渡して呼ぶことで任意コード実行が可能に http://slashdot.jp/journal/585655
697 :名無しさん@お腹いっぱい。 :2014/09/25(木) 20:43:02.28 .net bashスクリプトをCHIで実行してたら終了だな。 refererやuser-agentに突っ込まれたら…
698 :名無しさん@お腹いっぱい。 :2014/09/25(木) 20:43:49.61 .net 誤 CHI 正 CGI
699 :名無しさん@お腹いっぱい。 :2014/09/25(木) 21:08:38.27 .net patch当てて関数定義後の文字列は無視したとしても、同名関数定義の問題は残るなぁ。 スクリプト内で使用してるすべてのコマンド(内部/外部とも)について、 スクリプト冒頭で unset -f echo ls cp mv rm .... とかしなければならない??
700 :名無しさん@お腹いっぱい。 :2014/09/25(木) 22:24:27.22 .net env X='() { (a)=>\' zsh -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable”
701 :名無しさん@お腹いっぱい。 :2014/09/26(金) 01:01:02.95 .net >>699 unsetは安全に呼び出せるの?
702 :名無しさん@お腹いっぱい。 :2014/09/26(金) 01:35:01.96 .net bashスクリプトだけじゃなくて、system()とかやってるperl, php, ruby, pythonスクリプトもアウトか スゲー破壊力だわ こんなの見たことない。
703 :名無しさん@お腹いっぱい。 :2014/09/26(金) 02:01:51.36 .net ってかおまえら、なんで今まで気づかなかったの? 全員、注意力散漫過ぎじゃね?
704 :名無しさん@お腹いっぱい。 :2014/09/26(金) 02:16:26.45 .net だって環境変数に関数がセットできちゃってそれが実行されちゃうなんて 想定外なんだもん(誰かがわざと仕込んだんじゃ…)
705 :名無しさん@お腹いっぱい。 :2014/09/26(金) 05:41:47.08 .net >>701 builtin unset -f すればいいな。 あと、echo とかの内部コマンドにすべて念のため builtin を付ける。 外部コマンドはすべてフルパスで実行、で気休めにはなるか??
706 :名無しさん@お腹いっぱい。 :2014/09/26(金) 05:44:31.83 .net >>705 builtin() がシェル関数だったらダメじゃん、アホか
707 :名無しさん@お腹いっぱい。 :2014/09/26(金) 06:57:55.40 .net 脆弱性なんだからスクリプトの方であれこれやるんじゃなくて bashにパッチあてるべきだろ
708 :名無しさん@お腹いっぱい。 :2014/09/26(金) 07:14:21.93 .net >>707 そのパッチを当てても、元々のシェル関数のexportの脆弱性は残るという話だろ。 patch当てただけで対策済みとでも?
709 :名無しさん@お腹いっぱい。 :2014/09/26(金) 07:15:55.44 .net >>707 patchでは、>>695 の攻撃は防げない。
710 :名無しさん@お腹いっぱい。 :2014/09/26(金) 09:56:52.54 .net コミットログ追いかけて、犯人を特定してくれ。
711 :名無しさん@お腹いっぱい。 :2014/09/26(金) 10:24:48.23 .net 「30年以上前にそのバグつぶしてたわー」 https://twitter.com/oclsc/status/514876962830295040
712 :名無しさん@お腹いっぱい。 :2014/09/26(金) 11:26:05.33 .net chmod a-rwx bash したらどうなる?起動できなくなったりするか?
713 :名無しさん@お腹いっぱい。 :2014/09/26(金) 11:46:31.68 .net >>711 30年前のshに関数ってあったっけ?
714 :名無しさん@お腹いっぱい。 :2014/09/26(金) 11:51:14.39 .net >>712 環境によるんじゃね
715 :名無しさん@お腹いっぱい。 :2014/09/26(金) 12:08:05.08 .net >>713 kshが1983で~30年前
716 :名無しさん@お腹いっぱい。 :2014/09/26(金) 12:10:57.34 .net 様々なバグの元になるから関数のexportの仕様は没にしました、ってこと?
717 :名無しさん@お腹いっぱい。 :2014/09/26(金) 13:18:39.66 .net これ丸かっこのあとのスペースがないと発生しないな よく気づいたなあ
718 :名無しさん@お腹いっぱい。 :2014/09/26(金) 16:21:46.99 .net ネット見ると、一部の物好きが自鯖にcurl投下して遊んでる程度だが、 一般層に向けた報道は全然騒いでないんだが・・・大丈夫なのかこれ? BASHの脆弱性でCGIスクリプトにアレさせてみました http://www.walbrix.com/jp/blog/2014-09-bash-code-injection.html 前回の、暗号が解読されちゃうってのは、誰にでもわかりやすいけど、 シェルで実行できると一般人に言っても、わかりにくいせいか。
719 :名無しさん@お腹いっぱい。 :2014/09/26(金) 16:33:02.85 .net NBCで今回の件が報道されたらしい https://twitter.com/crazybob/status/515206151005147136/photo/1 「A bug called Bash」てw
720 :名無しさん@お腹いっぱい。 :2014/09/26(金) 16:58:11.36 .net >>718 「一般層に向けた報道」ってどの辺のメディアの話?
721 :名無しさん@お腹いっぱい。 :2014/09/26(金) 17:17:19.03 .net export関数を格納する環境変数名の頭に BASH_FUNC_ を付け、変数名の後ろに () を付けるという対策がされたみたい。 環境変数名(値ではない)に () 付きだとシェル自身では set や export できないけど、 C言語でputenv(3)とかできるだろうし、そんなことしなくても envコマンドでセットできてしまう。 env 'BASH_FUNC_echo()=() { 悪いこと; }' sh -c 'echo hello' は、依然としてできてしまう。
722 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:27:49.80 .net 1983年は既に31年前だぞ
723 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:28:57.63 .net そんなのみんなわかってるよ。
724 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:40:14.28 .net CGIで起動するのはwww-dataとかapacheなら設定のユーザ? rootじゃないよね。
725 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:43:33.94 .net 普通はrootじゃないね。 そこからローカルから攻撃可能な穴を突いてrootを取る。
726 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:44:59.96 .net UAにsleep 10仕込んでブラウジング
727 :名無しさん@お腹いっぱい。 :2014/09/26(金) 18:54:31.60 .net while true; do /bin/false; doneとかも仕込めるんだよな...
728 :名無しさん@お腹いっぱい。 :2014/09/26(金) 22:02:55.32 .net forkbomb(){ forkbomb|forkbomb & } ; forkbomb
729 :名無しさん@お腹いっぱい。 :2014/09/26(金) 23:30:51.08 .net Services for Unix の bash Cygwin の bash でも再現しました。本当にありがとうございました。
730 :名無しさん@お腹いっぱい。 :2014/09/27(土) 00:13:15.64 .net ある意味枯れたプログラムだったから みんな安心しきってたとこあるよね
731 :名無しさん@お腹いっぱい。 :2014/09/27(土) 00:17:09.30 .net 最近でも連想配列追加されたりreadarray追加されたり新機能増えてるんだけどな 手元の最新版bashで開発してていざ本番環境のCentOSでテストやってみると動かなかったりする
732 :名無しさん@お腹いっぱい。 :2014/09/27(土) 00:49:15.04 .net 純正シェルを使っとけば何の問題もなかったんや
733 :名無しさん@お腹いっぱい。 :2014/09/27(土) 01:42:51.60 .net 上でも書かれていたシェルスクリプトは Bourne Shell で動くように書きなさいの教訓 ここより下に家を建てるなの石碑に似てるな。忘れたころにやってきた
734 :名無しさん@お腹いっぱい。 :2014/09/27(土) 01:43:53.88 .net 最近はLinuxでBash用のシェルスクリプトで起動スクリプト書いてるのもいるが、 そういうのがあるから /bin/sh をリンクのはり直しでの暫定対応とかが難しくなるんだわ
735 :名無しさん@お腹いっぱい。 :2014/09/27(土) 02:49:34.17 .net >>719 やふうかどこかに載ってた翻訳記事に、 まともな翻訳しろよというコメントがついてたんだけど、 元から間違ってたわけねw
736 :名無しさん@お腹いっぱい。 :2014/09/27(土) 04:25:36.39 .net >>725 Webサービスならwwwユーザ権限だけで致命傷じゃね?
737 :名無しさん@お腹いっぱい。 :2014/09/27(土) 06:30:23.88 .net Bourne Shell で書くということは $( ) (( )) [[ ]] なんかが使えないのか 不便すぎる・・・ なにか新しいシェルの実装が出てきそうな予感 fishとか既にあるみたいだけど
738 :名無しさん@お腹いっぱい。 :2014/09/27(土) 06:55:03.56 .net $( ) (( )) [[ ]] なんかに頼っていた奴は 頭が不自由過ぎる・・・
739 :名無しさん@お腹いっぱい。 :2014/09/27(土) 07:04:56.58 .net rubyからpythonに書き換える職人の他にbashからshに書き換える職人というのも現れるのかw
740 :名無しさん@お腹いっぱい。 :2014/09/27(土) 07:27:30.33 .net >>738 理由は? 自分が使えないから?
741 :名無しさん@お腹いっぱい。 :2014/09/27(土) 07:29:57.08 .net >>740 $( ) (( )) [[ ]] 使う方法も使わない方法も熟知してるから。
742 :名無しさん@お腹いっぱい。 :2014/09/27(土) 07:35:07.70 .net GNUは便利なら良いじゃん、とろくすっぽ考えずに実装する(してた)事が多い気がする。 emacsのファイルバリアブルも長い間evalれたし。
743 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:01:35.64 .net >>741 便利なのに使わないとかアホすぎる
744 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:04:01.55 .net >>743 両方使うって言ってるの読めないの? 便利な方しか知らないのってアホすぎる
745 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:09:29.26 .net もちろんなくても書く方法は分かってるけど 「こういう記法があったら便利だな」って理由で導入されたんだし そりゃ使える状況ならバンバン使うだろ
746 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:11:48.95 .net >>745 それだと議論になってない。バンバン使わないとは言ってない。 と同時に/bin/shだけで書く方法にも熟知してるから、/bin/shに戻ってもなにも不便を感じない。 ここで不便を感じる人は偽物。
747 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:24:29.22 .net >>746 不便は感じるだろ でないと $( ) とか使う意味ないし なんか、引っ込みつかなくなってるんじゃね?
748 :名無しさん@お腹いっぱい。 :2014/09/27(土) 08:25:36.28 .net 不便は感じない。 スクリプトでは基本、` ` にしてるから。 $( )使うのはワンライナーの時とか。
749 :名無しさん@お腹いっぱい。 :2014/09/27(土) 09:32:16.26 .net それを世間では痩せ我慢と言う。
750 :名無しさん@お腹いっぱい。 :2014/09/27(土) 09:33:55.18 .net >>749 自己紹介乙 おれは好んで ` ` の方使ってるので。
751 :名無しさん@お腹いっぱい。 :2014/09/27(土) 09:41:04.75 .net 便利なのに、なくても不便でないって、使いこなしてないだけだな。 742 名無しさん@お腹いっぱい。 sage 2014/09/27(土) 08:04:01.55 >>743 両方使うって言ってるの読めないの? 便利な方しか知らないのってアホすぎる 746 名無しさん@お腹いっぱい。 sage 2014/09/27(土) 08:25:36.28 不便は感じない。 スクリプトでは基本、` ` にしてるから。 $( )使うのはワンライナーの時とか。 言い訳どぞ
752 :名無しさん@お腹いっぱい。 :2014/09/27(土) 09:45:34.38 .net bashの機能を「使いこなす」って哀れだなw
753 :名無しさん@お腹いっぱい。 :2014/09/27(土) 09:59:48.80 .net >>750 はいはい w
754 :名無しさん@お腹いっぱい。 :2014/09/27(土) 10:07:55.55 .net おっと逃げ道を見つけたか。 都合の悪いことは見ないふりと。
755 :名無しさん@お腹いっぱい。 :2014/09/27(土) 10:29:19.70 .net 上の人じゃないけど、スクリプトにする場合は$()はなくてもいいな。 他のbashの便利機能がないと、(特に使い捨ての場合に)マンドクセってなるけど。 ちなみに$()をワンライナーで使うというのは、上の人とは違う意味で同意。 英語キーボードになったときの`を見つけられないからw
756 :名無しさん@お腹いっぱい。 :2014/09/27(土) 10:58:49.04 .net ``を入れ子にする事なんか考えないのだね。
757 :名無しさん@お腹いっぱい。 :2014/09/27(土) 11:01:14.03 .net ` ` の入れ子なんて普通にやってますが、
758 :名無しさん@お腹いっぱい。 :2014/09/27(土) 12:50:21.46 .net >>754 そういうごたくは >>751 に回答してからにしなよ w
759 :名無しさん@お腹いっぱい。 :2014/09/27(土) 13:08:20.08 .net >>758 >>751 =>>754 何言ってんの。
760 :名無しさん@お腹いっぱい。 :2014/09/27(土) 13:39:14.39 .net bash厨必死w
761 :名無しさん@お腹いっぱい。 :2014/09/27(土) 13:48:04.88 .net ``の入れ子とか今回とは別の意味でバグを生みそう ダブルクォーテーションのエスケープとか絡んでくるとなおさら それを回避してるのが$()の良さだと思うけど シェルの実装の複雑さやポータビリティを優先するか シェルスクリプトの書きやすさや読みやすさを優先するか 人によって意見の相違があるのかもしれんが、自分は後者かな 今さらshで書くのは面倒… しかし今回のでBashへの不安感が少し出てきたし、どうしようか…
762 :名無しさん@お腹いっぱい。 :2014/09/27(土) 13:52:38.06 .net >>761 > シェルの実装の複雑さや シェルの実装の簡潔さや
763 :名無しさん@お腹いっぱい。 :2014/09/27(土) 13:54:30.06 .net >>761 >今さらshで書くのは面倒… とか言ってたらボケるよ。 もともとshメインで使ってきた人にとってshで書くのは楽勝。
764 :名無しさん@お腹いっぱい。 :2014/09/27(土) 14:10:10.10 .net COBOLerも同じこと言ってた
765 :名無しさん@お腹いっぱい。 :2014/09/27(土) 14:43:12.58 .net >>761 ``に入れ子がダメで、$()なら大丈夫な理由がわからん。
766 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:05:03.89 .net まあややこしい書き換えするならスクリプト用の言語使うし
767 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:15:08.13 .net >>763 楽勝なのと楽なのは違うから
768 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:23:44.72 .net そういう言葉にしかツッコミできないのかねぇ.. もともとshメインで使ってきた人にとってshで書くのは楽。楽々。極楽。 ... これでいい?
769 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:31:18.19 .net 世の中の言語が全部Javaになれば解決。
770 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:37:32.17 .net Javaはない。重過ぎ。
771 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:50:51.45 .net コマンドの入れ子 com "`bin \"\`exe \\\"foo bar\\\"\`\"`" com "$(bin "$(exe "foo bar")")" どちらでも書ける でもどちらで書きたいか 上の書き方に疑問を抱かないのは、悪しき根性主義に毒された迷惑野郎か 自分はバグのない完璧なコードを書けると豪語する勘違い野郎
772 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:55:22.79 .net どっちもどっちだな。 悪しき根性主義に毒された迷惑野郎とまで言うなら 行を分けろよと思う。
773 :名無しさん@お腹いっぱい。 :2014/09/27(土) 15:57:18.01 .net 横レスだが、変数使う方法もありますよ。 t=`exe "foo bar"` t=`bin "$t"` echo "$t" 変数に直接代入する場合は全体を " " で括らなくてもスペース等がちゃんと保存されるのもポイント。 これならshが苦手(笑)な人にも書けますねw
774 :名無しさん@お腹いっぱい。 :2014/09/27(土) 16:04:08.05 .net >>773 たぶんだけど >横レスだが、変数使う方法もありますよ。 こういう当たり前のことを思いつけない人が 「shが苦手(笑)」なんだろうね。
775 :名無しさん@お腹いっぱい。 :2014/09/27(土) 16:11:28.57 .net >>771 は一部バックスラッシュ無駄だよ。あっても動くけど無駄な書き方してる。 君がshの ` ` のネスティング苦手なのはわかった。
776 :名無しさん@お腹いっぱい。 :2014/09/27(土) 17:05:06.70 .net >>718 一般層向けの報道出てきたね。 http://www3.nhk.or.jp/news/html/20140927/k10014922101000.html
777 :名無しさん@お腹いっぱい。 :2014/09/27(土) 17:07:15.30 .net >>768 意味が伝わらなかったのか、かわいそうに >>775 では、正解をどうぞ
778 :名無しさん@お腹いっぱい。 :2014/09/27(土) 17:28:01.90 .net いつまでもウジウジと・・・女みたいな奴だな
779 :名無しさん@お腹いっぱい。 :2014/09/27(土) 17:32:44.63 .net お、性差別発言。
780 :名無しさん@お腹いっぱい。 :2014/09/27(土) 17:53:03.90 .net <丶`Д´>キャベツニダ!謝罪しる!!
781 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:00:58.91 .net ネストとかクソ見にくいコードを書く奴は滅びろ
782 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:29:02.50 .net cshを標準にすればネストはマトモに動かないからみんな幸せ
783 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:40:21.38 .net cshはないわ。
784 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:50:22.25 .net >>779 今時は誉め言葉かも w
785 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:51:39.21 .net >>781 >>775 が美しいコード書いてくれるから待ってろ
786 :名無しさん@お腹いっぱい。 :2014/09/27(土) 18:58:33.90 .net いつまでもウジウジと・・・女みたいな奴だな
787 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:13:11.93 .net >>785 君は書けないの?プ
788 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:21:11.15 .net >>773 それぐらい知ってる 上のレスで ` ` をネストして使うとあったのに対して疑問を呈しただけ 結局shは ` ` をネストしない、一時変数を使いなさいという流儀 >>771 まで複雑でなくても、ダブルクォーテーションのエスケープが頻出するのも煩雑だし美しくない ここらへんを面倒だと感じるという主張に対して否定するのは 根性主義者、勘違い野郎と反発されても仕方がない
789 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:24:12.73 .net いつまでもウジウジと・・・女みたいな奴だな
790 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:27:11.64 .net shの利点はポータビリティや今回特に明らかになったセキュリティにあって 言語としては極めて貧弱 この点を認めずにshで書けと言ってもなかなか賛同を得ないと思う
791 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:27:16.98 .net >>788 "を使う場合と使わない場合で使い分ければいいのに。 頭が固いからshを使いこなせないんだろうな。
792 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:30:55.63 .net 一言余計。
793 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:31:10.46 .net >>791 具体的にコードで説明してくれ
794 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:38:08.52 .net いつまでもウジウジと・・・女みたいな奴だな
795 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:40:43.31 .net >>787 うん、書けないから書いてね
796 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:48:05.73 .net こりゃ煽ってる方も書けなかったっぽいな。
797 :名無しさん@お腹いっぱい。 :2014/09/27(土) 19:53:43.33 .net com "`bin "\`exe "foo bar"\`"`"
798 :名無しさん@お腹いっぱい。 :2014/09/27(土) 20:36:30.98 .net >>797 これは本当にshで書けるの? bashの拡張ではないの?
799 :名無しさん@お腹いっぱい。 :2014/09/27(土) 20:37:00.09 .net bashに慣れきってたから、たまには他のシェルも試してみるかと fish をインストールしてみたけど コマンドラインのシンタックスハイライトとか新鮮で楽しいな
800 :名無しさん@お腹いっぱい。 :2014/09/27(土) 22:45:36.60 .net >>773 もしかして変数に " " なしでスペースを保存しながら代入できるのもbashの拡張?
801 :名無しさん@お腹いっぱい。 :2014/09/28(日) 00:57:05.41 .net fish は変数の展開に " " がいらないとか リストがあったりとか、シンプルで良さそうだけど 変数の定義はやっぱり = があった方が見やすいのではないかと思った 環境変数の定義がオプションによる指定というのも、あまり筋が良くないような fish での変数の定義: set name 'Mister Noodle' fish での環境変数の定義: set -x MyVariable SomeValue こうしてほしかった 変数の定義: set name = 'Mister Noodle' 環境変数の定義: export MyVariable = SomeValue http://fishshell.com/docs/current/tutorial.html
802 :名無しさん@お腹いっぱい。 :2014/09/28(日) 02:17:54.65 .net >>801 それいいな その構文なら使ってみたいかも
803 :名無しさん@お腹いっぱい。 :2014/09/28(日) 02:59:54.86 .net >>744 便利な物を使ってるのなら頼ってるって言うんじゃないの? >>746 便利な物が使えないから不便って言うんじゃないの? >>738 「bash拡張がないとシェルスクリプト書けない奴は」とすべきだったね。 >>790 エスケープをミスると即破滅場所しか無いって時点でセキュリティ…? 生SQL以上にWebサービスから呼び出してほしくない言語だと思うけど。
804 :名無しさん@お腹いっぱい。 :2014/09/28(日) 12:38:52.75 .net `COMMANDS` を保守しているコードで残しているのは仕方ないが、 新しく書いたスクリプトで使うのは、老害か勉強不足 Why is $(...) preferred over `...` (backticks)? BashFAQ/082 - Greg's Wiki http://mywiki.wooledge.org/BashFAQ/082 Obsolete and deprecated syntax [Bash Hackers Wiki] http://wiki.bash-hackers.org/scripting/obsolete The Open Group Base Specifications Issue 7, 2013 Edition http://pubs.opengroup.org/onlinepubs/9699919799/ 2.6.3 Command Substitution Command substitution allows the output of a command to be substituted in place of the command name itself. Command substitution shall occur when the command is enclosed as follows: $(command) or (backquoted version): `command`
805 :名無しさん@お腹いっぱい。 :2014/09/28(日) 12:39:26.67 .net 前スレ929-930の引用だが Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix http://books.google.co.jp/books?id=J9WbAgAAQBAJ p156 $(...) を指して、 This style is recommended for all new development,and it is what we use in many of the examples in this book. Learning the Korn Shell, 2nd Edition http://oreilly.com/catalog/korn2/chapter/ch04.html The syntax of command substitution is: $(Unix command) ... (For backwards compatibility, the Korn shell supports the original Bourne shell (and C shell) command substituion notation using backquotes: `…`. However, it is considerably harder to use than $(…), since quoting and nested command substitutions require careful escaping. We don't use the backquotes in any of the programs in this book.)
806 :名無しさん@お腹いっぱい。 :2014/09/28(日) 18:26:43.98 .net shとbashの間をとってkshじゃいかんのか
807 :名無しさん@お腹いっぱい。 :2014/09/28(日) 19:08:57.44 .net いやそこはぜひdashで
808 :名無しさん@お腹いっぱい。 :2014/09/28(日) 22:49:12.11 .net dashやzshだって近々何か見つかるかも知れないよ シェルみたいに枯れたプログラムへの攻撃は、これまでトライするだけ無駄って感じだったのに 今はみんな注目して粗探ししてるだろうからね。
809 :名無しさん@お腹いっぱい。 :2014/09/28(日) 22:53:51.24 .net じゃあ斜め上のpashで
810 :名無しさん@お腹いっぱい。 :2014/09/28(日) 22:59:06.81 .net 日本人が開発したmoshとやらはどうなったの
811 :名無しさん@お腹いっぱい。 :2014/09/29(月) 01:51:01.68 .net 困ったときの ash
812 :名無しさん@お腹いっぱい。 :2014/09/29(月) 05:53:35.79 .net インタラクティブシェルなら、シェル依存の機能をゴリゴリ使う(と言うか、そこもシェル選ぶ基準だからな)けど シェルスクリプトとなると、特定のシェルに依存したコードは普段から書かないなあ。 OSXですら依存チェック用に低機能シェル突っ込んであるよ。
813 :名無しさん@お腹いっぱい。 :2014/09/29(月) 06:33:50.13 .net ブラウザーで ash Javascript PC Emulator http://bellard.org/jslinux/
814 :名無しさん@お腹いっぱい。 :2014/09/29(月) 15:27:10.15 .net 今回のはシェルスクリプトをbashで書いてなくても インタラクティブシェルがbashの時点でまずいケースがあったのでは
815 :名無しさん@お腹いっぱい。 :2014/09/29(月) 16:35:00.08 .net だいぶ状況限定だけどね
816 :名無しさん@お腹いっぱい。 :2014/09/29(月) 23:53:43.95 .net ・デフォでbashが入ってて、あえてシェルを入れ替えてない ・シェルを呼び出している の二点を満たせばアウトってのは「だいぶ状況限定」と言えるのか? シェルを呼び出すのは比較的少ないけど、その程度の希少性しか無いだろ…
817 :名無しさん@お腹いっぱい。 :2014/09/30(火) 00:02:08.73 .net WindowsServerの安全性が証明されたわけですね。
818 :名無しさん@お腹いっぱい。 :2014/09/30(火) 00:05:02.56 .net >>816 それ>>814 の話じゃなくね。
819 :名無しさん@お腹いっぱい。 :2014/09/30(火) 00:07:00.15 .net >>816 それだけでだいぶ状況限定だろ その程度の希少性って何だよ
820 :名無しさん@お腹いっぱい。 :2014/09/30(火) 00:29:21.78 .net >>816 は /bin/sh が bash になってるときの話。 >>814 はそうじゃないときの話。
821 :名無しさん@お腹いっぱい。 :2014/09/30(火) 01:29:40.97 .net >>816 さくらVPSのcentos6.5って、sh -> bash だったような。顧客にはアップデートさせたが、デフォルトかは知らない。 CGIって、プロセスを起動して環境変数を設定する仕組みでしょ。#!/usr/bin/perl とか読み取って、perlにスクリプト渡すのって、shの仕事だったりしないの?
822 :名無しさん@お腹いっぱい。 :2014/09/30(火) 01:45:36.35 .net #!を読むのはOSのローダーの仕事だな。
823 :名無しさん@お腹いっぱい。 :2014/09/30(火) 02:30:42.63 .net そっか、じゃなかったら #!/bin/sh って書く必要ないか。
824 :名無しさん@お腹いっぱい。 :2014/09/30(火) 03:39:32.38 .net OSのローダーってカーネルより前段のIPLのこと指してしまうだろが。
825 :名無しさん@お腹いっぱい。 :2014/09/30(火) 12:28:00.81 .net http://en.wikipedia.org/wiki/Shellshock_%28software_bug%29 どんどん増えていくな
826 :名無しさん@お腹いっぱい。 :2014/09/30(火) 17:08:06.21 .net >>824 底辺PGはelfローダーとかPEローダーとか聞いた事はないかな?
827 :名無しさん@お腹いっぱい。 :2014/09/30(火) 18:55:49.47 .net bashにしか効かないのにシェル全部が悪いみたいな扱いなのは気に入らないw
828 :名無しさん@お腹いっぱい。 :2014/09/30(火) 19:00:11.86 .net そんな扱いするやついないだろ
829 :名無しさん@お腹いっぱい。 :2014/09/30(火) 19:01:36.70 .net やつじゃなくて世間の評判とかニュースのことでは?
830 :名無しさん@お腹いっぱい。 :2014/09/30(火) 19:34:52.47 .net たとえばどれ?
831 :名無しさん@お腹いっぱい。 :2014/09/30(火) 19:35:14.69 .net shellshockって名前が悪いな bashshockって名前に解明すべき
832 :名無しさん@お腹いっぱい。 :2014/09/30(火) 19:58:05.01 .net bashockって三国志に出てきそうじゃね?w
833 :名無しさん@お腹いっぱい。 :2014/09/30(火) 20:07:01.42 .net 泣いてbashockを斬る
834 :名無しさん@お腹いっぱい。 :2014/09/30(火) 21:50:06.35 .net bashdoorって別名もあるみたいよ
835 :名無しさん@お腹いっぱい。 :2014/09/30(火) 21:59:54.72 .net >>834 ちょっと上手いと思ってしまったのが悔しい
836 :名無しさん@お腹いっぱい。 :2014/10/04(土) 22:40:23.88 .net いや上手いだろ
837 :名無しさん@お腹いっぱい。 :2014/10/05(日) 04:09:52.86 .net 上手くない!
838 :名無しさん@お腹いっぱい。 :2014/10/05(日) 07:06:09.86 .net やっと意味がわかった
839 :名無しさん@お腹いっぱい。 :2014/10/06(月) 13:13:12.13 .net 流石です、お兄様
840 :名無しさん@お腹いっぱい。 :2014/10/06(月) 13:24:30.27 .net りゅ…流石?
841 :名無しさん@お腹いっぱい。 :2014/10/06(月) 13:45:40.58 .net ながれいし
842 :名無しさん@お腹いっぱい。 :2014/10/06(月) 18:52:30.59 .net さすおに!
843 :名無しさん@お腹いっぱい。 :2014/10/07(火) 01:13:41.26 .net 全然意味が分からない俺をどうにかしてくれ
844 :名無しさん@お腹いっぱい。 :2014/10/07(火) 01:48:16.37 .net どれがわからないの? >>839 と>>842 は同じネタだよ。
845 :名無しさん@お腹いっぱい。 :2014/10/07(火) 02:29:50.71 .net こんなんわからなくていいよ。
846 :名無しさん@お腹いっぱい。 :2014/10/07(火) 02:32:19.27 .net シェルスクリプトでやたら大きなプログラム書くことがそもそもおかしい
847 :名無しさん@お腹いっぱい。 :2014/10/07(火) 03:00:30.04 .net ていうかアレをネタに言うなら藤林お姉さまと言うべきだろうに…ニワカ共が
848 :名無しさん@お腹いっぱい。 :2014/10/07(火) 07:45:37.09 .net 中小企業とかがやってる内輪の勉強会の発表資料を見てると ちょくちょくアニメネタが入ってて痛々しい
849 :名無しさん@お腹いっぱい。 :2014/10/07(火) 13:12:29.38 .net お偉いさんの資料には、昔ゲイツ今ジョブズが入ってるよ、 大きいところも小さいところも
850 :名無しさん@お腹いっぱい。 :2014/10/07(火) 15:04:31.51 .net 里奈ちゃんと楠夫とか なんだっけブサイクのオバサンなんかwnn系でいたよね よっちゃんとか、さっちゃんとかいうの
851 :名無しさん@お腹いっぱい。 :2014/10/07(火) 15:17:41.74 .net 思い出した。 とこちゃんだ。
852 :名無しさん@お腹いっぱい。 :2014/10/07(火) 17:14:35.54 .net bash「ひゃん!」
853 :名無しさん@お腹いっぱい。 :2014/10/08(水) 12:48:48.66 .net 何の事かと調べてみたら、アニメか このノリは、俺には受け付けないわー 魔法科高校の劣等生 BSDのプリンセス・マジカルとこちゃん
854 :名無しさん@お腹いっぱい。 :2014/10/10(金) 08:42:55.07 .net >>853 マンガってなんおことかと思ったらw 知らなかった。 あのさ、大昔のUNIX業界にはよしだともこ氏というのが 物書きとしていたんだよ http://www.notredame.ac.jp/~tyoshida/ で、その人の通称がとこちゃんだったと思う。 おそらくだがBSD系のマンガの命名の元は実在の とこちゃんから創られたんだと思うよ。
855 :名無しさん@お腹いっぱい。 :2014/10/10(金) 11:52:25.98 .net 透子?
856 :名無しさん@お腹いっぱい。 :2014/10/10(金) 12:18:32.53 .net 爆死アニメ?
857 :名無しさん@お腹いっぱい。 :2014/10/10(金) 14:53:30.89 .net ll命令を発行してファイルのプロパティーをタイプした時、一部のファイルの時刻が2014とかいう西暦?に化けます。バグでしょうか?
858 :名無しさん@お腹いっぱい。 :2014/10/10(金) 15:57:21.35 .net >>857 2014年のファイルでタイムスタンプと年度が混在してるなら バグだね。 試しに時計を2013に改竄したり2015に改竄して表示させたら?
859 :名無しさん@お腹いっぱい。 :2014/10/10(金) 16:20:23.29 .net すみませんが詳しい方のみ回答をお願いします
860 :名無しさん@お腹いっぱい。 :2014/10/10(金) 16:23:18.40 .net いいえ、-Tでも
861 :名無しさん@お腹いっぱい。 :2014/10/10(金) 16:41:16.15 .net >>858 釣られんな
862 :名無しさん@お腹いっぱい。 :2014/10/10(金) 16:54:47.85 .net >>858 2014年でも2014の表示になるファイルは普通にあるぞ
863 :名無しさん@お腹いっぱい。 :2014/10/10(金) 17:05:34.93 .net ls(1)より 最終修正時刻が 6 箇月よりも前 で ある場合には、POSIX ロケールでは「月・日・年」の形式で 表示されます。LC_TIME ロケールカテゴリが POSIX ロ ケー ルに設定されていない場合には、異なった形式で時間フィー ルドが表示されます。最終修正時刻が 6 箇月以内である 場 合には、「月・日・時」の形式で表示されます。
864 :名無しさん@お腹いっぱい。 :2014/10/10(金) 18:38:32.74 .net 次の釣りレス 「ls(1)なんて命令なんてありません。発行したのはllです」
865 :名無しさん@お腹いっぱい。 :2014/10/10(金) 18:41:39.57 .net $ ls(1) bash: 期待してない token `(' のあたりにシンタックスエラー $ これは脆弱性?
866 :名無しさん@お腹いっぱい。 :2014/10/10(金) 18:53:41.00 .net 任意のコードを実行したりできる訳じゃないから ただのバグやね
867 :名無しさん@お腹いっぱい。 :2014/10/10(金) 19:19:00.49 .net $ ls(1) bash: Erreur de syntaxe pres du symbole inattendu << 1 >>
868 :名無しさん@お腹いっぱい。 :2014/10/11(土) 00:32:05.86 .net >>817 Windows版のbashでも再現した
869 :名無しさん@お腹いっぱい。 :2014/10/11(土) 02:48:51.91 .net >>868 ゴミを持ってきて脆弱性だと言われても、 お前の脳がバグってるだろうとしか。
870 :名無しさん@お腹いっぱい。 :2014/10/11(土) 07:19:59.32 .net >>869 bashを別のものに交換できるLinuxServerは最強ってことですね。 一方OSがいろんなアプリに依存しちゃってるWindowsは…。
871 :名無しさん@お腹いっぱい。 :2014/10/11(土) 09:20:00.73 .net サーバとしての使い勝手とか、必要最小限の構成とか出来ない辺りサーバとしてのWindowsはダサいけど、 アプリ間の依存をネタにする場合、アプリディレクトリに依存するDLLブチ込めば済むWinの方が優秀じゃね? ブチ込むだけだと駄目どころか、パッケージ管理システム外だとコンパイルからやれが大半ってのはダサい
872 :名無しさん@お腹いっぱい。 :2014/10/11(土) 10:28:27.54 .net cut -d: -f1 これをシェル内部コマンドだけで実現できませんか?
873 :名無しさん@お腹いっぱい。 :2014/10/11(土) 10:43:37.86 .net >>873 $ line=root:x:0:0:root:/root:/bin/bash ; echo ${line%%:*} root
874 :名無しさん@お腹いっぱい。 :2014/10/11(土) 10:46:24.04 .net こんな感じかな $ ( IFS=':';while read f; do set -- $f;echo $1; done < /etc/passwd )
875 :名無しさん@お腹いっぱい。 :2014/10/11(土) 11:13:49.96 .net >>874 setは要らんやろ (IFS=':';while read a b; do echo "$a"; done < /etc/passwd)
876 :名無しさん@お腹いっぱい。 :2014/10/11(土) 11:41:13.45 .net なるほど、それなら配列を使えば、、 $ ( IFS=':';while read -a arr; do echo ${arr[0]}; done < /etc/passwd ) 配列変数使えるのってbashとzshくらい? kshでも使えたかな…
877 :名無しさん@お腹いっぱい。 :2014/10/11(土) 13:23:16.96 .net bash禁止
878 :名無しさん@お腹いっぱい。 :2014/10/11(土) 13:24:16.47 .net >>872 は改変コピペ http://hayabusa6.2ch.net/test/read.cgi/linux/1411579434/319
879 :名無しさん@お腹いっぱい。 :2014/10/11(土) 17:11:40.07 .net あるファイルAに改行なしで500Mbくらいテキストが詰まっている 別のファイルBに、下記のように「開始位置.長さ」で記述がなされているとする 1,10 11,50 61,2 ファイルAをファイルBの記述に従って改行したい つまり上記の場合、「1文字目から10文字+改行」「11文字目から50文字+改行」「61文字目から2文字+改行」 というようにファイルAを3行に改行する ファイルAには半角文字と全角文字が混同している ファイルBの記述は「開始位置,長さ」だが、必ず1文字目から始まり、終了位置+1を次の開始位置とみなしてよい ちょっとこんな感じの処理を作ることになったんだけど、効率いいやり方ないかな 文字コードは都合のいいものに勝手に変換してくれ
880 :名無しさん@お腹いっぱい。 :2014/10/11(土) 17:23:08.97 .net ヒントの一部にしかなってないけど、 bashだと全角文字でも一文字分をちゃんと認識してるんだな (LANGまたはLC_CTYPE設定必須) $ a=ABCあいうえお $ echo ${a:1} BCあいうえお $ echo ${a:2} Cあいうえお $ echo ${a:3} あいうえお $ echo ${a:4} いうえお $ echo ${a:5} うえお
881 :名無しさん@お腹いっぱい。 :2014/10/11(土) 17:48:44.04 .net 5文字読んで改行、続いて3文字読んで改行、の場合、 $ echo AあBいCうDえEお | (read -n 5 w; echo "$w"; read -n 3 w; echo "$w") AあBいC うDえ このread -nの引数の数字をファイルBを読みながら与えてループすればいいか?
882 :名無しさん@お腹いっぱい。 :2014/10/11(土) 17:58:53.89 .net >>879 $ cat <( echo -ne '1,3\n4,10\n') 1,3 4,10 $ cat <( echo -ne '1,3\n4,10\n')|tr , -|while read;do cut -c $REPLY <( echo 'abcdefghijklmnopqr');done abc defghij
883 :名無しさん@お腹いっぱい。 :2014/10/11(土) 18:03:38.03 .net 文字コードはUS-ASCIIで。
884 :名無しさん@お腹いっぱい。 :2014/10/12(日) 00:12:12.43 .net >>873
885 :名無しさん@お腹いっぱい。 :2014/10/12(日) 22:43:37.00 .net なるほどbash任せにするのか sedとかawkとか使う考えしかなかったから全角半角大丈夫かなとか思ってたけど いけそうだ、会社いったら試してみる ありがとう
886 :名無しさん@お腹いっぱい。 :2014/10/13(月) 20:35:25.52 .net >>869 >>870 どっちも間違い。 今回の場合、Windowsで走らせたbashはUnix版をビルドしたもの。 Linuxは/bin/shがbashなので交換できない。 ポータブルじゃないBASH依存のスクリプトが少数あるため・・
887 :名無しさん@お腹いっぱい。 :2014/10/13(月) 21:10:01.70 .net Ubuntu や Debian は bash じゃなくて dash だけどね
888 :名無しさん@お腹いっぱい。 :2014/10/13(月) 21:17:40.62 .net >>886 は間違い。
889 :名無しさん@お腹いっぱい。 :2014/10/13(月) 21:36:55.99 .net >>886 だからごみを持ってきてWindowsの脆弱性というのはおかしいだろ。 お前日本語大丈夫か?
890 :名無しさん@お腹いっぱい。 :2014/10/13(月) 23:13:47.75 .net >>886 だからLinuxの脆弱性というのはおかしいだろ。 お前日本語大丈夫か?
891 :名無しさん@お腹いっぱい。 :2014/10/13(月) 23:21:54.07 .net >>890 誰がそんな話をした? 本当に日本語がだめなやつだなお前。
892 :名無しさん@お腹いっぱい。 :2014/10/13(月) 23:51:51.47 .net http://thesecurityfactory.be/command-injection-windows.html
893 :名無しさん@お腹いっぱい。 :2014/10/14(火) 00:38:43.14 .net >>890 鸚鵡返ししかできない池沼だったか
894 :名無しさん@お腹いっぱい。 :2014/10/14(火) 08:50:24.90 .net >>886 rootさんに頼んで/bin/shからリンクされてるbashをバグのないバージョンにアップデートしてもらえ Windowsで再現するのはWindowsに持ってきたbashがバグ入りのゴミバージョンって事だから差し替えろ >>870 はイミフだけどお前はもっとイミフだ。 >>890 バグ入りbashがデフォで入ってるLinuxディストリビューションについては、 そのLinux"ディストリビューション"の脆弱性としてカウントして良い話だと思うぞ。
895 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:37:07.26 .net 2つのファイルをクリアしたいのですが、一回で処理したいです 調べたところcp /dev/null, xargs,lsを使うと出来そうなのですが、どうしたらよいでしょうか ls foo hoge | xargs cp /dev/nullではだめでした
896 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:38:29.88 .net >>895 > foo > hoge
897 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:43:03.13 .net ふつー、 for f in *; do > "$f"; done だけど、これじゃ1回じゃないから嫌という意味か?
898 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:51:42.23 .net >>895 どーしても xargs でやりたければこんな感じで $ ls -1 foo bar | xargs -l cp /dev/null
899 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:56:15.17 .net fooとbarをアトミカルにクリアしたいのです。fooだけクリアされた瞬間を作りたくない。
900 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:58:19.27 .net >>898 ありがとうございました。解決しました。forを使っても良かったのですが、896さんベストアンサーでってここ知恵袋ちゃうで(^o^)
901 :名無しさん@お腹いっぱい。 :2014/10/18(土) 16:59:55.17 .net >>900 cpを2回呼んでるからアトミックじゃないよ
902 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:02:28.03 .net もう解決した様だけど、truncate ってコマンドがありまして… $ truncate -s 0 foo bar
903 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:05:40.32 .net >>902 POSIX互換ですか?
904 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:09:15.28 .net ポジックス(笑)は気にしない。*BSDとLinuxでtruncate(1)あるから、Solaris以外ハム問題。
905 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:14:11.82 .net >>904 ありがとうございます(^o^) 最近POSIX互換にとらわれていて、困っております seqコマンドもPOSIX互換ではないと聞いて、数え上げの方法で、よい方法がないか困っているのですが、yesコマンドを使ってできないでしょうか(>_<)
906 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:16:44.58 .net yes '' | cat -n でできるけど、そんなことするよりシェルで {1..100}とかの方がいい。
907 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:19:17.65 .net おいおい、yesコマンドもPOSIXちゃうやろ、本末転倒。
908 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:20:43.80 .net yesもPOSIX互換ではないのか(>_<) 失礼いたしました
909 :名無しさん@お腹いっぱい。 :2014/10/18(土) 17:59:49.26 .net そもそもアトミックなんて不可能だろ
910 :名無しさん@お腹いっぱい。 :2014/10/18(土) 18:55:50.27 .net $ strace truncate -s0 hoge fuga open("hoge", O_WRONLY|O_CREAT|O_NONBLOCK, 0666) = 3 ftruncate(3, 0) = 0 close(3) = 0 open("fuga", O_WRONLY|O_CREAT|O_NONBLOCK, 0666) = 3 ftruncate(3, 0) = 0 close(3) 全然アトミックじゃないな。 というか何でそんなのをアトミックにやりたいと思ったのか
911 :名無しさん@お腹いっぱい。 :2014/10/18(土) 19:18:39.10 .net >>895 と >>899 って別人だよね?
912 :名無しさん@お腹いっぱい。 :2014/10/19(日) 13:13:52.46 .net ここで質問してよいのでしょうか? シェルで配列が使えるのってbashだけですか? よくある以下のようなスペース区切りを配列に入れたいのです。 fields=($in) for field in "${fields[@]}"; do いまshで作ってるのでshのままでやれればそれがいいのですが bashも致し方なしと言う状態です。
913 :名無しさん@お腹いっぱい。 :2014/10/19(日) 13:16:37.09 .net kshでも使えるよ
914 :名無しさん@お腹いっぱい。 :2014/10/19(日) 13:39:11.60 .net なぜshには配列が無いか? 配列が無くても十分だからだ。
915 :名無しさん@お腹いっぱい。 :2014/10/19(日) 13:40:15.79 .net sh でやる場合、 set $in for field in "$@"; do で行けるよ
916 :名無しさん@お腹いっぱい。 :2014/10/19(日) 13:41:50.04 .net cshでも使える shでもそういう感じのforは出来るが
917 :名無しさん@お腹いっぱい。 :2014/10/19(日) 14:33:24.19 .net >>915 できました!ありがとうごうざいます 作ってるシェルスクリプトの使い勝手が超よくなりました! 皆様もありがとうございました
918 :名無しさん@お腹いっぱい。 :2014/10/19(日) 17:09:56.92 .net 実は for f; do でもいい
919 :名無しさん@お腹いっぱい。 :2014/10/19(日) 18:35:09.12 .net うおほんとだ 知らんかった…
920 :名無しさん@お腹いっぱい。 :2014/10/20(月) 12:59:33.77 .net 作ったシェルスクリプトって実行権限つけてる? 自分はつけてなくてsh 〜とかで実行してる 理由は間違って実行したくないからなんだけどさ
921 :名無しさん@お腹いっぱい。 :2014/10/20(月) 13:09:26.67 .net それならそれでいいんじゃね
922 :名無しさん@お腹いっぱい。 :2014/10/20(月) 16:58:41.11 .net 実行権限つけて~/binとかにおいてる。 普通にタブ打って補完してほしいし。 自分で作ったスクリプトで気をつけてるのは 使い方の説明コメントとかヘルプオプションのメッセージとかを しっかり書くことかな。 詳しい使い方とかしばらくすると忘れちゃうんだよね。 ぐぐっても出てこないしさ。
923 :名無しさん@お腹いっぱい。 :2014/10/20(月) 17:25:26.41 .net 同じく エディタのバッファ上や端末でのワンライナーではなく ファイルに保存するほどものってのは使いまわすってことだからね 頻度が少ないものは補完の邪魔だからprefixつけてる
924 :名無しさん@お腹いっぱい。 :2014/10/21(火) 00:55:19.13 .net >>920 そういう人は通常のコマンドも撃てないんじゃないの?w 標準コマンドをなぜ間違わないかとか、間違いを防ぐaliasや引数は どうすればいいかを考えれば良くないか? (y or n)を利用するだけでも違うと思うが
925 :名無しさん@お腹いっぱい。 :2014/10/21(火) 02:00:54.31 .net ほとんどのコマンドは履歴から補間して実行しちゃうな 俺にとって sh 〜は無駄なあがき
926 :名無しさん@お腹いっぱい。 :2014/10/21(火) 03:02:37.98 .net >>922 自作を~/binに置くのはなんか気持ち悪いな… そんな運用のシステムを引き継ぎたくない
927 :名無しさん@お腹いっぱい。 :2014/10/21(火) 04:43:14.50 .net >>926 そんなケースはめったにないから気にしなくていいよ 自分用のニッチなもの ~/bin 使いまわせるならお好きに昇格させればいい /usr/local/bin /usr/bin /bin
928 :名無しさん@お腹いっぱい。 :2014/10/21(火) 08:50:28.59 .net つかスクリプトなんてhomeに一枠切っておけば済むのに
929 :名無しさん@お腹いっぱい。 :2014/10/21(火) 09:04:42.35 .net みんなで使ってるサーバなら/usr/local使えないし ~/binに入れるのは普通だと思うけど というかどこに入れればいいねん
930 :名無しさん@お腹いっぱい。 :2014/10/21(火) 09:16:20.91 .net 普通というか、~, /var/tmp, /tmpの内のどれかの中にしか置けなくね?w
931 :名無しさん@お腹いっぱい。 :2014/10/21(火) 09:51:26.07 .net >>930 root権限ないの? みんなで使うものなら管理者に言って置かせてもらえばいいじゃん。
932 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:01:32.78 .net >>931 なんでみんなで使う前提なの?
933 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:15:54.97 .net >>932 前提じゃないよ。 もしみんなで使うものなら、って話。
934 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:26:40.88 .net >>920 はみんなが使うスクリプトじゃなくて 自分しか使わない俺俺スクリプトのことを言ってるような気がするけど みんなが使うものなら当然実行権限付けるだろうし
935 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:29:04.23 .net みんなが使うものなら/usr/localに置くし自分しか使わないものなら~/binとか好きな場所に置く ようは>>926 がちょっとずれてるんじゃねってこと
936 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:29:39.28 .net UNIXサーバーの管理をしています。 ユーザーはスクリプトの実行は禁止ですが、 最近、ユーザーでも自分のホームフォルダーにスクリプトをコピーし、 X権限をすることによってスクリプトが実行できてしまうことが判明しました。 これはOSのセキュリティーボールではないのでしょうか? ユーザーのフォルダーではたとえX権限がされていても 実行できないようにする方法はありますか? 必要ならカーネルにバッチを当てる方法も、やもうえません。
937 :名無しさん@お腹いっぱい。 :2014/10/21(火) 10:44:48.62 .net >>934 > >>920 はみんなが使うスクリプトじゃなくて > 自分しか使わない俺俺スクリプトのことを言ってるような気がするけど その辺は明記されてないね。 >>935 >>926 は「みんなで使うものが~/binに置いてある」と読み取ったんだろう。
938 :名無しさん@お腹いっぱい。 :2014/10/21(火) 11:03:56.75 .net >>936 ネタだと思うけど、いちおう。 /homeを別パーティションにして、マウントオプションにnoexecを追加する。 もしくは、rbash->bash、rzsh->zshみたいなsymlinkを作って ログインシェルをrbash/rzshに変更する。 いずれにせよsh hoge.shみたいにして実行されるのを防ぐことはできないが。
939 :名無しさん@お腹いっぱい。 :2014/10/21(火) 11:04:48.25 .net >>938 いつもの改変コピペ君だろ かまっちゃいかん
940 :名無しさん@お腹いっぱい。 :2014/10/21(火) 11:20:53.71 .net ディレクトリの考えは人それぞれだからなぁ ただスクリプトのように本来のOSに無関係な 作業プログラムは全員が使うなら全員共通の home域や個人で使うhome枠とかmnt枠に切るね。 システムダウンの代替やOSの総更新というか 障害復旧で関わらない領域やディスクやパーテーションに 作業用というかユーザや管理者がしたためたツールは置いておきたい。
941 :名無しさん@お腹いっぱい。 :2014/10/21(火) 14:12:34.98 .net 使えるユーザを限定しようとするときはグループを分ける必要が出てきて やっぱりroot権限がいるからrootの中の人にどこまで任せるかということになるか
942 :名無しさん@お腹いっぱい。 :2014/10/21(火) 14:17:24.25 .net >>920 は納得したのか?
943 :924 :2014/10/21(火) 20:08:57.18 .net みなさんごめんなさい。 /binと間違った。 >>926 で~/binとコピペして目に見えているはずなのに /binと間違った。ビール飲んでたせいです
944 :名無しさん@お腹いっぱい。 :2014/10/21(火) 22:32:58.37 .net >>920 特定のディレクトリでしか実行しないものは、 そこに置いて、cd してから sh 〜 で実行してる。 どこでも使うものは、実行権限つけて /usr/*/bin/ とかに入れて 他のコマンドと同じように使ってる。 普段使わないものは ~/script/ 以下にサブディレクトリ作って置いてあって PATH は通してない。
945 :名無しさん@お腹いっぱい。 :2014/10/21(火) 22:35:08.54 .net >>934 >>937 間違って実行したら困るような品質のスクリプトをみんなで使っちゃ駄目だわな。 >>943 「>>926 ユーザアカウントごと引き継ぐような運用が前提なの?」 とか思ってたけどそういうことか。納得。
946 :名無しさん@お腹いっぱい。 :2014/10/22(水) 08:45:07.37 .net ruby gemだと~/.gem/ruby/2.0/bin とかに入るし、pythonだと ~/.local/bin に入ったりする。 個人的には~/bin よりむずむずする。
947 :名無しさん@お腹いっぱい。 :2014/10/23(木) 01:41:08.25 .net ~/.gemは他を汚さないって事で別に良いと思うけど、 ~/.local/binはなんでそうなったんだ…
948 :名無しさん@お腹いっぱい。 :2014/10/23(木) 03:18:36.37 .net 例えば awk -F: '{print $1}' /etc/passwd の結果を users=(root daemon bin ...) のようにbashの配列にまとめたいのですが、どのように書くのがシンプルなのでしょうか? #!/bin/bash users=() while read user; do users=("${users[@]}" "$user") done < <(awk -F: '{print $1}' /etc/passwd) declare -p users もっと簡単に書けるのでは? と思っています。
949 :名無しさん@お腹いっぱい。 :2014/10/23(木) 04:31:23.09 .net read -a
950 :名無しさん@お腹いっぱい。 :2014/10/23(木) 04:54:32.57 .net >>948 内部コマンドのみで書ける users=(`while IFS=: read u x; do echo $u;done < /etc/passwd`)
951 :名無しさん@お腹いっぱい。 :2014/10/23(木) 05:32:28.62 .net >>950 ()で囲うだけで配列にできるのですね。 results=("$(コマンド)") ダブルクォーテーションで囲えば空白を含む場合も問題ないですね。 とてもシンプルになりました。 ありがとうございました。
952 :名無しさん@お腹いっぱい。 :2014/10/23(木) 05:50:14.41 .net >>951 > results=("$(コマンド)") > ダブルクォーテーションで囲えば空白を含む場合も問題ないですね。 勘違いしていました。 これだと配列の要素が1つだけでだめですね。
953 :名無しさん@お腹いっぱい。 :2014/10/23(木) 06:23:00.43 .net あるコマンドの出力結果の各行が要素となる配列を作りたい。 出力行にスペースを含まない場合は >>950 のように()で囲めばいい。 スペースを含む場合は >>948 のようにやる必要がある。 ということみたいですかね。 たいへんお騒がせしました。
954 :名無しさん@お腹いっぱい。 :2014/10/23(木) 06:38:12.59 .net >>953 >>948 のようにやる必要はない。 改行を IFS として >>951 みたいにやればいいだけ
955 :名無しさん@お腹いっぱい。 :2014/10/23(木) 06:41:57.64 .net >>953 IFS=' ' list=(`ls -l`) ↑ これでls -l の各行ごとに配列要素に入る。IFS変更してることに注意。
956 :名無しさん@お腹いっぱい。 :2014/10/23(木) 06:52:10.33 .net >>954 ,953 なるほど。 処理が終わったらIFSを元に戻せばいいですし、これでいけますね。 シェルがおもしろくなってきましたw ありがとうございました。
957 :名無しさん@お腹いっぱい。 :2014/10/24(金) 09:46:02.92 .net bashの配列もいいけど、>>914 ,913,916が無かったかの様に進んでいくのが残念なので一言 もともと for 文も変数をインクリメントしてループする様には出来ていない for in (foreach) 文だし、 シェルスクリプトでは、改行区切りで配列のようにデータを扱うのが素直なやり方だと思うのだが、どうだろうか? #!/bin/sh LF=' ' exec 3<&0 0< input.txt while IFS=$LF read line do echo "$line" done exec 0<&3 3<&- IFS_BKUP=$IFS IFS=$LF for line in $( ls -l ) do echo "$line" done IFS=$IFS_BKUP
958 :名無しさん@お腹いっぱい。 :2014/10/24(金) 13:01:25.31 .net よくわからんが俺なら、cut -d: -f1 /etc/passwd するね
959 :名無しさん@お腹いっぱい。 :2014/10/24(金) 13:54:52.89 .net お前は何を言ってるんだw
960 :名無しさん@お腹いっぱい。 :2014/10/24(金) 14:24:22.48 .net >>958 直前までデータのまとめ方の話だったけど、その話では無かったつもりだった 紛らわしく書いてしまったみたいだ 変数に入れるなり、ファイルにするなりしても、大抵は配列は特に必要なく、 改行区切りのデータのまま扱うのがシェルスクリプトらしいかと、い痛かった #!/bin/sh exec < /etc/passwd users=$( #cut -d: -f1 while IFS=: read user trash do echo "$user" done ) IFS=' ' for user in $users do echo "$user" done
961 :名無しさん@お腹いっぱい。 :2014/10/30(木) 00:56:19.87 .net ミドルウェアのインストーラ(シェルスクリプト内)に uuencode/uudecodeで巨大なファイルを埋め込んでるのがあったんだが スクリプト内にファイルを仕込むことで、何か特別な意味あったりするの? メモリが足りなくなって、インストーラがコケまくるし 再実行するたびにデコードして展開するから胸糞悪かった
962 :名無しさん@お腹いっぱい。 :2014/10/30(木) 03:42:14.29 .net シェルスクリプトで全部配布出来る、とか。
963 :名無しさん@お腹いっぱい。 :2014/10/30(木) 05:28:34.84 .net Windowsっぽくしたかったんじゃね。
964 :名無しさん@お腹いっぱい。 :2014/10/30(木) 05:39:51.98 .net uuencodeなだけいいじゃないか。 javaのインストーラなんて直接バイナリ埋め込んでるし。 シェルスクリプトをexitで終了すればexit以降の部分がバイナリでもOKという技。 tail -n +行 でバイナリ切り出して解凍、みたいな。
965 :名無しさん@お腹いっぱい。 :2014/10/30(木) 13:37:12.47 .net >>961 実行するだけでインストールできるから楽でしょ この間インストールしたjava(jdk)もその形式だったし
966 :名無しさん@お腹いっぱい。 :2014/11/09(日) 18:06:16.96 .net もう10日書き込みなしか でもみんな見てはいるんだろうなと予想
967 :名無しさん@お腹いっぱい。 :2014/11/09(日) 18:50:24.89 .net では、以下のより善い最適な正解を考えよう http://hello.2ch.net/test/read.cgi/morningcoffee/1408885443/924 > 924 名前:名無し募集中。。。@転載は禁止 []: 2014/11/06(木) 22:56:57.47 0 > いくつもtar.gzがあるときにどのtar.gzにMakefileが入ってるか探そうと思ったらこんな感じ? > tar -xzf *.tar.gz > find ./ -name Makefile > でもこれだとフォルダ名が被った時に上書きされてしまう・・・もっとうまいシェルあるかな? > 927 名前:名無し募集中。。。@転載は禁止 []: 2014/11/06(木) 23:33:24.12 0 > bash以外で使えるかは知らないけど > find -name "*.tar.gz" | while read ; do (echo " -- $REPLY ---" ; tar -tf "$REPLY" | grep Makefile) done > 928 名前:名無し募集中。。。@転載は禁止 []: 2014/11/06(木) 23:58:28.48 0 > shだとこんな感じで動きそう > find . -name "*.tar.gz" | while read REPLY; do (echo " -- $REPLY ---" ; tar -tf "$REPLY" | grep Makefile) done
968 :名無しさん@お腹いっぱい。 :2014/11/09(日) 18:59:36.73 .net >>967 zgrep -l Makefile *.tar.gz で一発。
969 :名無しさん@お腹いっぱい。 :2014/11/09(日) 21:01:40.56 .net >>966 専ブラで見てるから書き込みが無いと見ないんだな・・・ 正直なところココに書き込むか他の質問スレに書き込むか迷って 他に書き込むことはある
970 :名無しさん@お腹いっぱい。 :2014/11/09(日) 21:22:13.32 .net >>968 それではサブディレクトリ以下の*.tar.gzを検索しない
971 :名無しさん@お腹いっぱい。 :2014/11/09(日) 22:38:09.71 .net zgrep -l Makefile **/*.tar.gz
972 :名無しさん@お腹いっぱい。 :2014/11/09(日) 22:43:36.52 .net >>971 カレントディレクロリの*.tar.gzを検索しなくなった
973 :名無しさん@お腹いっぱい。 :2014/11/09(日) 23:58:58.66 .net ロリ…
974 :名無しさん@お腹いっぱい。 :2014/11/10(月) 00:04:45.26 .net ディレクトロリ
975 :名無しさん@お腹いっぱい。 :2014/11/10(月) 00:22:06.71 .net いくつもあるとしか言ってないから、そういう場合は大抵、ひとつのディレクトリで十分だと思うな。
976 :名無しさん@お腹いっぱい。 :2014/11/10(月) 00:49:17.58 .net まあ何にせよ、現状は find . -name "*.tar.gz" | while read REPLY; do (echo " -- $REPLY ---" ; tar -tf "$REPLY" | grep Makefile) done 最強だな。 サブディレクトリの*.tar.gz全ても、*.tar.gzの中のリストも 表示される
977 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:11:31.68 .net >>972 はい、ごめんなさい >>976 最強? 並列で動いてるようにすら見えないのだが
978 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:20:38.07 .net 横から見てたけど、結果出すのが強いと思うよ
979 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:25:12.67 .net >>976 ・ファイル名に改行コードが入っていたら? ・"〜.tar.gz" っていう名前のディレクトリがあったら? ・whileの中は { echo ...; tar -tf ...; } でいいんじゃ?(わざわざサブシェルにする理由がワカらん)
980 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:26:05.43 .net >>978 言い出しっぺの法則って事で 速度度外視でいいからサンプル生成コードを出してくれ
981 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:36:13.41 .net >>980 俺は「結果出すのが強い」と事実を書いただけだが、何の「言い出しっぺ」なの?
982 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:39:33.45 .net $ find . -type f -readable -name "*.tar.gz" -print0 | xargs -0 -I'{}' /bin/bash -c 'echo " -- {} ---"; tar -tf "{}" | grep Makefile'
983 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:53:14.13 .net >>982 横から見てた別人だけど、なるほどそういう方法もあるんですね。 ちなみに>>976 に対するアドバンテージってナニですか? >>977 のいう並列動作ですか?
984 :名無しさん@お腹いっぱい。 :2014/11/10(月) 01:58:22.51 .net >>976 readは指定しなければREPLYに入れるから冗長。
985 :名無しさん@お腹いっぱい。 :2014/11/10(月) 02:03:07.35 .net >>983 >・ファイル名に改行コードが入っていたら? >・"〜.tar.gz" っていう名前のディレクトリがあったら? これ↑に対処。並列動作させる場合は xargs に -P0 を付けるとよろし
986 :名無しさん@お腹いっぱい。 :2014/11/10(月) 02:19:56.10 .net >>985 なるほど。その対策ですか。 -P0 付けたら表示がバラバラになってしまいますね。
987 :名無しさん@お腹いっぱい。 :2014/11/10(月) 02:28:00.33 .net ファイルの順序はバラバラになるけど、Makefileが含まれているかどうか が判れば良いはずなので問題はないと思う。ファイルの表示順序を維持 したい場合は GNU parallel を使えば良い。オプションはxargsの上位互換 になっている
988 :名無しさん@お腹いっぱい。 :2014/11/10(月) 02:40:36.58 .net GNU Parallel 版 $ find -L . -type f -readable -name "*.tar.gz" -print0 | sort -z | parallel -P 0 -0 -k 'echo " -- {} ---"; tar -tf "{}" 2>/dev/null | grep Makefile' "-k" オプションが入力順序と出力順序を一致させる(keep order) それと、find に "-L" オプションを付けて、tar のエラーメッセージを捨てる様にした
989 :名無しさん@お腹いっぱい。 :2014/11/10(月) 02:49:17.86 .net >>981 「結果」なるもの定義が 速度?ゴルフ?動けばいいの? などとあいまいで分かりづらかったんだよね。 でも本人さんなら「結果出すのが強い」と明確に判断できるような お題のサンプルぐらいは提示できるひとかなっと思ったんだ なんだかごめん。
990 :名無しさん@お腹いっぱい。 :2014/11/10(月) 05:32:23.44 .net zgrep -lr Makefile . 一発
991 :名無しさん@お腹いっぱい。 :2014/11/10(月) 09:24:03.48 .net /bin/zgrep: -r: option not supported
992 :名無しさん@お腹いっぱい。 :2014/11/10(月) 12:34:39.57 .net >>989 > 「結果」なるもの定義が 普通に流れ読めばわかるだろ
993 :名無しさん@お腹いっぱい。 :2014/11/10(月) 12:54:30.50 .net dump(ufsdump)形式で固めたアーカイブを、 展開せずに tar (tar.gz)形式に変換したいんだが、 何かいい方法ある?
994 :名無しさん@お腹いっぱい。 :2014/11/10(月) 15:03:04.46 .net >>993 さらに上からtarする。
995 :名無しさん@お腹いっぱい。 :2014/11/11(火) 00:56:17.74 .net 次スレ シェルスクリプト総合 その24?2ch.net http://peace.2ch.net/test/read.cgi/unix/1415634843/
996 :名無しさん@お腹いっぱい。 :2014/11/11(火) 08:23:57.90 .net >>995 乙
997 :名無しさん@お腹いっぱい。 :2014/11/11(火) 14:05:29.13 .net 梅がてら最近のケアレスミスを紹介 wgetでサイトのページ取ってきて解析するスクリプト作ってた でもたまに解析に失敗する 試しにsleep入れたらちょっとましになったけどやっぱり失敗することがある 処理時間も考慮する必要があるから無駄に30秒とか入れたくないし・・・ でよく見直したら行末に「&」が付いてて非同期処理になってた 経緯としては標準出力&エラーを/dev/nullに叩き込んでたんだけど いつも使うnohupの処理をそのままパクってきたときに消し忘れてた これがわかるまでwgetってバッファとかメモリからの書き出しに ラグがあるのかと思ってたくらいいいorz
998 :名無しさん@お腹いっぱい。 :2014/11/11(火) 17:12:33.03 .net URLのをクォートせずにコピペしてクエリの&でbgにしてることは、まれによくある。 クエリにコマンドしこまれてたら、セキュリティホールだな。区切り文字となるスペースないから、大したことできないかもだけど。
999 :名無しさん@お腹いっぱい。 :2014/11/11(火) 17:35:57.09 .net >>998 あるあるw ちなみに、特殊文字を含むデータをペーストしようとすると警告してくれる端末エミュレータが あった気がする。TeraTerm だったかなあ? あの機能には助けられた覚えがある。
1000 :名無しさん@お腹いっぱい。 :2014/11/11(火) 18:29:25.62 .net Xの端末は腐ったときに表示した文字をコマンドとしてシェルが実行してしまうことがあるよねw
252 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者