板検索:
シェルスクリプト総合 その23 (1000)
まとめビュー
1
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 17:55:50
シェルスクリプトの総合スレです。
□お約束
・特記なき場合は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
コメント4件


2
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:00:07
すみませんがシェルに詳しい方のみ回答をお願いします

3
名無しさん@お腹いっぱい。[]   投稿日:2014/07/01 18:10:58
・シェルスクリプトのことをシェルってゆーな

4
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:11:47
シャロスクリプトまだー?
コメント1件

5
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:12:25
その22 をそのままコピペしましたが

その16にあったもの
□関連スレ:
□初心者向けリンク:
□入門者向け書籍:
□参考リンク:
□最近のシェルスクリプト本:
□関連書籍と関連リンク:
□人間初心者へのお願い:
□シェルスクリプトでよく使うコマンド:
です。

今、追加案あればどうぞ

6
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:17:49
>4
そんなのないよ

7
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:19:36
>1
>  安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
便利なものはどんどん使う方が頭いいと思うがなぁ。
コメント2件

8
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:21:16
このスレは純正シェル道の求道者達が集う道場スレです。
うかつに部外者が踏み込むとケガをする場合があるのでご注意ください。

9
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:58:07
知らんがな

10
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 18:58:36
忘れてた
>1たて乙

11
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 20:10:01
昨今の*nixなら某かの方法でbashは入手できるよね
純性UNIXはkshを愛してるみたいだけど時代の要請を理解してる
コメント1件

12
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 20:36:19
別にbash限定のシェルスクリプト書いていけないわけではない
恥ずかしながらbashでしか動きません、と注釈付けてあれば
文句いう人は少ない

13
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 20:49:55
なら1行目で最初から解決してるんだね。よかったよかった

14
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 22:04:49
bashをログインシェルにしてる奴の作ったプログラムは全部GPLが感染するよ。

15
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 22:16:40
さあー、盛り上がってきたよ!
じゃんじゃん自分の意見を書いていこう!

ポータブル派保守系、時代はbash派革新系
シェルスクリプトに無理にこだわらない現実派

テンプレの募集もしていますよ
その17、その18で消えたようだから、その16、その17を元に話しましょう

16
名無しさん@お腹いっぱい。[]   投稿日:2014/07/01 22:20:53
ややこしい操作するなら安易にperlでやる派

17
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/01 22:46:24
>11
組み込みとかメモリが足りなかったら入れられないんじゃないかな。
PCでも何千とか起動すると重そう。


18
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 00:13:16
そういう特殊な環境の話はしてないっしょ。

19
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 00:29:19
>7
誰もメンテできなくなったVBやCOBOLやExcelの
資産()を見てもそう思えるんなら、才能ないから
コンピュータから手を引いたほうがいい。

20
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 00:48:45
bash を使うなとは言わんけど、bash でしか動かんものは
#! 行でそうと宣言しておいてほしい。
つーか、#!/bin/sh と書かれていたら
bash の独自拡張はぜんぶエラーにしてほしいんだが。
man によると sh という名前で起動されると POSIX 互換モードになるらしいけど、
あいかわらず bash 拡張がふつーに使えて違いがさっぱりわからん。
コメント5件

21
名無しさん@お腹いっぱい。[]   投稿日:2014/07/02 00:59:50
trapとセットでよく使うmktempとか結構システムによって挙動ちがうけど、純粋シェル道的にはどうやって実装するの?

22
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 04:30:46
>20
ここに書けばエラーレスが出るよ。

23
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 05:59:05
>20
bash で #!/bin/sh と書いたら、プロセス置換 <(command) とかが使えなくなるという違いはある。

24
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/02 15:49:33
>20
Bourne Shellを自分で入れるのが一番良いかもね

25
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 15:20:26
>20
例えばLinuxのDebian系ディストリだと
そのために拡張控えめな dash (Debian版ash) があったりするね

26
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 15:31:45
同じbashでも、#!/bin/shと書いて起動するとその動作モードが変わるという話をしてるんだけどね。
zshでも動作は変わる。が、ash(dash)は#!/bin/shと書いても#!/bin/ashと書いても何も変わらない。
コメント1件

27
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 15:47:52
>20>26
たぶんPOSIX準拠でエラーのないスクリプトが正常動作する程度の機能なんだろう。
最低限それやっとかないとPOSIX準拠のシェルとして採用してもらえなくなるから。

厳密にPOSIX準拠で拡張ゼロのシェルを内部に別途実装するとか無駄だから、
そういう要望はBourne Shell入れてそっちでやってくれってスタンスなんじゃね?

28
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 16:06:37
今後新しいシェルが出てきて乗り換えた時に、書き溜めたスクリプトが動くと嬉しいので、互換性指摘は嬉しい。
ただ、その時々によって必要性が違うので無視するかも。
つまり、互換性指摘はWarningということだ。

29
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 16:34:16
シェルスクリプトってインタプリタ言語だしWarning出さずにError出すイメージ

30
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 16:45:14
何その勝手なイメージは

31
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 18:24:18
お前の勝手なイメージを押し付けるな!

32
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/03 18:59:57
× イメージ
○ イミッジ

これを間違えると日本人と思われて馬鹿にされるので気を付けるようにw

33
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 00:34:23
× アイディア
○ アイデア

34
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 00:44:50
日本人ってだけでバカにするのはアレな国の人だけだと思う

35
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 10:39:04
checkbashism使ってみるのはどうか。
https://alioth.debian.org/scm/browser.php?group_id=30755
PerlスクリプトなのでDebian以外でも普通に動くはず。
コメント1件

36
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 11:07:46
>35
使ってみたことあるけどBourne shとの互換性チェックには全然ならないよ。

37
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 11:13:37
ポータブルなスクリプトがデフォなのは賛成だが、
デフォが Bourne shell ( 商用 UNIX 等で生き残っている
Traditional Bourne shell と解釈しています ) とするのは反対

前から思っていましたが、多くの環境でわざわざインストールしないと使えない
Bourne shell にこだわる必要性は、少ないと思う

皆さんが、ポータブル性は POSIX 相当でも OK なら、こんな風にしたい

□お約束
・特記なき場合は #!/bin/sh がデフォルトです。この場合、ポータビリティーに注意し
 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
 bash/zsh/ksh/ash/dash などに依存する場合は明示しましょう。

38
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 11:20:56
その辺はスレ立てる人が勝手に決めてるだけだから
次スレ自分で立てればいいよ。

39
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 11:24:28
今回立てた時に、やはり了承を得てからと思って、コピペにしました

本当は、>7 の言うことも納得で、
> □回答者への注意事項:
も消したかった

40
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/04 20:54:39
>1 です
暇を見て、話題の途切れたときにでもテンプレ案出してみます

41
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/05 19:22:10
連投失礼します。テンプレ案考えてみました。かなり手を入れました
どんどん指摘して下さい
ただし、こんな風にしろとかだけでは無く、具体的に修正したものを付けて下さい
指摘された事に、別の方の反論が無ければ、そのまま機械的に取り込みます
考慮が足りなかった場合は、後で条件を追加・変更する事も有ります

変更点
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 [sage]   投稿日:2014/07/05 19:23:09
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。

□A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合ポータビリティーに注意し、
 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
 bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
 「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
 控えましょう。
コメント2件

43
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/05 19:23:52
□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 [sage]   投稿日:2014/07/05 19:24:44
□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
コメント1件

45
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/05 19:26:23
□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 [sage]   投稿日:2014/07/05 19:28:43
□E. 学習用テキスト
1. Bourne&#160;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 [sage]   投稿日:2014/07/05 19:30:27
□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. 特に話題に上らなければ削除します
コメント2件

48
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/05 19:31:15
□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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/05 22:00:04
自分の場合は書籍はあまり見てなかった
入門時に一番参照したのは、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
コメント5件

50
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/05 22:37:15
参考リンクはともかく、学習用文書はいらなくないか?
あまりテンプレ充実しすぎてても考え物な気がする
今までが1レスだったから特に

しかしポータビリティって単語好きだね
コメント4件

51
名無しさん@お腹いっぱい。[]   投稿日:2014/07/05 23:12:47
可搬性
コメント1件

52
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/05 23:39:10
POSIXのPはポータブルのP。

53
1[sage]   投稿日:2014/07/06 06:20:22
連投規制中です。しばらく待ちましたが、いっこうに書き込めません
代行さんに書き込んでもらっています
続きは明日以降で。参考リンクが、まだ続いて、他に
前スレ、関連スレ、テンプレートの変更案
が有ります。これ以上長いと、問題有そうですが
とりあえず、あげてみます

54
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 11:44:27
テンプレ貼るのに連投規制食らうようなものはいかんだろう。
つーか、今テンプレ決めて次スレ立つの何年後だよwww
コメント1件

55
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 16:59:31
前スレは1年かからなかった。

56
1 前置き1分割E2回が余分です ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 19:55:48
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/
コメント1件

57
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:07:38
 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. ☆シェルスクリプトを勉強するにあたって☆
 UNIX板の別スレッドへ
2. 便利なシェルスクリプト見せろ
 UNIX板の別スレッドへ
3. シェルスクリプト総合 その1
 UNIX板の別スレッドへ

中略。検索して下さい

4.  シェルスクリプト総合 その23

58
1 次スレ早め立おくどう? ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:12:09

59
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:14:23
□I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
1. F.6 ツール
 a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
  ShellCheck
  http://www.shellcheck.net/about.html

60
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:20:15
□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 あ、張り切って〜、どうぞ〜! 案じゃ無くてつぶやきでも、どうぞ〜!
コメント1件

61
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:42:24
自分でも追加してみます。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
コメント1件

62
1 ◆01VkPKFOHeoR [sage]   投稿日:2014/07/06 20:52:47
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 22:40:39
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 ももっともです。どんどん書き変えて下さい
コメント1件

64
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 22:45:14
 わりと
   どうでもいいよね〜                   ね〜♪
                         _ ‐..::  ̄ ̄ ::::... 、
              . ィ            r'::/ ::ィ:::::::::::j:::::::ヽ::::\
,._.._ .......、._    _ /:/l!            | ::|::/ |::::::::∧:::レ::l:::| :::::rヘ
ヽ :~""''.>゙' "~ ,、、''‐'、|          l ::仏_ノヘ:/ ー- ハ:::!::::::|::::i
 ゙、'、::::::ノ:::::::_,.-=.  _〜:、          /::::リy=ミ ' ィ=ミ /:::::!::::/:::::!
  ``、/:::::::::__....,._ `゙'Y' _.ェ-、..._      |::::{xx     xx/::::::「)'|:::::::|
  ,.--l‐''"~..-_'.x-='"゙ー 、`'-、      lハ:仆 ..._ヽフ /:::: /´ |:::::::|
 "   .!-'",/  `'-‐'') /\ `      ::::ソ勺 7イV_  !:::::::!
  .-''~ >'゙::    ‐'"゙./  ヽ.    __  |::/ 爻___ん'´ッ'⌒ヽ! :::::!
    //:::::       ',        (__,、\/ /‐―一弋{、  /  ̄_)
   ' /:::::       .:';          \ ' {      :::\   /~::!
コメント1件

65
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 22:50:31
どうでもよくない
コメント1件

66
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 22:55:44
めっちゃ頑張ってるのは評価するが需要にあってるかどうか微妙
レスを見ても長すぎるテンプレを褒める書き込みはない
その16でどんな議論があったのかは知らんが、今の提案は全部長文すぎて読む気が起きん
Small is beautifulなんだろう?
コメント2件

67
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 23:03:24
 ―┼‐         ノ     /   |  --ヒ_/     /   \ヽヽ    ー―''7
   `」   ┼,   二Z二   レ   /  /´レ' \ ―7 ̄}  |  ー-、   /
 (__  (|フ)   (__ノ  _ノ  ∨`  ノ  /  /     _ノ    \_

    ─┼-        /   |   ‐┼-   |     ー|―
    ─┼─ |   \ レ  /   ̄Tー  /      ノ -─
   (二フヽ  \/    _ノ   (二フ\  ヽ_ノ   / 、__

     i';i
    /__Y
     ||真||                   /⌒彡
  _ ||露||         /⌒\     /冫、 ) ・・・・・・。
  \ ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄\ `./⌒ i `  /ゝ    _,,..,,,,_
  ||\`~~´  (十万石)     \( >     ('\\  ./ ,' 3 `ヽーっ ・・・・・・。
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄\`つ    ⌒ _) l   ⊃ ⌒_つ
     .|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||                `'ー---‐
( 'A) ・・・。 〃∩ ∧_∧        <⌒/ヽ___
/(ヘ)ヘ    ⊂⌒(  ・ω・) ・・・。  <_/____/ zzzz・・・
         `ヽ_っ⌒/⌒c

68
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/06 23:53:00
テンプレはどっかのwikiに置いてよ。
コメント1件

69
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 00:09:44
http://info.2ch.net/

2ch公式のwikiがあるからここ利用したら良いよ
コメント1件

70
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 06:30:40
>64 勝手に進めてま〜す♪

>66 "Small is beautifulなんだろう?" は必要ですか?皮肉っぽく不快です
読む気が起きないなら、どこを削除するか具体的にお願いしますとは言えないので、
ごっそり削除した案を上げておきます

長くなった部分は、1.過去ログの内容も多く、他に 2.移植性、3.POSIX、
4.Bourne Shell、5.関連スレや、6.テンプレ変更案を促す内容を追加しましたが、
ほぼ削除しました

>49 で UNIX FAQ を上げてもらっているので、何らかの参考リンクは
有ってもいいのでしょうが、取捨選択、別途追加は皆さんにお任せします

>68 >69 せっかくの提案ですが、今後とも wiki でなくこのスレで進めた方が
良いと考えているので、少なくとも私は作りません。申し訳ない

71
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 06:31:14
長すぎて、読む気がしない
修正、削除
□A. お約束 --- >42 そのまま
□B. お約束の補足 --- 下記。2, 3, 4 参考リンクへの参照を止め直接記入 5 削除
□C. 初心者へのアドバイス --- >44 そのまま
□D. 前スレ --- に変更して直前スレのみにする
1.  シェルスクリプト総合 その23

□その他 --- 削除
コメント3件

72
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 06:31:57
□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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 07:01:26
テンプレなんてドーデモエー
テンプレ検討だけでスレ埋めるなよ
シェルスクリプトの話しろよ
コメント1件

74
名無しさん@お腹いっぱい。[]   投稿日:2014/07/07 09:01:44
ポータビリティーがそのままじゃ通じないとか言ってんじゃねえんだよ
ただ読み方カタカナ表記しただけの長々しいカタカナが君には見やすいのか

俺はそう思わないしカタカナ列挙した糞翻訳は読みづらいし頭に入ってこない
極論すれば英語のままの方がマシだ

で、
できるだけ環境問わずそのまま使えるようにするのは
可搬性の向上なんだよ

移植性だと書き換え前提でその書き換えをしやすくする感じが強くなる
汎用性は可搬性みたいなことよりも*目的*を限定しない感じになる
コメント2件

75
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 09:16:21
/.:::.::.::.::.:: ト\ /∧:.::.::.::|:.::.:: |:.::.::.:.::.::.:.::.::.:.\
.: ::.::.::.::.::. |-‐''"´│:.::.::.|:.::.::.jヽ ::.:.::.:.::.::. |::.:.::.:.
.: ::.::.::.::.: l:|    |:j.::._∧::.:/ ハ.::.::. }::.::.:|^';.::.::'.
.: ::.::.::.::.: |:!=-、  ノ:'!.::;仁∨ j:ハ.:: ;'::.::.::|ノ} :.::.'、    ふ〜ん …で?
.::.::.|.::.::.::.|:ヽ    ∨ '弌示圷 j/.:: /.::| '.::.::.::.:ヽ
.:|.: |.::.::.::.'ャ弌示       ゝ.:ソ /.::./ :.::|/.::.::.::.::.::.::\
.::!八.::.::.::ヘ ゝ.:ソ         ̄´厶:イ :.::.:|、.::.::.::.::.::.::.::.:\
、ヽ.:\.::.::.:.. `  ,         |:i.::.::.::| \.::.::.::.::.::.::.::.:. \
.丶.:\:|>‐ヘ              | .::.::.::|  丶、 _;rz: -‐ ⌒丶、
  \:〈 ^トーゝ_   --、       1 :.::.::.|        //       \
    |ヽ´  ⌒>‐ 、   、<. │.::.::. !      //         丶、
    |.:: \      `く. Y:| \|.::.::.::.|      |:l                \
    |.::.::.::.`7ーr:、    ,ノ::lヽ _|.::.::.: |   / j:j                \
    |.::.::.:: /  |:/    / |::{  |.::.::.: |´ ̄  /:/   、__            \
    |.::.::.:/  /    / .l八 │:.::.: |    |::|     '⌒丶、

76
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 09:18:42
割りと胴で萌ぇ

77
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 09:46:44
テンプレは自分で勝手に決めていいよ。
コメント1件

78
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 10:48:06
いちいち誰にでもわかりやすいようにする必要はない。
ポータビリティで通じるし、通じないならそいつがタコなだけ。
シェルスクリプト書くような奴は、単語の意味を自分で調べるくらいできる。

ここは幼稚園か? 違うだろ? 出来ない奴は相手にしなければいいだけ。
目の前にすぐ調べられる魔法の箱があるのに活用できない奴は、もはや現代では馬鹿の謗りを免れえない。
コメント2件

79
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 12:18:24
bashって$RANDOMが定義済みなんだな。
自分で範囲を決めて作ったランダムを$RANDOMに突っ込んで、
呼び出したときの値の範囲がおかしいから、???ってなったわ。
頭にBASH_つけるとかして欲しかったな。
コメント1件

80
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 12:33:34
>79
それは bash独自じゃなく、zshでも kshでも同じだよ。

RANDOMを普通変数として使いたいなら、
先に unset RANDOM してから RANDOM=1234 とか自分で代入すれば値は変化しない。

81
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 13:11:10
zshだとunsetしても普通の変数にはなってくれないよ

82
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 13:43:36
純正シェルで使って良いシェル変数は$aから$mの13個だけだと言ってるだろうが。

83
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 13:46:22
いま純正シェルの話じゃないから。

84
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 17:41:52
ファイルがたくさんあって、それら全部に対して
・手っ取り早く文字コードを調べるのにfileコマンドを使う (file *)
・正確に出したい時にiconvコマンドを使う (iconv -f code < filename)
という事をやってたんだが、手っ取り早く正確に文字コードを調べる方法って何かないかな?
むしろ皆のやり方を知りたい
コメント2件

85
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 17:42:00
前スレ シェルスクリプト総合 その22 のつり餌
> bourneシェルの中でもV1-V6はコマンドラインインタプリタとしての...
> PWBシェルでも動作可能なことが純正シェル道

V1 - V6 は Bourne shell ではなく、Thompson shell
その22 のスレのデフォルトシェルは Bourne shell であって Mashey shell ( PWB shell ) ではない

よって、前スレ >983 を失格というのは間違い
そもそも、Bourne shell の B は大文字で書く

86
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 17:44:47
純性シェルじゃないと何が困るの?
コメント2件

87
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 17:45:52
>84
nkf -g

88
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 17:46:08
$()使うなとか言い出す輩がいる
コメント1件

89
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 19:14:22
>88
$( )を使わないようにすることは、Bourneシェルを基準にすることで達成されるから、
純正シェルまで遡る必要はなくなる。

90
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 19:16:57
nkf←古くて時代遅れ
iconv←今風これからの標準

って認識あるんだけどnkfの方が全体的に使いやすいし
機能も豊富だからつい使っちゃうんだよなあ
コメント1件

91
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 19:59:00
iconvって文字コードにエラーがあるとファイルの途中で異常終了しちゃうから使いにくい。
コメント1件

92
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 20:38:05
>86
困るとかじゃなく、あれは武道とか精神修練とかそっち系のアレだから。

93
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/07 23:24:27
nkf入ってないんだよなうちの会社の環境…
別環境でnkf -gがめっちゃ使いやすかったからなんで入ってないんだと思ってしまう
客先環境だから仕方ないんだけどさ

94
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 11:12:40
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 11:13:47
テンプレがどうでも良い方は、どうでも良いとして、>65 >73 の意見もあるので、
話題が尽きた時等、スクリプトの話の邪魔にならない程度に、遠慮ぎみに進めたいと思います

特にレスが無ければ、長いという意見と可搬性という意見で、>71 を元に可搬性としたものに
なりそうです
コメント1件

96
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 11:24:27
iconv -c でも駄目な場合がある。
nkfはそういう場合でもデコード頑張る。

97
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 12:43:54
nkfの方が日本語を扱う上で現実的

98
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 12:48:17
この程度のテンプレは長いに入らん
スレ立てる人が面倒で無ければテンプレ付ければいいし
面倒なら誰かに任せてもいい
コメント3件

99
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 15:55:56
いや長い
まぁどうせ1回読んだらもう読まないし長いから何が困るってこともないんだが
その長いテンプレを議論する為に何レスも長文が続くのはゴメンだわ
コメント4件

100
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 19:18:04
>95
そうそう、
大局将棋を指しましょう7{第4局第2譜} /将棋・チェス板
のテンプレと比べたら大したことないよね
コメント8件

101
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/08 23:55:30
ふむ。ちょっとテンプレ短すぎかもしれないね
コメント4件

102
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/09 01:02:34
>100
テンプレくっそ笑ったwww
コメント1件

103
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/09 01:32:21
こ、これは凄いなw

104
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/09 01:46:32
>102
そのスレのテンプレはこれでもかなり簡略化されたほう
過去ログだと200レスくらいテンプレだったりする2chでは伝説のスレ
コメント1件

105
名無しさん@お腹いっぱい。[]   投稿日:2014/07/09 02:58:02  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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/09 07:17:36
>100 >104
100レス目にふさわしい書き込みGJ
111レスでもすごいが、以前は200もあったのか!? 個性的なスレだ

107
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/09 21:13:58
>100
キーボードでスクロールする俺には辛いテンプレだわ…w

108
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/11 11:29:07
このスレって「シェルスクリプト高速開発手法入門」とかUSP MAGAZINEとか読んでる人いるの?

109
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/11 11:59:21
USP MAGAZINE → 定期購読
シェルスクリプト高速開発手法入門 → 買ったけど積ん読状態
コメント2件

110
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 02:57:49
高速開発手法って発売前にちょっと噂になって興味あったけど、アマゾンの「なか見!」読んだら一気に冷めたわ
Cとかで書いたプログラムをシェルから実行するだけみたいだし、本書で解説するbashCMSは著者自身は使って無くて、
WordPress使った方が得って著者自身が書いてて、え?じゃあ意味無いじゃんって 完全にネタ本

111
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 03:04:31
釣れればいいんですよ釣れれば。
>109みたいにお金出してくれる人が偉いんです。

112
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 03:19:42
ここシェルスクリプトについての愚痴でもいいんすか?

いま、Visual Cで書かれたソースコードを
c shellにマイグレーションするという
とんでもないプロジェクトに今月から投入された
俺に慰めの言葉とアドバイスをくれ

あと質問だが、shellスクリプトとシェルスクリプト、どっちが正しい表記?
コメント1件

113
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 04:01:04
>112
君は多分自分の仕事をきちんと理解してないなw

114
名無しさん@お腹いっぱい。[]   投稿日:2014/07/12 04:09:54
c shellて忌まわしきはcshのcshだよね

115
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 07:59:48
gccとかmakeとか、シェル上のコマンドを使ってCプログラムを開発という意味だったりして

116
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 14:35:12
>109-110
実は自作自演

117
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 14:41:47
シェルスクリプトとはほとんど関係ないけど、とりあえずネタふり
http://overthewire.org/wargames/bandit/

118
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 20:21:13
シェルterminalに直接ソースを書いてhello worldってできるの?

119
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/12 22:19:06

120
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 00:42:07
はじめまして、誘導されて来ました。質問させて下さい。 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

を調べながら使って冒頭のテキストを作るところまでできたところです。
「それならそもそもこういうやり方をすればもっと上手い」とかでも構いません。
当方プログラミングはほとんどわかりませんが、以上よろしくおねがいします。
コメント3件

121
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 01:32:38
>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文 で出来るから、意味を調べていくといいと思う。
コメント1件

122
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 01:33:41
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 01:40:38
>120
そもそもjhead -nで出来た気がする。
コメント1件

124
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 01:58:51
>123
これで文句ないだろ。
$ jhead -nf%Y-%m%d/%f *.jpeg

-nfのfは重複防止だから、場合によってはない方がいいかも。

125
名無しさん@お腹いっぱい。[]   投稿日:2014/07/14 23:22:43
ログファイル等の検索で、
「ある文字列が最初に出た行以下すべてを表示する」場合、sedコマンド以外で簡単な方法ないでしょうか?
(有った気がするのですが忘れてしまいました)
コメント6件

126
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/14 23:49:03
>125
grepで-Aをでかくするとか、grepで行番号出させて最初の行番号からtailするとか
コメント2件

127
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 00:44:39
>125
$ awk '/ある文字列/,0' ログファイル
とか?
コメント2件

128
名無しさん@お腹いっぱい。[]   投稿日:2014/07/15 09:12:14
改行または先頭からある文字列までをげとしておいて
先頭からある文字列までをそれで置き換えればいいのさ

129
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 09:29:12
お前は何を言ってるんだ

130
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 10:10:18
>125
なんで sed じゃだめなん?

131
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 10:53:40
>125
findじゃないのか?
コメント1件

132
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:20:14
>131
findでどうやるの?

133
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:36:05
ぱっと見awkで簡単にいけそうだなっと思ったが
>127がどうなってんのか簡単過ぎてよくわからないw
コメント3件

134
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:42:15
sedがダメという状況でawk使うというのは解決になってない気がしなくもない。

>133
パターン条件だけ書いてデフォルトprintしてるだけだろ

135
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:48:32
>133
行範囲の終了条件が 0(偽)だからいつまでも一致せず、最後の行までという意味になる。

136
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:50:06
>133
sed -n '/regex/,$p' といっしょ。awk はファイル終端を表す $ が使えないので、
$ のかわりに常に偽の 0 で代用してる。

137
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:52:21
ちょっと苦しいが、>126以上の案が思いつかん…
tail -n $(( $(wc -l < file) - $(grep -c 'pattern' file | head -n 1) )) file
なんかすごい簡単にいけそうなのになにこれキモい…
sedならsed '/pattern/,$!d' fikeでいいのに
コメント1件

138
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 11:52:49
なるほど
,0の部分がよくわからなかったんだ
0が一致しないから終わりまで全部って意味になるのね

139
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 12:01:32
>127みたいに簡単に書けるならsedでもawkでもいいんじゃね?w

140
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 12:17:18
俺の中ではsedでいいじゃんという結論になっている

141
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:02:52
なんでsedじゃだめなんだろう。

142
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:17:40
ある文字列の検索が終ったあとは余計なCPUパワーを使わずに単純出力させたい。
sedを使う方法だとログを表示中(| less してるとかを想定)は、ずっとsedプロセスが残ったままで、それを経由するので無駄。
とか?
コメント3件

143
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:19:21
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:29:06
>142 がいいことを言った。
lessで表示する前提なら、

less +/ある文字列 logfile

だけでいいじゃんw
コメント2件

145
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:37:26
>142
それsed以外の方法でもたいてい同じになるんじゃね。

146
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:39:25
なぜsed禁止なのか>125に聞きたい。
外野の憶測じゃないく。
コメント1件

147
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:55:45
>142
つきるめるなら、文字列がマッチした時点でその行の先頭を指してる標準出力ファイルディスクリプタをもったまま
何らかのプログラムをexecするプログラムを作れということか!
いらねえw

148
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 13:57:06
「男は度胸!何でも試してみるもんさ」

149
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 14:01:24
>146
禁止なんて誰も書いてないだろ
sedより簡単な方法があったような気がするから教えてだろ。
コメント1件

150
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 14:15:08
>149
> sedより簡単な方法があったような気がするから教えてだろ。
そうは書いてない。
コメント1件

151
119[sage]   投稿日:2014/07/15 14:28:02
みなさんありがとうございました。>121で思い通りのことができて嬉しいです。
雰囲気以上のことはあまりわかりませんでしたが調べてみます。
使いこなせるようになりたいのでまた疑問ができたら質問させて下さい。
ありがとうございました。

152
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 15:02:59
>150
どう解釈しても良いけど「sed禁止」と読み取れる
文言はどのへん?

153
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 15:08:29
禁止というのはおれの誤読かもしれないけど
それならそうと>125が訂正してくれればいい。

154
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 15:40:34
ログファイル等の検索で、
「ある文字列が最初に出た行以下すべてを表示する」場合、sedコマンド以外で簡単な方法ないでしょうか?
(有った気がするのですが忘れてしまいました)

それほど複雑な文言じゃないが

155
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 15:45:07
おそらく >144 が期待される回答

156
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 17:23:09
sedでも簡単だけど、言語かコマンドかでフィーリングが違うな。
awkでも出来るけど、なるべくcut使ったり。

157
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/15 20:26:40
awkは「言語としても使えるコマンド」って印象があるなあ
プログラマだからそう思うのかな

158
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 01:50:47
>144を見てlessって思ったより便利なのかと思って試したんだが、
これlessで眺めるの前提だからうまく機能するんだな
これ利用してファイルに吐き出す方法ないものか
コメント1件

159
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 02:02:13
>158
表示されてないだけで、読み込まれてはいるんだから、何か違う気が。

160
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 20:57:53
awkとかsed使うくらいならperlの方がいい
ポータブルだしね
コメント1件

161
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 21:59:50
>160
コマンドとして考えるとperlはちょっとデカいかな
長いスクリプト書くなら、複数プロセスを通すより軽くて良いが

162
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 22:06:31
このスレで言うのもなんだが、awkとsed覚える前にPerl覚えちゃったクチだわ
awk/sed入っててPerl入ってないなんて組み込み系か宗教上の理由じゃない限り有り得ないし

さらにzshが意外とzsh内で完結できる守備範囲広いからそっちの方も勉強するようになって
ますますawk/sedは覚える機会が…

163
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 22:32:42
俺もawk,sed覚える前にperl覚えたけど
大抵のことはbash,awk,sedその他で出来てしまうから
逆にperl書かなくなっちゃた派だな

164
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:01:49
perlのワンライナーがキモくてどうも使う気になれない

165
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:08:27
俺の場合、インタラクティブにはsed/awk
その組み合わせをメモするついでにシェルスクリプトにする場合もある
何にしてもshebangにsedやawkを書くことはないな、shになる

最初からスクリプトとして書くつもりならperlになるかな
こちらは逆にシェルスクリプトに埋め込むことを滅多にしない

166
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:09:55
perlはワンライナーに限らずキモい使い方される事の多い環境。
ワンライナーではキモいコード使うことが多いってだけで、
perlワンライナーのキモさは本質的にperlそのもののキモさ。

キモいけどまぁあれはあれで便利なもんだよ。キモいけど。

167
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:14:05
awkとかsedは、ヒアドキュメントにして見づらくならない程度。
長くて2〜30行以内。
あと、拡張正規表現が標準正規表現と互換性(ほんの少しだけど)がないから、めんどくさい。

168
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:15:14
perlのキモさを見て使いこなしたくなったけど結局勉強していない

169
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/16 23:58:16
perlでがっつりスクリプト書くならCで書いちゃうなw
正規表現でさらっと処理するならawkかsedで充分。

170
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/17 00:01:12
最近流行のキモかわいいって奴

171
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/17 00:12:53
Rubyのほうが相性いい

172
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/17 02:21:44
Apacheの1日分のログで、IPアドレスごとに1分ごとの平均接続数を一覧で確認したいのですが、どうゆう方法で1分ごとの平均を出したらいいのでしょうか?あ、スレ違いとかスレ目的とずれてたらスルーしてください。
コメント2件

173
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/17 03:58:54
>172
出現回数数えて1日で割ればいいだろ。

174
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/17 09:15:03
>172
確かに!

DoSとかクロールとかが埋もれないようにとか思ってたけど、それで十分ですね。
ありがとうございます!

難しく考えすぎてました...orz

175
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 13:56:55
124と似ていますが、行番号だけの表示をさせたい…
シェル作成しているのだが(行番号を取得してログの一定範囲を表示させたい)んだが、sshで別サーバのログをgrep,sed,awkしてたりするんだが、上手くいかない…
わかりづかくて申し訳ない
コメント3件

176
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:08:26
わからんなw

177
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:09:31
今まで書いた部分をstackoverflowあたりに貼って質問してみれば

178
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:10:19
>175
awk '/ある文字列/{print NR}' logfile
コメント1件

179
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:12:15
>175
sed -n '/ある文字列/=' ログファイル

180
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:17:49
>178-178
最初に一致した行番号だけ表示するならqやexitを追加しとけ。

sed -n '/ある文字列/{=;q}' file
awk '/ある文字列/{print NR;exit}' file
コメント3件

181
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:42:31
>180
>180
>180
どうもです。まださわりはじめたばかりでどうも入りづらく…
ちなみに私が実施していたコマンド
set 変数 = `ssh 鯖 " grep -n 文字 ファイル | tail -1 | sed 's/ /: g' | awk '{print $1}'
環境がいまないので教えていただいたのを試してみたい…
ちなみに最後にヒットした行番号を抜き出します。

パイプの使い方がいまいちわからん…このコマンドだと最後の行の文章まで引き出してしまう
コメント2件

182
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:50:17
>181
最後にヒットした行番号かよ
ほれ↓

awk '/ある文字列/{t=NR}END{print t}' ファイル
コメント2件

183
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 14:56:32
>182
.なんでそんなに分かるんだwww
ありがとうございます。

184
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 15:38:14
手元に何らかのUnix系環境あると楽だぞ
UnixやBSD、LinuxやMacを使ってるならそこで色々試せばいいし
Windowsでも、ちょっとお試し程度ならCygwinでも問題ない
ただCygwin独自の問題もあること考えると仮想マシンにUnix系の環境あると便利

185
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 15:51:10
知らない間に、レス数が増えてるな。なんか、反応が早すぎるよね

>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 21:46:32
>182
もしよろしければなぜそうなるか教えていただきたい…
私が作成したコマンド含めて…

187
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/19 23:51:41
書いた人じゃないが
awk '/ある文字列/{t=NR}END{print t}' ファイル
ある文字列 にマッチすると、その行の行番号をtに保存する
END(つまりすべての行読み込みが終わった後)に最後にtに保存された行番号を表示する
コメント1件

188
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 06:34:00
>187
あ、なるほど。
説明さんくす!

189
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 07:00:55
NRはNumber of Recordとかそんな感じの変数。

190
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 19:48:31
テキスト中に現れる<text:s c="n"/>のような文字列を
n個の半角スペースに置き換えるにはどうすればいいでしょうか
たとえば<text:s c="23"/>だったら、半角スペース23個に置き換えられるとうれしいのですが
コメント6件

191
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 22:09:44
>190
これもawk案件かな。
改行が入ってたりはしないんだな?
コメント2件

192
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 22:49:16
>190
全ての行をechoで出力するように置換して、
該当の部分を`printf %23s " "`に置換、
それらを評価してテキストを出力する。

この方法は元のテキストで、shが解釈する文字をどの程度使ってるかでコストが変わる。
コメント2件

193
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 23:03:44
>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〜> が同一行に複数あったらダメだな。。。
誰かもっとスマートな方法をお願い
コメント1件

194
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/20 23:34:45
Perl なら一行で…

$ cat hoge.txt | perl -pe 's@<text:s +c="(\d+)"/>@sprintf("%$1s", " ")@ge'
コメント2件

195
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 00:03:55
ついにperlさんが活躍するのか
sedで頑張ろうと思ったがどうやっても複雑になるからあきらめた
前スレに出てたスクリプトを出力するスクリプトを書けばって気はするが、作り方が分からん……

196
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 05:21:43  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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 05:24:03
>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>'
コメント2件

198
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 06:28:07
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
'
コメント1件

199
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 06:29:23
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
コメント1件

200
197 の続き[sage]   投稿日:2014/07/21 06:31:35
  : Loop3
   s@\('"${ReTag1}"'< *\) <\([ <]*'"${ReTag2}"'\)@\1< \2@
   t Loop3
  
   s@'"${ReTag1}"'<*\( *\)'"${ReTag2}"'@\1@g
 }
 t Loop1
'
197 のインデントを置換するのを忘れた

201
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 06:38:37
197 ですが、@\1<数字分の半角スペース\2@ で置換します
連続した半角スペースが、1つになってしまったので、読み替えて下さい

202
189[sage]   投稿日:2014/07/21 11:38:36
>190です。みなさんありがとうございます。
いただいたどの案でも目的を達することができました。

203
189[sage]   投稿日:2014/07/21 11:39:16
>192
printfを使うというのは目からウロコでした。
ある文字を指定された回数だけ出力する(expand?のような、あるいはBASICの
STRING?のような)コマンドを探したりしていたのですが見つからず…

204
189[sage]   投稿日:2014/07/21 11:40:06
>191,192
できました。同一行に複数ある場合ですが、ちょっと後出しみたいで申し訳ないのですが、
入力をあらかじめタグの切れ目で改行しておけばよいので全然問題ないです。

205
189[sage]   投稿日:2014/07/21 11:40:55
>194
ううむ、簡潔ですね。さすがperlです。sedやawkでだめならperlかなと思っていたので
そのものズバリの回答ありがたくいただきました。

206
189[sage]   投稿日:2014/07/21 11:41:42
>197
ご明察のとおり元のテキストファイルはxmlファイルで、
OpenOffice Writerの文書ファイルからcontent.xmlを取り出したものです。
evalを使ったスクリプト、期待どおり動作しました。入力中にシングルクォートは
ありませんでしたが、アスタリスクがあって、ちょっと副作用出ました。
この辺が>192さんのおっしゃるコストでしょうか。
コメント1件

207
189[sage]   投稿日:2014/07/21 11:42:20
>198
GNU sedだとeコマンドが使えるのですね。ループの使い方とあわせてとても勉強になりました。

>199-199
うーん、そういう方法があったか!と唸ってしまいました。
元記事Simon Richterさんのsedで加減の演算を実装してしまう方法はとてもマニアックですが
sedでもここまでできるという見本のような使い方だと思いました。

208
189[sage]   投稿日:2014/07/21 11:47:24
上にもちょっと書きましたが、入力ファイルは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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 12:59:04
xmlなんだからパーサーに食わせればいいと思う。
コメント1件

210
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 13:30:11
パーサー使っていいならodt2txtもありになってしまうじゃん
あくまで標準的なコマンドでやりたかったんじゃないの?
コメント1件

211
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 13:31:59
>206
>197だけど、evalは危険なので気をつけて下さいね。何らかの方法で任意のコマンドが実行できるかも知れない。

>209
xmlstarletでやろうとしたけど挫折した。純粋なxsltなら出来そうだけど。

212
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 13:40:58
>210
時間の無駄。
XMLパーサの再発明(しかも超劣化版)してどうするの?
コメント1件

213
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 14:10:56
別にパーサでやるのも、あくまでシェルスクリプトでやるのもアリでしょ。
そこの議論やるより、スクリプトを書いたほうが建設的。

214
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 14:18:33
>212
なんでも使える環境で作業してるなら Perl でも Python でも Ruby でも使えば良いじゃん
なんでこのスレいるの?

215
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 18:39:51
最近は>190みたいにxslt使うまでもないのは
s.split(/<(^[>]+)>/m).forEach
みたいな感じでnode.jsだな 改行入っててもOKだし

216
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 22:19:23
今回はperlさんが最適解っぽいな
しかしawkで>193のようなやり方があるとは
matchの3つ目の引数使って後方参照出来るってことだよな?
これは使いこなすと強そうだ

217
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 22:55:42
gawk限定でもいいのかっていうのはこのスレではやや気になる。
自分だけなら好きなように使うけど(特にgawk4.0以降の多次元配列)。

218
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/21 23:04:16
pythonやrubyは?

219
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 01:25:48
#!gwak
と書いて置けばいいさ
コメント1件

220
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 02:03:04
>219
一行目からtypoってのはせつない。

221
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 02:19:18
shebang行に相対パスは環境依存…とかそれ以前にグワック

222
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 14:57:15
空白の行を取り除くとして、方法が何通りかあると思うんですけど
どんな方法がありますか?また一般的な方法はどれですか?
コメント1件

223
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 15:00:37
>222
grep -v ^$
空行ならこうだけど、空白の行なら'^ \+$'かな。
コメント1件

224
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 15:54:13
「空白行を取り除く」という言葉を重視するなら sed かな

225
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:03:13
tr -s \\n #空行を取り除く

226
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:09:28
質問は空行じゃなくて空白行。

227
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:14:47
空白行と空行ってなにか違うんですか?

228
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:20:14
空行は何もない行。
空白行は空白のみがある行。
コメント1件

229
名無しさん@お腹いっぱい。[]   投稿日:2014/07/22 16:31:35
s/\n+/\n/m
コメント2件

230
名無しさん@お腹いっぱい。[]   投稿日:2014/07/22 16:32:18
s/\n\s*\n/\n/m
コメント2件

231
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:35:12
それじゃ答えになってない。

232
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:39:33
sed様のお手を煩わすまでもない、
お前など、このgrepが排除してやるわ

# 仕様後出しアタック

grepを倒したからと言っていい気になるなよ
奴は正規表現四天王の中でも最弱

ここまで妄想した。
コメント1件

233
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:42:45
>229
>230
/^ \+$/d

sだけがsedではない。

234
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 16:49:27
>229>230はsedとは言ってない。

235
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 18:57:35
汎用性を考慮して行頭、行末、行頭と行末の空白文字を取り除くスクリプトを用意
#!/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

誰かファイル末尾の空行を削除するスクリプト作って
コメント1件

236
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 19:48:19
少なくとも空行、空白行削除なら
>223のをちょいとだけいじって
grep -v '^ *$'
でいい気がするんだが
sed使うほどでもないだろうこれ
コメント2件

237
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 20:19:58
>228
ちょっとまって。
空白しかないんでしょう?
改行があったらダメじゃん?
でも改行ないと行じゃないよ?
あれ?

238
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 20:21:24
>236
仕様後出しアタック

っタブ
コメント1件

239
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 20:23:59
全角スペースもお願いします。
全角スペースに見える未定義コードもお願いします。
コメント3件

240
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 21:19:36
>235 sed でタブと全角スペース込み
unnamed)
 sed -e '
  : Loop
   N
   $ d
  /^[[:space:]\n]*$/ b Loop
 '
;;
コメント1件

241
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 21:20:33
>239
お前みたいな曖昧な提案しかできない奴が仕様をまとめるから炎上するんだ

242
238[sage]   投稿日:2014/07/22 21:34:16
一々言う事でもないけど、"$@" つけ忘れた
こういうミスを、書き込む前に気付く様な人に、いつかなりたい

243
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 22:29:32
>236
sedのdコマンドのほうが、意味的に近いかなと思うんよね
grepはどうしても「抽出する」イメージが強いコマンドだし

244
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 22:30:45
>239
[[:space:]]
これの対象にならないならもうだめぽ

245
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 22:35:40
sedっていうとどうも編集役っていう先行イメージがな。置換とか
行の一部を編集ならsed、行丸ごと処理ならgrepだと勝手に思ってる
同じ処理ならgrepのほうが高速に動く……多分

246
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/22 22:40:11
>239
バカには見えない文字があるので仕様通りです。

247
233[sage]   投稿日:2014/07/22 23:00:49
>240
おお、さっそく作ってくださってありがとうございます。
tac と組み合わせればファイル先頭の空行も取り除くことができるので願ったり叶ったりです。

自分も早くパターンスペースやホールドスペース、ループを自在に操れるようになりたいです。

248
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 10:33:53
具体的な話しじゃないけど
無印良品のデータベースって市販の管理ソフトだと
効率が悪いんで、txtベースで資料を造ってボーンシェルかなにかで
検索システム造ったと聞いたが、cat|grepとかだったのかな。
コメント1件

249
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 10:45:35
>248
話があやふやだな。
ぐぐればすぐソース出てくるじゃん。
http://www.atmarkit.co.jp/news/200909/07/lltv03.html

> cat|grepとかだったのかな。
UUOC
コメント1件

250
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 11:47:14
>249
ありがとう。
ググルよりオマエに頼ってオマエを愛したい。
コメント1件

251
247[sage]   投稿日:2014/07/23 11:49:25
やだよ気持ち悪い。

252
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 12:35:21
>232 >250-249 笑った。四天王の中でも最弱とか、よく出てきそうなフレーズだなあ
と思って調べると、有名なネタですか

先頭の空行のも書いてみました。正規表現で2回走査する所がいまいちですが
unnamed2)
sed -e '
 0, /[^[:space:]]/ {
  /[^[:space:]]/! d
 }
'
;;

[ここか[:space:]ここに]
空白文字を足せば解決の様な気がしますが、落とし穴?
コメント1件

253
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 18:59:04
>238
grep -v '^[[:space:]]*$'
ちょっと苦しいか

254
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/23 23:57:04
>252
ファイル先頭の空行を削除するスクリプトありがとうございます。
アドレス0の使い方を学びました!

255
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 13:40:13
>194
Perl は 'x' で文字列のリピートができるのか… '*' じゃないんだな

$ cat hoge.txt | perl -pe 's@<text:s +c="(\d+)"/>@" " x $1@ge'


256
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 13:43:45
catが無駄です
コメント3件

257
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 13:49:57
cat始まりとか割とよくやるよな。
最初だけcurl $url|tee cache|した時とか特に。
コメント2件

258
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 13:55:08
cat始まりで実行するのは素人。
コマンドライン上、ファイルを最初に書きたいなら、

< file script > outfile

ってやればいいだけ。catもパイプも要らん。
コメント2件

259
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 13:57:57
問題:この話題は過去何回目でしょう?

260
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 14:22:21
スクリプトではなく対話のシェルに打ち込むなら
ネコを使っておいた方がヒストリを検索するときに
まとまっていて楽w
コメント1件

261
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 15:05:56
>256
そのツッコミが無駄

262
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 15:55:01
>258
なるべくなら少ない方法を使い回したい。
あと入力がgzのものがあって、zcatに置き換えるのはありがち。
コメント3件

263
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 18:41:09
おれも最初に 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
コメント2件

264
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 19:05:01
そんな差あったのか
パラメータにファイル指定するより標準入力に突っ込んだほうが早いというのは知らなかった
俺も今後は控えよう
コメント1件

265
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 19:19:08
その例は・・・w
catの次が標準入力を先頭から普通に読むタイプのフィルタならそこまで差はつかないと違う?
tailはちょっと特殊な読み方をするんじゃないのかな

266
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 19:39:35
じゃあ、tailの代わりに wc -c でどぞ。 -c も付けるんだぞ。

267
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 19:56:43
>263の3番目だけは遅いブロックデバイスへのブロックリードが大量に発生するんだよね
catが全部読んでtailに渡しながら、tailは先頭から改行カウントするしかないからね
その結果I/O待ちのidle時間が膨大になる

1番目と2番目はtailがKNOPPIXのファイル記述子を直接得られるので、seekして後ろの方から読んで改行を探せる
その結果ブロックリードの量が激減するので時間がかからない

まあtailの特殊事情だから、wc -cならここまで差はつかないだろう
コメント1件

268
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:00:30
>267
wc -c こそ大差がつくんだが、、

269
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:09:45
ほう。wc -c の方が大差がつくとなると何か自分が知らない仕組みがあるのかなあ?
とても興味があります

270
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:17:46
おお。たしかに差がでるなあ?なんでcat通したwcはこんな遅いんだ?

271
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:19:56
並列化が云々

272
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:24:59
ああ、なるほどwそりゃそうだw
wc -cだとデータの中身は見なくていいのね
だからファイル記述子が直接得られりゃ、即効で終われるのか

273
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/24 20:30:26
「cat file|」だと後段の入力はパイプだけど、「<file 」だと後段の入力はファイルになるんだっけ。
大抵は大丈夫だけど、物によっては動作自体異なる場合もあるのかな。

>263>264
2つ目ってキャッシュ効いてたりしないよな?

274
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 08:31:16
>257
でも今回はそうじゃない。
コメント2件

275
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 08:52:07

276
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 08:54:14

277
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 09:13:13
>276
言っている意味わかんないんなら黙ってろよ。

278
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 09:28:17
今回はzcatする予定もない

279
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 10:07:22
260 名無しさん@お腹いっぱい。 sage 2014/07/24(木) 15:55:01.75
>258
なるべくなら少ない方法を使い回したい。
コメント2件


280
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 10:18:05
>279
今回は使い回す予定もない

cat file |
より
< file
の方がタイプ数も少ない
コメント1件

281
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 10:19:21
>280
好きにしろよ。ただし押し付けるな。

282
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 10:20:16
>279は使いまわすんだよ。

283
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 13:11:52
>260
<file gzip -d|
zcat file|
<file
cat file|
260の件と合わせてヒストリ集めるならリダイレクトの方がまとまりやすいかも

284
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 14:36:59
じゃそういう事で、
・cat|すんなハゲ
をテンプレに追加ね
コメント3件

285
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 15:32:43
              彡⌒ミ
             (´・ω・`) 三 また禿の話してる
             (|   |)
              (γ /  三
               し
              ○   三
ス───────────────────────────

286
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 17:01:40
cutすんなハゲ


   ∧_∧
   ( ;´Д`)
   ( つ 彡⌒ミ
   ) 「( ・∀・)
     |/~~~~~~ヽ

287
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/25 17:13:54
使いやすいほうでいい

288
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 09:12:27
無駄にかき回したくは無いが...テンプレと云う事で

対話シェルで入力するコマンドラインを、使いまわす場合、
当然変化するので、
複数ファイルになる場合や参考*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
コメント2件

289
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 09:13:21
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 10:58:33
>288
そのページはcatの有効的な使い方であって、cat|の有効的な使い方では無い
しかもこれ↓インチキ引用だし

> easy "intuitive" switching on the command line between different types input
> cat<<EOF|cmd
コメント1件

291
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:00:53
ああ、cat|だと本来のconcatも含まれちまうか。
cat file|すんなハゲ
かな
コメント1件

292
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:26:34
cat hoge | するなっていうかさ、してもいいんだけどさ。
無駄にやってダサいって思わんもんかな。
特に cat hoge | grep fuiga とか。
コメント1件

293
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:37:37
>292
人に見せるもんじゃないしなぁ

294
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:42:40
多様性を殺したいのならwindowsだけ使ってればいいのに。

295
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:43:23
行番号つける時、cat file | cat -n とかw

296
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:46:51
最初にcatして中身見て、後を付け足して行くだろ。
< $file cat から始めるの?
コメント1件

297
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:47:44
>296
zshなら桶

298
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 11:53:46
zshは、 <file だけで中身表示できる。catいらん。

299
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 12:19:00
zsh使いって顧客先のサーバに無断でzsh入れて使ってそう
コメント1件

300
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 13:31:13
ちらほらと行頭に< file の記述を見るんだけど、
wc -l < file
< file wc -l
だったらお前らはどっちが正しいって思うの?
コメント1件

301
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 13:43:38
>300
どちらも正しい。
強いて言えば <file wc -l の方がcsh馬鹿よけになる。(cshではエラーになるので)
コメント2件

302
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 13:45:58
前者かな。cshでも使えるので
コメント2件

303
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 13:58:36
csh馬鹿は、引数そのまま渡す時に "$@" と書くべきところを $* とか書くんだよな。
csh撲滅すべし。

304
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 14:01:11
好きなように書けばいいよ
書きやすい
読みやすい
GOLF
速い

305
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 14:02:29
スレタイ的に人に見せるものなので
楽しい
楽しそう
を追加

306
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 15:00:44
すまん、俺がバカなのかもしれないが、
>301は後者を推しつつ、>302は前者を推してて
どちらも理由がcshの為なんだけどどういう事なんだ
コメント1件

307
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 15:04:52
eshellは許される
< が移植されてないから

308
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 15:18:13
    |  |
 \      /         ____     , -‐……‐--. . . 、          \ | | /
\           /     /. : : : : : : : :ヽ-‐.: :_;. --- .._: : : : : : : :\       \      /
_  争  も  _   /, -‐==ミ: : : : _,ィニ-‐……ー-: 、`ヽ、: : : : ヽ、      _   争   _
_  え  っ  _     . .:´: : : : : : : ≠: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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 15:36:03
>306
>301 は反csh派。>302 はcsh馬鹿。

310
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 16:34:31
tcshは< file catできるんじゃね?w
コメント1件

311
287[sage]   投稿日:2014/07/26 18:54:23
とりあえず、不適切なら □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" ネタが
火を吹いていると理解してます
コメント1件

312
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 20:11:42
>311
catが有効な場合もあり(あんたが引用したページにもある)、catを一切使うなと
言っているのではない。cat file一つ | するのはアホと言っている。

> また、インチキ引用の理由がよく分かりません。もう少し詳しくお願いします
上の三つは具体的なコマンドだったが、次の
> easy "intuitive" switching on the command line between different types input
は次行の
> cat<<EOF|cmd
の説明に見える、ところがcat <<EOFはヒアドキュメントなのでインチキと言った。
ちなみに、ヒアドキュメントは<<EOF cmdで用が足りるね
コメント1件

313
287[sage]   投稿日:2014/07/26 21:54:46
>> 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/
コメント2件

314
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 21:59:56
連投規制は特に問題でないと思うので >54 は省き、今までの長さに関して参考に
なる書き込みを挙げました

>50 ( F.2 までをみて ) 学習用文書はいらない。充実してても考え物
>66 長文すぎて読む気がおきない
>77 自分で勝手に決めて良い
>98 長くない。スレを立てる人が面倒で無ければ付ければ良い
>99 長いから何が困るってこともないが、議論で長文が続くのは迷惑
>100 100レス超のテンプレもある。大した事はない
>101 ( >71 では ) 短すぎかも
コメント1件

315
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 22:00:57
>99 は長い方のテンプレを否定する訳ではなさそうなので、特にレスが無ければ
長い方 ( >42-45 >47-48 >56-60 に >61-62 >313 の修正を加えたもの )
にしたいと思います
出来れば、さらに私の未熟な案を書き変えていただきたいです

特にテンプレ議論の為に別スレを設ける程では無いので、
>99 には申し訳ないですが、ここで続けさせていただきます。すみません

>98 >99 >100 >101 意見の衝突は、ある意味不快な思いをするものですが、
あえて書き込んでいただき、ありがとうございます

316
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 22:08:51
説明書みたいなテンプレが欲しかったら wiki に隔離して
そっちでやればいいんじゃないの

クソ長いテンプレを毎回コピペするなんて
シェルスクリプトを扱うような人間がやるもんじゃないと思うが
コメント1件

317
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 22:39:26
抜けていました
ポータビリティーを可搬性に書き変えます

>316
短いテンプレだと、
>71-72 に >313 の修正を加えたもの
もしくは、それに部分的に追加したものですかね

私は、wiki は別の場所だと思っているので作りませんが、
皆さんの意見が反映されたものになればと思っています

318
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 22:44:16
勝手にやってろって感じ

319
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/26 23:26:52
流れを止めて申し訳ない
さらにレスをいただいて、必要が有ればまとめたいと思います

>310 tcsh から、続けて下さい

320
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/27 01:32:50
>314
>100>101は明らかに冗談だろ

321
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/27 06:15:49
明らかとは言えないが、冗談ともとれる
冗談ともとれるが、しかしながら、
意見を聞いておいてこれは冗談でしょと、
勝手に、気軽に、決めつけられる程ではない

322
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/27 06:24:08
Q. シェルスクリプト は UNIX の勉強に使えますか?
A. シェルスクリプト は UNIX に慣れた人間が スクリプト言語を気取るのには向いていますが、
  UNIX の勉強には向いていません。
コメント1件

323
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/27 06:38:56
>322
UNIXの勉強って何だよ。

324
319[sage]   投稿日:2014/07/27 06:41:49
訂正
>100 は冗談を言っているのは確かだが、同時に意見にもなっている
その意見についてまで、冗談と切り捨てられる程はっきりしていない

>101 も、>100 を受けて冗談で発言したともとれる
とれるが、これも冗談と切り捨てられる程ではない

325
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/28 02:21:28
結局、どうやったらハゲないかの結論は出たの?

326
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/28 04:25:48
早く寝る

327
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/28 16:41:27
#!/bin/sh
#maemuki ハゲててもかっこいい有名人
#maemuki 渡辺謙 ブルース・ウィリス 竹中直人 所ジョージ ジャン・レノ
#maemuki ジェイソン・ステイサム ショーン・コネリー 西村雅彦
#maemuki ウィリアム王子 ジダン ユル・ブリンナー 松平健
#maemuki ショーン・コネリー ニコラス・ケイジ

case "$1" in
--maemuki)
 sed -ne '/^#maemuki / {s/^#maemuki //; s/ /\n/g; p}' "$0"
;;
*)
 echo 'ハゲの話が終ったら起こしてね'
;;
esac

328
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/30 22:13:48
expr 0 + 0の終了ステータスってなんで1なの?
コメント1件

329
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/30 22:16:09
>328
man expr に書いてなかったの?
コメント1件

330
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/30 22:29:24
>329
ありがとう
結果が0かnullの時は1を返すって書いてあった
そういう仕様ということか

331
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/30 23:34:20
exprにはそろそろご退場願いたいもんだ。
コメント1件

332
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/30 23:54:34
でも$(())ってshにあったっけ
コメント1件

333
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 05:43:36
exprの文字列処理は $(( ))ではできない。
コメント1件

334
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 09:13:26
そして expr 0123 : '\(.\)' のように、
文字列を切り出した結果が 0 になるときも 1 で終了するのであった。
計算で 0 になったときはともかく、
正規表現にちゃんとマッチしてるのにエラーっぽい終了コード返すのはマジで勘弁してくれ。

335
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 11:25:08
catで始めておくと、差し替えが楽だよね
zcatに限らず

336
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 11:29:08
そういう終った話題はいいです。

337
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 12:27:01
>332
Solarisもksh93になったことだし。
古い環境以外では、禁止してもいいだろ。
コメント1件

338
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 12:34:30

339
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 12:46:14
Solarisの basename/dirnameコマンドは、exprを使って実装されてる。

340
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 12:55:14
たぶん話がかみ合ってない。
シェルの中でループとか単純な計算をするのに、わざわざexpr使うのは、読みくくなるし速度も劇落ちになるので、使うなってことだろ。

341
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 13:00:58
そういう意味にはとれないな。
おそらく >331 は exprの数値計算しか知らなくて、数値計算は $(())にやらせて
expr自体退場(廃止)したいという意味で書かれたと思われる。

で、exprって文字列処理にも使うんだよ、、って指摘されて恥さらし。

342
名無しさん@お腹いっぱい。[sage]   投稿日:2014/07/31 13:08:50
libgmp使ってるexprだと、exprの方が数値計算も優秀だな。

$ expr 11111111111 '*' 11111111111
123456790120987654321
$ echo $((11111111111 * 11111111111))
-5670418394979206991 ←ww

343
名無しさん@お腹いっぱい。[]   投稿日:2014/08/03 06:41:46
$ echo '11111111111 * 11111111111' | bc
123456790120987654321
計算結果が、美しいな

POSIX でないけど正規表現でのマッチングなら、[[ str =~ re ]] もあるね

344
名無しさん@お腹いっぱい。[]   投稿日:2014/08/13 08:09:42
シェルスクリプトのシの字もわからない者です。
質問させてください。
シェルスクリプトはコマンドの集合体と認識しているのですが、可能かどうか。
また可能であるならばどのようにすれば書き方をすれば良いかお聞きしたいです。

複数のコマンドの出力結果を一つのシェルスクリプトにまとめた上で、一行で出力出来たらいいなと思っているんですが可能でしょうか?
コメント4件

345
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 08:17:49
>344
| tr -d '\n'
コメント1件

346
名無しさん@お腹いっぱい。[]   投稿日:2014/08/13 08:24:21
>345 さん
ありがとうございます。
ただこれが何を意味しているのかすらわからないです。
一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。
少しでも良いので説明してもらえないでしょうか?

347
名無しさん@お腹いっぱい。[]   投稿日:2014/08/13 08:47:45
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
コメント1件

348
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:17:30
>344
「シェルスクリプトのシの字もわからない」って要約すれば
「基本すら調べるの面倒だから一から十まで教えろ」ってことでいいんだよね?

349
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:20:18
>344
まずはこれを日本語に書き直してからだ

350
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:20:51
粘着されてもうざいから、答えてやる。意味は自分で調べろ。

{ cmd1; cmd2; cmd3; } | tr -d '\n'

351
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:29:03
>347-348
ありがとうございます。

352
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:48:16
ただこれが何を意味しているのかすらわからないです。
一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。
少しでも良いので説明してもらえないでしょうか?
コメント1件

353
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 10:52:56
挿入ネタはいいです

354
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 11:02:28
挿入ネタって何ですか?

355
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/13 13:53:13
いつもの釣りの人だろ。
相手しちゃいかん。

356
名無しさん@お腹いっぱい。[]   投稿日:2014/08/18 00:08:16
>352
trは標準入力から読み込んだ文字を置き換え、切り詰め、削除し、標準出力に書き込みます。
つまり結果を受け取り出力します。
この場合、いくつかのコマンド結果をパイプでtrに渡し、改行を削除して、まとめて出力しています。
最初の回答の man tr ... はtrのマニュアルから参照した説明です。
つまり、この方はtrを使うといいよと言っている。

しかし、あなたはこのことに何の目的があるのでしょうか?
よく分かりませんが、とにかく可能だということですね。

357
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 00:20:04
ぜんぜん意味を汲み取れない。
さぽせんの人って、こういうのを相手にしてるんだろうな。
大変だなすごいな。

358
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 00:22:28
>344, 354
なんでお前さんはそんなに挑発的な文章を書くんだ? 無自覚なのか?

まぁそれは置いておくとしても
お前さん自身は理論的に考え、説明しているつもりで「俺の言っていることを理解できないヤツがアホ」くらい思っているのだろうが
実際は自身の説明の仕方が悪いということくらいは気付いた方がいい

359
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 00:28:30
この方とかあなたとかが誰を指すのかさっぱりわからない。

360
354[]   投稿日:2014/08/18 00:40:35
354の私は通りすがりで、誰かに不快な思いをさせるつもりはありません。
本当に分からない人の気持ちも分かるから念のためと思い、書き込みました。
親切心です。失礼しました。(^^;

361
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 00:42:23
みんな混乱してカオスになっただけじゃねーかw

362
354[]   投稿日:2014/08/18 00:44:22
この方とは回答してくれた人で、あなたは350の質問者を指していました。

363
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 08:46:56
この説明で初心者向けと思ってるからITは怖い
コメント1件

364
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 08:51:01
この説明でわからないようなゆとり初心者は恐い

365
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 10:30:51
シェルスクリプトのシの字も分からないゆとりには、シェルスクリプトとはなんぞやから始まって種類、文法も教えなきゃいけないの?
時給とか貰えるの?

366
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 10:41:51
>363
んじゃ君が初心者向けに教えてあげてよ。

367
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 10:53:03
えー、
シェル、というのは貝を表す英語で、スペルはshellです。
UNIXにおけるシェルは、貝とは関係ないのですが、
むかし、サンOSというOSにあったサンビューというデスクトップに
シェルツールというウィンドウがあり、このウィンドウのアイコンには
貝の絵が書かれていました。
あ、、長くなるので今日のシェル講座はここまでにします。
ではまた来週。

368
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 11:07:46
それぞれ入力してあとは自分で考えな

普通に出力
echo hello

コマンドをまとめる
{ echo hello1; echo hello2; echo hell3; }

まとめたコマンドの結果から改行をなくす
{ echo hello1; echo hello2; echo hell3; } | tr -d '\n'

369
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 11:11:46
つshell=+貝殻

370
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 11:30:07
ドシロートがちょっと通りますよ…

$ 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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 11:30:53
> 複数のコマンドの出力結果を一つのシェルスクリプトにまとめた上で、

って書いてあるのをそのまま読み取ると
複数のコマンドを実行した結果そのものがコマンドになっていて
それを一つのシェルスクリプトにまとめたいと言っているように受け取れるかな
つまりシェルスクリプトを動的に生成したいのか?とか

372
名無しさん@お腹いっぱい。[]   投稿日:2014/08/18 13:23:56
じゃconfigureで

373
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 23:42:46
ありがとうございます。
ただこれが何を意味しているのかすらわからないです。
一応ネットなどで基礎的なものも見たのですがイマイチわからなくて。
少しでも良いので説明してもらえないでしょうか?

374
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/18 23:59:27
configure コマンドを使用すると、次のチーム プロジェクト設定を管理できます。

しかし、あなたはこのことに何の目的があるのでしょうか?
よく分かりませんが、とにかく可能だということですね。

375
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 17:44:32
設定済みtcshからzshに乗り換えました tcshではシンボリックリンクで cd ..したところパスが展開されて親ディレクトリに移動しました
zshに乗り換えてからはシンボリックリンクが置いてあるディレクトリに戻ります
どう設定すれば親ディレクトリにいけるでしょうか

376
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 17:52:31

377
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 17:56:52

378
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 17:56:54
>376 試したところ
リンクが置いてあるディレクトリに飛んで
パス展開、親ディレクトリ移動はされませんでした
解答ありがとうございます

379
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 17:59:32
>377 ありがとうございます!
まさしく求めていたものです

380
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 18:02:45
zshスレあるよ

zsh その7
コメント1件

381
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 18:19:48
>380 案内どうもです

382
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 18:46:21
せっかくのシンボリックリンク追従機能を無効にするのかよw
せめて cd -P でそのコマンドだけ一時的に無効にする方法にしとけよ。

383
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 18:53:28
Pオプションの意味を理解できてなかった なるほど
後々困るのも嫌なので>390 助言ありがとうございます

384
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 19:55:01
うーむ、目からうろこだな >390

385
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 19:56:54
何者なんだ>390

386
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 20:00:35
期待してるぞ。>390

387
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 20:01:16
3九丸不成

388
名無しさん@お腹いっぱい。[]   投稿日:2014/08/19 21:05:26
期待age

389
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 21:11:13
ksk

390
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 21:20:59
プレッシャードキドキ
コメント4件

391
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 21:52:25
 。 。
 / / ウロコじゃなくて目玉がポーン!
( Д )

392
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 22:10:00
 \                    /
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          わ た し で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-

    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \
 /    /    /       |    i,      丶     \

393
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 22:29:52
・・・・・・

394
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 22:33:08
がっかりだよ

395
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 22:59:17
ハイ、カイサーン

396
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/19 23:52:29
sedの使い方の質問はここで良いでしょうか?

397
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/20 00:04:59
↓これよりも、ここの方が適切だと思った理由は?
sed

398
名無しさん@お腹いっぱい。[]   投稿日:2014/08/20 00:04:59

399
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/20 00:05:29
>398
失礼しました。

400
名無しさん@お腹いっぱい。[]   投稿日:2014/08/20 00:05:34
2/100sで被ったわ

401
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 13:44:30
シェルスクリプトで、小数点を 切り上げ たいのですけども。
bc や awk など、どうやるにしても大変で、さくっとできるスマートな方法知りませんか?
コメント1件

402
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:12:52

403
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:16:02
>402
四捨五入じゃなくて「切り上げ」です。
しかも、そのリンク先の方法は知ってますし、それでは大変なのでもっとさくっとできるスマートな方法を質問してます。

404
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:18:41
あぁ、すまん。
なんか勘違いした。

405
399[sage]   投稿日:2014/08/28 14:22:46
ありがとうございます。
四捨五入のやりかたなので、読み飛ばしていましたけど…
アルゴリズム的には「切り上げ」ならば、0.999 を足せばいいのかな?
コメント1件

406
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:26:14
それだと 4.0001 が切り上がらないんでは。
コメント1件

407
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:27:08
>405
だめだろ。
でかい整数を引いて負にしてから小数点以下を削って同じ整数を足すか、
0から引いて負にしてfloorとってまた0からひくか。

408
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:32:24
シェルスクリプトだから、扱う数値はすべて正の数としていいよね。
小数点以下がすべて0か、または空文字列であることを判定して、
そうじゃない場合は1を加算、のアルゴリズムでいいと思う。
コメント1件

409
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:33:03
>408
> シェルスクリプトだから、扱う数値はすべて正の数としていいよね。
なんでそうなるんだw

410
399[sage]   投稿日:2014/08/28 14:37:03
どなたか本音を代弁してくれてたw

>406
そこは、欲しい精度まで 9 を追加する感じに。

他に思いつきですが、正規表現で [0-9]*.[1-9] で条件判定して整数の 1 を足す感じで試してみます。
これも、精度がほしかったら [0-9]*.[0-9][1-9] と増やす感じ?
今回は小数点第3位(ミリ秒単位)まであればいいので、どっちかで逃げてみます。
ありがとうございました。

411
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:43:01
>402よりだいぶ長くなったけど。
awk '{ n = int($1); if (n==$1) print n; else print n+1 }'
コメント1件

412
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:44:58
>411
あ、これ負の数のときだめだ。
まぁシェルスクリプトだから、扱う数値はすべて正の数としていいよね。

413
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 14:47:50
これでいいか。
awk '{ n = int($1); if (n==$1 or n<=0) print n; else print n+1 }'
コメント1件

414
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/28 20:09:05
>299
slも入ってると思うから確認してみろ

415
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 01:48:55
シェルスクリプトで精度求める気になれない。そこだけコマンド化する。
コメント1件

416
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 12:46:41
>415
そういう誰でもできる方法でいいなら
いちいちこのスレで聞かない

417
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 12:53:39
> シェルスクリプトで精度求める気になれない
などと意味不明の言葉を口走っており。動機は不明。

418
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 12:59:42
>413なら精度関係ないよ。

419
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 13:17:22
内部では倍精度浮動小数とかだろうけど、ulpが1を越えるような大きな整数だとどうなるんだろうな
コメント1件

420
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 13:39:48
>419
整数だから処理しなくていいんじゃないの?

421
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 13:41:25
整数堂々と勝負する。

422
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 13:53:59
bash考えたヤツって相当頭悪いんだろうな
コメント1件

423
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 14:00:39
>422
なんでそう思ったの?

424
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 21:43:45
>第4章 コマンドは、臆さず作れ。大人気ない大人にならぬために

1億人が同じ処理に別々のコマンド作ってたら・・・、どっちが大人げないかなぁ。。。

425
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 22:06:49
「1億人が〜」って言うのが大人気ない
コメント1件

426
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 22:09:34
>425
全世界で考えれば大した数じゃあないでしょ?

427
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 22:11:07
大した数だよw

428
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 22:21:31
時間軸ずらした「延べ」人数だったら?

429
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/29 22:40:32
あ、「延べ」じゃおかしいか
「世代別の実数」のほうがいいか

430
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 00:23:33
手を動かさなければ、いつまでたっても大人気ないコードを生みだすプログラマを卒業することはできないのだ。

431
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 02:55:29
新しい言語を学ぶために "Hello, world!" してる人に向かって
「Hello, world! を表示するコマンドは1億人が作ってるんだ大人げない!」
とか言わないよな普通

432
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 12:28:42
なんか大人げない話題が続いている
コメント1件

433
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 14:13:33
# 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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 19:14:19
hello, world

435
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 21:21:52
Linux全般に言えるのは、逆引きマニュアルのサイトが極めて少ないってこと
abc順なんてコマンド知った上での確認にしか使えないよな
やっぱこれでメシ食ってる人もいるから閉鎖的・保守的なんかいな
これもまた、技術は進んでも人間はー、だな
コメント1件

436
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 21:30:14
Linuxの話はLinux板で。

437
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 21:41:41
bashなんかをチョット使うためにネットで探す側にとっちゃUでもLでもどーでもいいわけで

438
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 21:50:07
なら「Linux全般に言えるのは」なんて限定つけなくていいでしょ。

439
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 22:01:03
>432
大人気ない話題, 大人気だな(ドヤ

440
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 22:10:08
>435
man -k

サイトが必要とされてると思うなら、お前が作ってもいいんだぜ。
コメント1件

441
433[sage]   投稿日:2014/08/30 22:11:53
わりーわりー、じゃあ「UNIX・Linux全般に言えるのは」に訂正ね

やれやれ・・・

442
433[sage]   投稿日:2014/08/30 22:15:41
>440
遠慮しときまーす
音楽再生するのにスクリプトが必要だっただけなんで
ほかの事に時間つかいまーす

443
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 22:41:00
果実を食い荒らすことしかしない奴。

444
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 22:54:58
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧
    /       ̄ ̄ ̄     ヽ         ,-v-、
  ( ̄ ̄ ̄ ̄ ̄月曜日  ̄ ̄ ̄)     / _ノ_ノ:^)
   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\    / _ノ_ノ_ノ /)<やぁ、気分はどうだい?
  /:::::::::: ヽ-=・=-′ ヽ-=・=-   /   / ノ ノノ//   夏休みは終わりだよ。
  ヽ:::::::::::    \___/     /   ノ ̄ ̄)____ノ
    ヽ__::::::::::::::  \/      /    /" / ̄   ノ
  /\\          //\   ヽ   ゙   ノ
 |   \\       //  |\ /`ー''"ー'
コメント1件

445
433[sage]   投稿日:2014/08/30 22:59:57
しかし幼稚なレスしか返ってこんねー
マジで小学生レベルだもんなぁ
話の趣旨に対して何の言及もないんだもんな
ま、しょっちゅう使ってる人が一番わかってて「何をいまさら」で、レスするのもアホらしいからスルーされてるんだろう、と思う

446
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 23:06:00
お前具体的な話何もしてないじゃん
煽りに対しては煽りしか返ってこないだろそんなもん

447
433[sage]   投稿日:2014/08/30 23:08:49
具体的にはこのスレの全員死んでほしいんだよ
コメント2件

448
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/30 23:11:02
rm -rf /

449
433 439 440 443[sage]   投稿日:2014/08/30 23:17:48
ははは、こりゃ幼稚園レベルだ。IDないからってなぁ
オトナゲナイどころの話じゃないねぇ
じゃあさいなら(433 439 440 443で発言したものでーす)


445 名前:433[sage] 投稿日:2014/08/30(土) 23:08:49.51
具体的にはこのスレの全員死んでほしいんだよ

450
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/31 01:19:27
小学生でも独学でサーバー構築できる時代ですし
小学生が常駐してても何もおかしくはない

そんな時代なのに情報の探し方を知らない大人はいなくならないんだよなぁ

451
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/31 02:34:39
>447
自殺はよくないぞ。
俺は一応止めたからな。

452
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/31 18:47:03
# iif cond cmd1 [cmd2]
function iif()
{
if eval "[ $1 ]";then
eval "$2"
else
if [ $# -eq 3 ]; then
eval "$3"
else
:
fi
fi
}

453
名無しさん@お腹いっぱい。[sage]   投稿日:2014/08/31 18:54:52
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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/03 19:17:02
羽ばたきは反則だろw

455
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/03 20:25:11
そう?

456
452[sage]   投稿日:2014/09/04 10:58:52
ごめんごめん、鳥人間コンテストの誤爆 orz

457
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/06 09:02:25
過疎ってきて、残念だな

比較的短時間でレスが付くが、住人同士の書き込みはないし
ひたすら質問を待っているようだが
>444 >447 の様な調子だと、気味悪くて、質問とか出来ないよね

458
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/06 09:13:54
挿入ネタはいいです

459
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/06 13:27:08
既読スルー

460
119[sage]   投稿日:2014/09/06 17:32:44
お久しぶりです119です。その節はお世話になりました。また質問させてください。
「dropboxとevernoteに同じpdfファイルがあったらdropboxのを削除」ってなんとか
自動化できませんか?多分できないかもですが200本ぐらいあって嫌気が差して。。。
今度はubuntu14.04です。geeknoteのインストールはできました。
よろしくお願いします。
コメント1件

461
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/06 19:25:15
geeknoteってテキストしか取得できないんじゃなかったか
evernote APIを直接叩いてファイルハッシュを取得した方が確実では

462
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/06 19:47:39
未読スルー

463
119[sage]   投稿日:2014/09/06 22:44:57
ふええ

464
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 00:53:04
cronとかで定期実行
md5sumなどで同一性のチェック
rm で削除か?

pdfだけなら同一性のチェックはファイルネームとサイズだけ見ても大丈夫かもしれない
コメント1件

465
ジジイ[sage]   投稿日:2014/09/07 01:19:39
助けてあげたいが、dropboxとかevernoteとかそんなハイカラなものは使ったことがないし
どんなものかも知らない 

466
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 07:57:58
evernoteならen-mediaタグかどっかにmd5持ってた気がしたから
ファイル名で検索→ノート取得→ハッシュ値取得が楽だと思う

dropboxはシェルスクリプトでいけるけどevernoteは面倒だな
俺ならRubyで書いてしまう
コメント1件

467
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 10:23:46
>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の手順で問題ないと思うけどどうだろうか
コメント2件

468
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 11:01:38
>467
自分が吐いた決め打ちフォーマットじゃないんだから
一般的なXMLとして扱うのが普通じゃないかな?
xmlにgrepとか笑い話だよ
コメント2件

469
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 11:36:30
>468
em-mediaタグのtype見てhash値検索するように改変してくれてもいいのよ

個人利用レベルなら hash="" だけで十分でないかと思うけどね
Enexファイルは数十GB以上になることだってあるんだろうし、できることなら高速な方がいいでしょ

470
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 13:08:07
>460
fuseとかでmountされてるなら簡単そうだ。

471
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 13:13:22
>468
xmlstarlet sel -t -v //hash
とかか。
値のマッチってどう書くんだっけ。

472
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 13:15:48
hashは属性か。
//en-media[@hash=値]
だっけ。

473
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 14:51:02
xmlstarlet sel -t -m "//en-media[@type='application/pdf']" --if "@hash='<PDFファイルのMD5>'" -c . -n

正規表現並にソラで使えるようにならないとな。
コメント1件

474
119[sage]   投稿日:2014/09/07 15:15:43
レスありがとうございます。勉強します。

475
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 15:46:39
>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
コメント2件

476
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 15:56:20
>475
修行中なので詳しい訳ではない。
ストリーム処理だと思うから、深さの方が関係ありそうな気がするけど。
あとは-nの前に-bを入れてみるとか。

477
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 15:59:06
馬鹿でかいtext nodeがあるのか。

478
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 16:42:53
xmlをgrepしたらいけないの?

479
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 17:47:26
evernote ってバイナリを base64 で保存してるんでしょ?
とんでもないサイズの値があっても不思議ではないな

480
119[sage]   投稿日:2014/09/07 17:51:49
お世話になります。なんかわかってきました。
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ファイル名がばらばらのがあります。
のでハッシュ値を使うしかないみたいです。
コメント2件

481
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/07 19:07:01
>480
grepしちゃいけないってことはないけど、順番が逆だったり、変なとこに改行あったりで、やりにくい時もある。だから自分はxmlstarletも慣れるため、なるべく使ってる。

>480
xmlstarlet valで出るエラーなら、ちゃんとしたxmlでないのかも。どのルール(dtd)使うのかが一致してなさそう。無視するオプションもあった気がするけど。
無理にxmlstarlet使う必要はない。
コメント1件

482
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 09:25:12
>574
たまにやるからいいのよ。普段は服きとけって思うもん。
んで、たまーに特別企画で脱ぐ。

むしろすっぽんぽんにならなくていいよ。

まあ、でも、服着てる写真が一番ってのは同意。
コメント1件

483
[sage]   投稿日:2014/09/08 10:03:15
>482
お前ときたら...

484
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 11:42:58
わざと誤爆してスレ活性化って最近はやってるの?

485
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 13:01:45
流行ってないよ。

486
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 13:10:13
じゃあはやらせようね

487
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 13:37:07
>574 の貼る画像に期待。

488
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 20:48:30
>481
トンクス
試してみる、そのツール

489
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/08 23:33:21
もう板全体を3人くらいしか見てないからなぁ

490
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 00:47:47
それはないやろ。Unix板、200人くらいは書き込んでると思うけど
コメント1件

491
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:32:23
>490

俺とオマエだけだよ、あとは犬板

492
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:36:45
んなわけないだな

493
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:36:46
DOSの操作性を超えたunixはありますか?
コメント2件

494
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:37:15
>493
unixの操作性を超えたDOSってある?
コメント1件

495
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:38:39
そういう意味じゃなくてunixって未だにDOSの操作性を超えてませんよね?
コメント1件

496
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:42:46
zshよりcommand.comの方が操作性に優れるという人現る

497
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:42:50
>494
改変コピペにかまうな

498
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 10:43:29
>495
そう思ってる人に、超えるUNIXは無いだろうね。
あくまでも君の評価規準なわけだし。

499
名無しさん@お腹いっぱい。[]   投稿日:2014/09/10 10:46:26
そういう意味じゃなくてunixって未だにDOSの操作性と同等レベルという意味だろ
コメント1件

500
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 12:21:16
Disk Operating System ?

501
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 12:39:07
構うな構うな

502
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 13:28:40
>499
VUEって知ってるか?

503
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 14:30:43
このスレ、俺とお前の2人しかいない説、間違いであることが
釣り師によって暴かれたw

504
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 14:40:01
なるほど。釣り師含めて3人しかいないんですねw

505
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 14:43:45
いや、俺で5人目。

506
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 14:56:25
全部多重人格のお前

507
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 14:59:22
>493
先に「DOSの操作性」を定義してくれ。Appleが Mac出した頃に言ってたやつか?

508
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 15:16:50
操作性どころか機能性で劣ってる

509
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 17:16:24
どのDOSのこと言ってるの?

-- DOS --
MS-DOS
PC-DOS
FreeDOS
QDOS
DR-DOS
PTSDOS
AppleDOS
AtariDOS
AmigaDOS
Commodore DOS
コメント1件

510
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 17:27:55
-- 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
コメント1件

511
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/10 20:43:27
10年ぶりにLinux戻るので『入門bash第3版』を買った
ニュースグループ comp.lang.shell を購読していた頃は
bash の知識が維持されていたんだけどな
コメント1件

512
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 01:44:35
>510
日本での話なんだからUni-OSに決まってルナ
うんぬは言わせない。
ちなみに私の名前は中野です。
コメント1件

513
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 01:52:05
>512
無論だな

514
名無しさん@お腹いっぱい。[]   投稿日:2014/09/11 01:55:58
遅くまで起きてなくてもいいんですぜ
追い上げですね

515
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 03:48:41
unix-osってあったのか。初耳。シグマプロジェクトがらみ?
パナ、ファコム、内田洋行

516
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 07:28:53
>509
VSEは?

517
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 10:47:38
>511
板違い。

518
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 16:09:20
最近年取ってきたから、10年前とか2〜3年前くらいの感覚でやばい。
ニコニコ動画で グラディウス5 の画面みて「最新のゲームって超絶すげー」とか感心してたら
10年前発売の旧作だと知りショック。そりゃPS2だもんな。昔のはずだよ。

519
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 17:15:47
そういえば2〜3年前くらい前の今日、アメリカですごい事件あったよね?

520
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 17:20:28
雑談はよそでやれ

521
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 19:55:30
そういえば今日じゃないけど5〜6年前くらい前、ドイツで壁壊し祭りみたいなのあったよね?

522
名無しさん@お腹いっぱい。[]   投稿日:2014/09/11 22:28:03
動いてる、動いてるよぉぉ

523
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/11 22:34:34
生きてるわ

524
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 00:21:23
kshってどうなの?業務で使われているのか?
AIXのデフォルトがkshだっけ

525
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 00:35:56
Linux以外はkshなんじゃないの?
cshで仕事をするアホはいないだろうし。

526
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 02:33:21
うちはよく使ってるよ
bashとほぼ変わらんと思ってる

527
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 02:37:45
MacOSXはLinuxでもないのにbashデフォだな

528
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 03:23:37
10.4からbashになったんだったかな。その前はtcshだったと思うw
マニアックすぎる。

529
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/12 08:09:32
今はオリジナルのAT&T kshがオーブンソース化されているね。
http://www.kornshell.com/

530
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/13 19:03:41
オーブンソースか。

531
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 03:56:07
シェル(貝)がオープンでソースかけられてるって?
うまそうだな

532
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 06:06:08
挿入ネタはいいです

533
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 10:06:24
529はぶっけかけの方じゃないか?

534
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 17:11:01
今シェルについて勉強してます。
どなたかash、bsh、cshの違いにつ
いて教えて頂けませんか?

メリット、デメリットがわからず、どれを使って良いのかわかりません。

自分で調べろやは無しでお願いします。
コメント5件

535
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 18:21:28
勉強してるんなら自分で調べるべきだろ。

536
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 18:34:45
挿入回答はいいです

537
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 19:04:37
>534
bshっていうとbeansh、javaのシェルじゃないか。bashの間違いだろ。
cshはともかく、便利なbashと、互換性のあるashは両方使えばいい。
csh使うならtcshとかzshの方がいいんじゃないか。
とりあえず、ついてんの使え。

538
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 19:05:30
>534
あとdashとkshも忘れるな。

539
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 19:08:29
宿題は自分でやれ

540
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 19:44:39
bashにしろって言ったら「仕事では(t)cshを使うことになった!だまされた!」って言うだろうし
cshにしろって言ったら「いまどきcshなんて使ってない!だまされた!」とか言うんだろ?
どうせそうなんだろ?

541
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 20:17:27
>534

a b c で並んでいるけど、基本ば sh (bourne shell) か ksh あたりな。
別にどれつかってもそんなにかわらないが、zsh だけは他と違いすぎるのであくまで趣味で。

スクリプト書くのでなければ csh でもいいが、基本は ksh bash だよ

542
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 21:50:14
>534
改変コピペ
SSH その8

543
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 21:50:21
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 22:24:54
改変コピペにマジレスしても無駄。

545
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/14 22:48:05
ログが残って、これからUnix業界に入ってくる新人が同じ質問してググって
ひっかかるから意味あるにょ

546
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/15 02:08:57
メリット、デメリットって聞くのはゆとり世代なんだよなぁ。
BシェルであることがメリットだがBシェルであることがデメリットだし
CシェルであることがメリットだがCシェルであることがデメリットだし
個性のあるものや違いのあるものは、それ自体がメリットとデメリットを
兼ね備えてるんだから、そんなメリットをキニシナイで「何が違うか」
を追求すればいいのに。

547
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/15 03:36:26
トートロジーとかいらね

548
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/15 13:59:14
Cシェル使ってても、Bシェル(系)の読み書きは必須。
でも、逆はそうでもない。
Cシェル覚えるのは、実際にスクリプトにぶつかってからでいい。


549
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/15 17:13:35
そんなのにぶつかったら、cshは知りません。といって窓際ジジイに振れ。
ジジイから仕事を取り上げてはイカン。

550
名無しさん@お腹いっぱい。[]   投稿日:2014/09/16 13:45:24
As soon as he starts to gently stroke my hair, my shell begins to open.
優しく髪をさわられるやいなや私の貝が開くのです
                             竹内由恵

551
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 14:01:09
そういうよくある男女の日常はいいです。

552
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 14:58:11
彼女は上付きでやたらでかい栗あるよ。

553
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 15:01:24
そういう彼女の正規表現はいいです。

554
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 16:39:08
健全でない言葉が含まれているため表示しません 内容を確認する

555
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 16:39:59
そういう直接表現はいいです。

556
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 16:49:16
健全でない言葉が含まれているため表示しません 内容を確認する

557
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 17:03:44
そういう話はどうでもいいです。

558
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 20:24:42
職場の若い男の子に1回だけ許したら主人のより大きくて、、

559
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/16 21:15:35
おいおい困るよー。
男の子のインスタンスを参照外しをしてくれ。

560
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 02:01:03
下ネタは俺ももういらん。楽しいからずっと続いてしまう。

561
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 02:06:24
下ネタって楽しいものなのか
男だけどおっさんの下ネタとか聞きたくない

562
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 02:21:47
下ネタは長葱が有名だね。

563
529[sage]   投稿日:2014/09/17 04:18:24
貝をオーブンで焼くっていっただけなのに、なぜか続くな。
正規表現とか出てきだすと、もう sed で 置換 しちゃいやよとかとまらんからもうやめれ。

564
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 07:05:23
OK、俺には早すぎるスレだった

565
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 14:51:28
シェルスクリプトの話題

MacOSXで意外と良い機能 automator 使ってる人いる?
アレ、他のOSにも広がるといいのだが。

566
名無しさん@お腹いっぱい。[]   投稿日:2014/09/17 17:29:57
automator?
kwsk

567
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 17:48:24
ggr

568
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 17:51:18
MacのGUIによる自動化ツールじゃなかったっけ?
Apple製品で固められたソフトウェア環境で、Appleの考えるUXに従う操作を自動化する的な奴。
Appleの考えるUXの範囲の操作しか出来ないし、Apple製品で固めなきゃ駄目だから広まらんだろう。

ただこれシェルスクリプトの話題か・・・?

569
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 20:42:46
リモートから、なんちゃらスクリプトでitunesのコントロールとかしてたことはあるけど、何だっけなぁ。

570
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 20:46:02
ぐぐったらosascriptってコマンドっぽい。中身はapplescript。automatorからも使えるらしいから、その話かな。

571
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 22:18:52
ごめん、勘違いだったわ。Automatorってシェルスクリプトかと思っていた。

572
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/17 23:25:58
Windowsで言えばcomオブジェクトを使うPowerShellスクリプトを生成する
GUIのウィザードみたいなもの?インタフェース情報を日本語で出してくれると
確かに便利だと思うが... スクリプト?

573
名無しさん@お腹いっぱい。[]   投稿日:2014/09/18 01:59:22
自分の「ユーザー名だけ」を得るにはどうやればよいのでしょうか。
今はこうしてるんですけど何かコマンドありますか?

expr "`id`" : 'uid=[0-9]\{1,\}(\([^)]\{1,\}\)'
コメント6件

574
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:07:48
echo $USER
コメント3件

575
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:08:10

576
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:08:46

577
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:10:38
>573
なんでそんなに面倒くさいことやってるの?
せめて help くらい見ようとは思わないの?
コメント2件

578
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:12:11
>577
何のhelp?
コメント2件

579
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:12:11
>577
そこのレベルに行くまでのステップとしてこういうスレが必要

580
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:15:30
>578
id

581
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 02:20:51
>573 が expr と正規表現さえ知らずにいれば
もっとシンプルな答えに辿り着けたんだろうな

582
名無しさん@お腹いっぱい。[]   投稿日:2014/09/18 02:45:03
皆さんありがとうございます。
man id は一応読んだのですが、-n だけやって出ねーじゃんと怒ってたのでした。
ありがとうございました。
コメント1件

583
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 12:19:41
>578
へーあにーそんばで
へーなじゃあにばで
へーゆのあにさーわん
へーぇ
うえないわずんが

584
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 12:28:45
こういうのおもしろいと思って書いてるのかな

585
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 12:31:53
面白さを期待して2chを開いたら負け

586
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 21:29:39
>582
そういう質問良いと思うよ。説明する方も勉強になる。
この過去ログがどこかにストックされて、またいつか誰かが読む。

587
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 22:05:19
本人乙ω

588
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 22:21:33
$whoami
>575

589
584[sage]   投稿日:2014/09/18 22:22:09
$whoami
>575

と書いておくべきだったかな。

590
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 22:40:14
$ who am i
$
あれ、いつからこうなった?
コメント1件

591
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 23:25:45
>590
whoの結果は?
コメント1件

592
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/18 23:44:55
who mom like

593
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 06:29:35
>591
$ who
myname tty8 2014-09-13 10:21 (:0)
$ who am i
$ who mom likes
$ whoami
myname
$
でした。

594
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 06:37:03
>576
Solarisのidコマンドには -u や -n のオプションがないんだよ。
しかもwhoamiコマンドも/usr/ucb送りだからインスコされてない場合が多い。

よって、>573 みたいにするのが最善。

595
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 06:52:46
>574
$USER は、その時点のuidがセットされているとは限らない。
たとえば su したとき、rootにならずに su前のユーザー名のままになる。

596
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 07:28:44
なんだ、>573って超上級者かよ。素人がとんでもない暴走をしているように見えた。

597
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 07:30:54
basename $0 をポータブルにするために ${0##*/} に書くのと同じ感じ?

598
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 07:35:31
>573 はもうちょっと簡単に書けるだろ

expr "`id`" : '.*uid=[^(]*(\([^)]*\))'

ちなみに uidのところを gid に買えて id -gn の動作にもできる。

599
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 07:43:55
どうでもいいことかもしれないけど、Unixのこの手のシェル芸は顔文字に見えてしまうことがけっこうある。

(*.*) すべてのファイル
コメント1件

600
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 07:59:02
id | (IFS='()' read u n o; echo $n)

601
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 08:18:30
(IFS='()'; set `id`; echo $2)

602
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 09:04:43
>599
すべてのファイルなら*でよいのだが

603
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 09:39:40
DOSの人か。

604
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 09:57:33
逆に、「拡張子のないファイルだけ」を表すのが難しかったりする

605
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 10:03:59
例えば
fileA fileB
・・・
*** ×××
=== ÷÷÷

とあった場合、ループ処理を行いながら1行ずつ結合するにはどのようにすればいいのでしょうか。
コメント5件

606
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 10:19:02
>605
paste fileA fileB
コメント2件

607
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 12:22:12
>605
スクリプトでやると意外と面倒くさいな

608
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 12:49:08
こういうことがやりたいの?

exec 3< fileA
exec 4< fileB

while
read a <&amp;3; st_a=$?
read b <&amp;4 || [ "$st_a" = 0 ]
do
echo "$a $b"
done
コメント2件

609
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 12:51:38
この板って&が化けるんだ、、

610
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 13:07:14
>605です。

>606 >608のお方、ありがとうございます。

最終的にやりたいこととしては
複数のファイルの中にあるものを連結させるのと同時に先頭や間に文字列を追加。
さらには連結させた一行一行がコマンドとして一括実行出来ればと思ってるんですが中々良い方法が見つかりません。
コメント2件

611
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 13:11:13
perlか何かで書いた方が楽そう。

612
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 13:13:40
>610
だったら >608 の方法でいいじゃん。これベースに必要な処理を書き加えるだけ。

613
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 15:35:05
>610
そういうのはEXCEL使えば一瞬で終わることがある。
Unix使いだが、Excelも愛用している。
コメント1件

614
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 15:46:53
excelの起動が一瞬でないのに

615
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 15:51:02
彼がスクリプト書くのに悩む時間よりは短いんだろう

616
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 15:59:07
なんでも無理にスクリプト組む必要はないと思うぞ。業務の場合は特に。
勉強目的なら時間かけて考えるべきだが、
業務の場合はスピードが求められるから、いろいろな方法でやればいいじゃん

617
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 16:03:29
>613
連結させた各行を(UNIX)コマンドとして実行したい、と言ってるのに、
EXCEL(笑)でやるってアホか
コメント1件

618
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:13:35
エクセルとかアプリも使って良いなら、 >606 の時点で終わってるわけだが。
コメント2件

619
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:33:28
>618
どういうこと?
コメント1件

620
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:34:19
>618
うむ、俺もなぜ paste がスルーされたのかわからん。
pasteがスルーされてるからEXCELを提案したが

>617
テキストファイルを交互に読み込ませるなどの場合、
EXCELでデータのインポートをして、セルの操作で一列に並べて

cat file1a
cat file2a
cat flle1b
cat file2b
cat file3a




それをコピーして、

#!/bin/sh
の真下にコピペして冗長なスクリプト流して一瞬で作業が終わる時とかもある。
急ぎの場合は、EXCELで済むときはそうやってる。

ただし、スクリプト書く方が早い場合と、EXCELでスクリプト作った方が早い場合の
見分けなんかはある程度経験値がいる。
コメント1件

621
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:35:19
EXCELやEXCELのマクロを使ってやる時もあるし、
テキストエディタのマクロを使ってコマンドを作る時もあるし、
シェルスクリプトを書く場合もあるってこと。

622
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:44:02
>619
アプリに依存しないでshだけで動く必要がある場合もあるから。配布の場合とか。
自分の手間を省くためのツールなら、何でもありだから、
プリインストールのexcelを起動する前に、pasteをインスールして実行できるんじゃないかという勢い。
コメント1件

623
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:48:56
やっぱEXCELとか使ってると無能になるんだな。

624
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:49:06
pasteじゃうまくいかなかったんじゃなかったっけ。

625
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:51:54
pasteをわざわざインストールしなきゃいけない環境ってあるの?

626
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:57:33
後出しの追加仕様があっただけだろ。
それがevalとかの内容だったのに、そこで更にエクセルの方が、とか言ってる
餌が登場で、元の話はどうでもよくなってる空気

627
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 19:58:21
>622
EXCELで作った冗長スクリプトってどこでも使えるよ。
EXCELが無理ならEmacsで作ればいいし。

628
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 20:00:54
25歳。
エクセラー、Microsoftの回し者と呼ばれる俺だけど、みんなもMOS受けてみなよ。
超お勧め。

つか、>ループ処理を行いながら1行ずつ結合するにはどのようにすればいいのでしょうか。

これをやったらみんな満足するってことかな。
元のテキストのサンプルくらいははってほしいよな〜と
コメント1件

629
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 20:07:20
人生の選択に失敗したからって人を巻き込もうとするなよ。

630
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/19 20:15:16
>628
> 元のテキストのサンプルくらいははってほしいよな〜と
>605にあるじゃん。

631
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 00:32:19
excelってコマンド起動で引き数渡しても結果吐き出してくれたり
すんの?
だったら使いたいなぁ。
Windowsにマウントかけたり日本語ファイル名使われたり
いろいろ面倒なんだよな。
excelでフィルタ処理かかるならそれで良いわ
コメント1件

632
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 00:54:04
CSV を直接いじるより Excel であーでもないこーでもないと
試行錯誤しながら加工・集計・グラフ化した方が楽な時もある

マクロの自動記録を使えば GUI 操作を手順化して VBA 出力できるし
その VBA を Ruby や Python から呼ぶって感じで使えば
シェルスクリプトからバッチ処理として呼ぶことも出来る
コメント1件

633
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 00:57:57
>60
いいな、これ。

paste だと、おなじ行数だけコマンドを記述したファイルを用意しないと…なので
いちど Excel に貼り付けて concatenate やら & やらで組み立てて流し込んでた。
素晴らしい。
コメント1件

634
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 01:02:38
>633
60 じゃなくて 606 だw

関係ないけど、サーバごとに中途半端な差分が必要なコンフィグとか
Excel から FSO でコンフィグを吐き出させたりしてる。
vbLf が心の友。
コメント2件

635
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 01:24:27
>634
わかる

Excel がエディタ兼シェルスクリプト生成ツールになってたりする

636
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 01:40:04
>634
git使えよ

637
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 09:32:44
excelでテキスト操作とか嫌がらせにもほどがある
コメント1件

638
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 09:53:30
execlしか使ったことない。execvの方が多いか。

639
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 10:34:06
>631
CSVやテキストデータの読み込みなんて大昔からついているし、
ソートとかセルの操作をVBAやショートカット、関数などを組み合わせて
手早く処理をすると、シェルスクリプトを書くよりも簡単にコマンドの羅列なんかを
生成できるので、それをTeratermからスクリプトとして登録したり、
NFSやSMBがあればマウントしてもいいし、メールで送ってもいいし
なんしどうにでもできる。

>632
Mac版のExcelもアップルスクリプトやVBA使えるし、いろいろ
拡張されていて、思わぬ機能や使い方がしれっと搭載されていたりするよな。

>637
馬鹿にしてないで深みに入っていくとEXCELは無現の可能性を秘めているソフトだぞ。
ゲームも作れる、イラストもかける、大よそなんでもできる。
知り合いは、VBAでマクロを組んで、客が欲しいCGIを選択肢を選んでカスタマイズ
していけば、自動でPerlのコードを生成するプログラムを書いていた。
そいつは自営業・フリーランスのSEだけど、客の50万円100万円くらいの
依頼をそのシステムで半日でくみ上げていて、偉いやつだなと思ったぞ
コメント2件

640
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 10:39:57
ここは「シェルスクリプト総合」スレなんで他所行って下さい
コメント2件


641
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 11:06:18
>640
そもそも事の始まりはあいまいな質問を出した>605に問題があるだろ

シェルスクリプトでやるより他の方法が良いよ・・もまたシェルスクリプトのスレにふさわしい話題だ。
文字列処理ではC使わずにPerlつかえよってアドバイスとかも有効だろ
コメント1件

642
名無しさん@お腹いっぱい。[]   投稿日:2014/09/20 11:33:52
expr で拡張子を除いたファイル名にって時
これは期待通りだけど、

$ expr "/tmp/hoge.txt" : '.*/\(.*\)\.'
$ hoge

数字だけのファイル名だとこうなっちゃうのね・・

$ expr "/tmp/0001.txt" : '.*/\(.*\)\.'
$ 1
コメント3件

643
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 11:35:17
>641
そこまでで終わってればよかったんだけどな。

644
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 11:37:05
>642
うちではならない

645
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 11:39:52
>642
どこの expr よ? バグじゃないの?
ちゃんと 0001 になるよ。

646
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 12:19:08
>642
OSX だけなった。なんだこれ。
コメント1件

647
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 12:43:01
変数代入必要だけど、expr使わずにこうしろということか。

$ f=/tmp/0001.txt; f=${f##*/}; echo ${f%.*}
0001
コメント1件

648
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 12:45:12
>646
え? 0001 になるけど

$ expr "/tmp/0001.txt" : '.*/\(.*\)\.'
0001

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.4
コメント1件

649
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 13:27:17
>648
ProductName: Mac OS X
ProductVersion: 10.6.8

さっさとアップグレードしろって事かな。めんどくせー。

650
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 21:06:24
Mac用のパッケージマネージャとかあるんだから新しい入れれば良いんじゃね?

651
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/20 21:53:15
シャッチョさん、新しい入れるー?

652
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 01:11:35
>639
MS Officeが便利なのは否定しないけどスレチなのは何とかしようよ。
>640
Excelをシェルスクリプトで操作する例を出してくれればそれはそれでアリなんだけどな。
xlsファイルとかにスクリプトを記述するのはシェルスクリプトじゃないスクリプトなんで却下で。
ExcelはCOMで操作できるし、wshとかPowerShellでやっても良ければ楽勝なんだけど、
wshはshとついてるけどシェルじゃないし、PowerShellは一種のシェルだけど…このスレ的には有りか…?
コメント1件

653
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 01:44:24

654
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 01:56:48
>653
専用スレはどこかって話じゃなくて、
このスレ的にはPowerShellのShellはShellScriptのShellとして扱っても良いのかって話でしょうが

655
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 02:05:07
$ 場違いなのは\
$ 間違いない
zsh: command not found: 場違いなのは間違いない
コメント2件

656
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 02:14:51
>655
% zsh なのに何で $ にしてるの。
zsh: can't open input file: なのに何で

657
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 02:35:03
つまらないよ

658
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 02:37:59
>639
なんか意味がわからないけど

例えばsedとかを多用してデータ編集やソートや改行編集を
する簡単なスプリクトを組むとするじゃない。
コレをUnixでは コマンド ファイル名
とかで流せば自動生成されてファイルをいじれるよね。
ワイルドカードやスケジュールも取りながら。
これをexcelでも内容のマクロにデータを吸わせて処理させて吐かせられるの?
例えばexcel.exe マクロ名 ファイル名
とかいう引数で処理できちゃうのかな?

ちょっと種類多いファイルで大きなデータ量の自動編集でのフィルタの様な
仕事を良く書いてるんで、excelで通せるなら成形の拡張性も大きいし利用したいのよ。
引数でワイルドカードのデータを与えられないなら無理なんだわ
手作業でexcelに吸わせて吐かすような時間ないから。

もしかして開いたexcelのマクロ上でワイルドカードの吸い込みと吐き出しの
自動処理ができるのかな?
それならスケジュールに組めなくても1作業で処理できそうだが。
コメント3件

659
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:13:05
>658
>620で書かれているけど611はその場で必要なスクリプトを素早く作る為のツールとしてエクセルを話題に出したように思える。
バッチ処理を想定していなかったんしゃないの?
コメント2件

660
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:31:27
>658
WindowsならCOMを叩けばGUI触らずにExcelで色々な処理させる事ができるんだけど、
COMを複数回のコマンド実行の組合せで操作する方法は聞いたことがないんだよなぁ…
標準入出力を経由しての生成した・されたCOMオブジェクト受け渡しが出来んと、
ワンライナーが本体な事になってシェルスクリプトらしくないし、どうやれば上手く出来るだろう。

>659
その時点ではそうかもしれんけど、そっから先はExcel便利って言ってるだけだからな。
このスレでそういうということはシェルスクリプトからExcel操作できるに違いない的な?(多分違う)
コメント2件

661
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:36:17
>659
そういうことなの?
スクリプトはすぐに書けるから関係ないんだよなぁ。
精製されたデータをフォーマットや利用都合に併せて
編集改ざんするだけなんで。

>660
たとえばexcelのマクロファイルのショートカットを置いて
そこにエクスローラで大量につかみ取ったファイルを
ドロップしたら、規則に従って自動生成されたファイルが
書き出されるだけでも良いのだけど。
コメント1件

662
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:36:21
>658
すれ違いなのでこの辺りでやめておくが

>手作業でexcelに吸わせて吐かすような時間ないから

Excelでも中級以上になるとそうそう早い作業が行える場合もあるわけさ。
それが前提でシェルスクリプトでここで質問するレベルの場合、

1.シェルスクリプトを習得することが目的
2.作業をはやく終えたい

2が目的の場合、EXCELでやったらいい場合もあるよってお話。
それを必要以上に掘り下げると延々とすれ違いの話題が続くのでやめておくわ。

663
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:37:46
>660
それこそ、WindowsでUnixのシェルスクリプト使えばできるが、まあこの辺でやめておこう。
cygwin sfu sua mkstoolkit powershell applescript とかいろいろ方法はあると思う。
コメント2件

664
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 03:45:47
冷静に考えて、EXCELで生成したバッチを張り付けて長すってのも
シェルスクリプトの問題解決手法の一つの話題かもしれん。
俺以外も何人か「たまにやる」って書き込んでるし。

同じ感じでEmacsとか秀丸のマクロを使うとかもやる。
肩の力を抜いて何が何でもシェルで制御みたいな使命感からの解放というテーマ
コメント1件

665
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 06:32:06
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 09:16:08
>655
なんで\付けてるのにプロンプト出てくるの?

667
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 09:18:33
PS2='$ '

668
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 12:28:44
>661
WSHスクリプトにファイルをドロップしてそこからExcelのCOMオブジェクト作って
処理させるのは余裕の筈だけど、名前にsh付いてるだけでシェルスクリプト関係ないっす。

>664
テキストエディタの矩形選択と正規表現置換だけでも結構色々出来るね
引数が不変だとか、その場で一度やれば終わりな作業ならこれで済ます

669
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 19:37:15
こんばっしゅ(bash)

標準出力と標準エラー出力、標準入力から入力した文字列を
コンソールとログファイルに出力させたいです。良い方法ありますでしょうか?

お願いします。

# これだと標準入力から出力した文字列が出力されないんです・・・
exec &> >(tee ${logfile})

670
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 19:59:15

671
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 20:12:34
>670
ありがとうございます
script だと、プロンプト部も出力されてしまうんですよね

すみませんが、どうにか script 以外で実現する方法はないでしょうか?

672
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 20:52:36
exec < <(tee -a $logfile)
exec > >(tee -a $logfile) 2>&1
コメント2件

673
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 20:53:45
>標準入力から入力した文字列をコンソールとログファイルに出力させたいです。

とはどういうこと?readコマンドとかのお話?
コメント1件

674
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 20:54:55
すみませんが詳しい方のみ回答をお願いします

675
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 21:23:04
いや、お前の質問の仕方が悪いんだろ?

676
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 21:23:31
態度悪いから教えてやらねえ

677
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 21:33:25
>672
ファイル名は別にする方がいいと思う
コメント1件

678
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 21:34:11
>673
そうですね。
read コマンドで入力された文字列がログに出ないので困っています。

格納された変数をファイルにリダイレクトすれば、暫定的に対処できるのですが
それだと一時凌ぎにしかならないので・・・
コメント1件

679
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 21:39:09
>672
おお、なんかそれっぽい!
手元にUNIX環境がない&知識が乏しいため検証できませんが
大変助かりました。ありがとうございます。

>677
どういう糸か聞いてよろしいですか?
ファイルへの書込みタイミングを気にされているのでしょうか
コメント2件

680
名無しさん@お腹いっぱい。[]   投稿日:2014/09/21 21:50:57
>678
>679
やっぱり態度悪いんだよ。

681
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 22:04:39
>679
>>どういう糸か聞いてよろしいですか?

上のteeと下のteeが同時に動いていて同じファイルに書き込むから
コメント1件

682
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 22:13:35
>681
tee に追記オプションを指定していますが、それでは解決しないのでしょうか?
書き込みのタイミングによっては、どちらか一方しか書き込みされないことを懸念されていると

683
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/21 22:17:05
上と下の tee で実施している処理を
ひとつの exec & tee コマンドで実装できれば解決できそうですね

684
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/22 01:33:23
名無しで煽って喧嘩させようとする暇人がいるw

685
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/22 02:39:39
>663
さすがに目の前にUNIXの箱が置いてあるのに
できそこないのエミュは使わんなぁ。
コメント1件

686
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/22 08:30:03
なりすましに簡単に釣られんな

687
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/22 09:29:43
tee を一つには思いつかなかったが exec なら

exec 3>> "$logfile" 0< <( tee /dev/fd/3 ) 1> >( tee /dev/fd/3 ) 2>&1

688
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/22 20:11:58
>685
その>663の中に「エミュレータ」は一つも存在しない。
あえて言えばCygwinは「シミュレータ」かもしれないが。
SFU・SUAはネイティブUnixだど。

689
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/23 14:41:53
これでFA
exec 2>&1 >(tee -a "$logfile") < <(tee -a "$logfile")
コメント1件

690
名無しさん@お腹いっぱい。[]   投稿日:2014/09/23 14:54:11
>689
それじゃ標準エラーがlogfileに出力されないし、細かいところ間違ってる。

691
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 19:05:00
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
コメント2件

692
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 19:25:49
>691
今日1日で何回それを見たことやら・・・もうお腹いっぱいです。
久々にありえないレベルの脆弱性でしたね。bash死すべし。

693
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 19:51:28
>691
いいけど、この場合envコマンドは不要なのでenvない方がいい。cshとかいうのは消滅してるので。

694
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 20:15:03
シェル関数のexportを環境変数で渡す時、関数定義を実行するつもりで関数定義終了後の任意の文字列までコマンドとして実行してしまう、ということか。bash1でも症状発生するぞ。こんな昔からあったのか、、
コメント1件

695
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 20:28:15
>694
そもそも環境変数で関数が定義できるとか、誰が発明したんだよ。
echo='() { /bin/rm -rf /; }' とか絶対するなよ。
コメント1件

696
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 20:35:57
一応、引用元
90の日記: GNU Bashに脆弱性、環境変数を渡して呼ぶことで任意コード実行が可能に
http://slashdot.jp/journal/585655

697
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 20:43:02
bashスクリプトをCHIで実行してたら終了だな。
refererやuser-agentに突っ込まれたら…

698
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 20:43:49
誤 CHI
正 CGI

699
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/25 21:08:38
patch当てて関数定義後の文字列は無視したとしても、同名関数定義の問題は残るなぁ。
スクリプト内で使用してるすべてのコマンド(内部/外部とも)について、
スクリプト冒頭で unset -f echo ls cp mv rm .... とかしなければならない??
コメント1件

700
名無しさん@お腹いっぱい。[]   投稿日:2014/09/25 22:24:27
env X='() { (a)=>\' zsh -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable”

701
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 01:01:02
>699
unsetは安全に呼び出せるの?
コメント1件

702
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 01:35:01
bashスクリプトだけじゃなくて、system()とかやってるperl, php, ruby, pythonスクリプトもアウトか
スゲー破壊力だわ こんなの見たことない。

703
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 02:01:51
ってかおまえら、なんで今まで気づかなかったの?
全員、注意力散漫過ぎじゃね?

704
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 02:16:26
だって環境変数に関数がセットできちゃってそれが実行されちゃうなんて
想定外なんだもん(誰かがわざと仕込んだんじゃ…)

705
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 05:41:47
>701
builtin unset -f
すればいいな。
あと、echo とかの内部コマンドにすべて念のため builtin を付ける。
外部コマンドはすべてフルパスで実行、で気休めにはなるか??
コメント1件

706
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 05:44:31
>705
builtin() がシェル関数だったらダメじゃん、アホか

707
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 06:57:55
脆弱性なんだからスクリプトの方であれこれやるんじゃなくて
bashにパッチあてるべきだろ
コメント2件

708
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 07:14:21
>707
そのパッチを当てても、元々のシェル関数のexportの脆弱性は残るという話だろ。
patch当てただけで対策済みとでも?

709
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 07:15:55
>707
patchでは、>695 の攻撃は防げない。

710
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 09:56:52
コミットログ追いかけて、犯人を特定してくれ。

711
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 10:24:48
「30年以上前にそのバグつぶしてたわー」
https://twitter.com/oclsc/status/514876962830295040
コメント1件

712
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 11:26:05
chmod a-rwx bash

したらどうなる?起動できなくなったりするか?
コメント1件

713
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 11:46:31
>711
30年前のshに関数ってあったっけ?
コメント1件

714
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 11:51:14
>712
環境によるんじゃね

715
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 12:08:05
>713
kshが1983で~30年前

716
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 12:10:57
様々なバグの元になるから関数のexportの仕様は没にしました、ってこと?

717
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 13:18:39
これ丸かっこのあとのスペースがないと発生しないな
よく気づいたなあ

718
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 16:21:46
ネット見ると、一部の物好きが自鯖にcurl投下して遊んでる程度だが、
一般層に向けた報道は全然騒いでないんだが・・・大丈夫なのかこれ?

BASHの脆弱性でCGIスクリプトにアレさせてみました
http://www.walbrix.com/jp/blog/2014-09-bash-code-injection.html

前回の、暗号が解読されちゃうってのは、誰にでもわかりやすいけど、
シェルで実行できると一般人に言っても、わかりにくいせいか。
コメント2件

719
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 16:33:02
NBCで今回の件が報道されたらしい

https://twitter.com/crazybob/status/515206151005147136/photo/1

「A bug called Bash」てw
コメント1件

720
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 16:58:11
>718
「一般層に向けた報道」ってどの辺のメディアの話?

721
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 17:17:19
export関数を格納する環境変数名の頭に BASH_FUNC_ を付け、変数名の後ろに () を付けるという対策がされたみたい。
環境変数名(値ではない)に () 付きだとシェル自身では set や export できないけど、
C言語でputenv(3)とかできるだろうし、そんなことしなくても envコマンドでセットできてしまう。

env 'BASH_FUNC_echo()=() { 悪いこと; }' sh -c 'echo hello'

は、依然としてできてしまう。

722
名無しさん@お腹いっぱい。[]   投稿日:2014/09/26 18:27:49
1983年は既に31年前だぞ

723
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 18:28:57
そんなのみんなわかってるよ。

724
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 18:40:14
CGIで起動するのはwww-dataとかapacheなら設定のユーザ? rootじゃないよね。

725
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 18:43:33
普通はrootじゃないね。
そこからローカルから攻撃可能な穴を突いてrootを取る。
コメント1件

726
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 18:44:59
UAにsleep 10仕込んでブラウジング

727
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 18:54:31
while true; do /bin/false; doneとかも仕込めるんだよな...

728
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 22:02:55
forkbomb(){ forkbomb|forkbomb & } ; forkbomb

729
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/26 23:30:51
Services for Unix の bash
Cygwin の bash

でも再現しました。本当にありがとうございました。

730
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 00:13:15
ある意味枯れたプログラムだったから
みんな安心しきってたとこあるよね

731
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 00:17:09
最近でも連想配列追加されたりreadarray追加されたり新機能増えてるんだけどな
手元の最新版bashで開発してていざ本番環境のCentOSでテストやってみると動かなかったりする

732
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 00:49:15
純正シェルを使っとけば何の問題もなかったんや

733
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 01:42:51
上でも書かれていたシェルスクリプトは Bourne Shell で動くように書きなさいの教訓

ここより下に家を建てるなの石碑に似てるな。忘れたころにやってきた

734
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 01:43:53
最近はLinuxでBash用のシェルスクリプトで起動スクリプト書いてるのもいるが、
そういうのがあるから /bin/sh をリンクのはり直しでの暫定対応とかが難しくなるんだわ

735
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 02:49:34
>719
やふうかどこかに載ってた翻訳記事に、
まともな翻訳しろよというコメントがついてたんだけど、
元から間違ってたわけねw

736
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 04:25:36
>725
Webサービスならwwwユーザ権限だけで致命傷じゃね?

737
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 06:30:23
Bourne Shell で書くということは
$( )
(( ))
[[ ]]
なんかが使えないのか
不便すぎる・・・

なにか新しいシェルの実装が出てきそうな予感
fishとか既にあるみたいだけど

738
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 06:55:03
$( )
(( ))
[[ ]]
なんかに頼っていた奴は
頭が不自由過ぎる・・・
コメント2件

739
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 07:04:56
rubyからpythonに書き換える職人の他にbashからshに書き換える職人というのも現れるのかw

740
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 07:27:30
>738
理由は?
自分が使えないから?
コメント1件

741
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 07:29:57
>740
$( ) (( )) [[ ]] 使う方法も使わない方法も熟知してるから。
コメント1件

742
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 07:35:07
GNUは便利なら良いじゃん、とろくすっぽ考えずに実装する(してた)事が多い気がする。
emacsのファイルバリアブルも長い間evalれたし。

743
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:01:35
>741
便利なのに使わないとかアホすぎる
コメント2件

744
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:04:01
>743
両方使うって言ってるの読めないの?
便利な方しか知らないのってアホすぎる
コメント1件

745
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:09:29
もちろんなくても書く方法は分かってるけど
「こういう記法があったら便利だな」って理由で導入されたんだし
そりゃ使える状況ならバンバン使うだろ
コメント1件

746
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:11:48
>745
それだと議論になってない。バンバン使わないとは言ってない。
と同時に/bin/shだけで書く方法にも熟知してるから、/bin/shに戻ってもなにも不便を感じない。
ここで不便を感じる人は偽物。
コメント2件

747
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:24:29
>746
不便は感じるだろ
でないと $( ) とか使う意味ないし

なんか、引っ込みつかなくなってるんじゃね?

748
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 08:25:36
不便は感じない。
スクリプトでは基本、` ` にしてるから。
$( )使うのはワンライナーの時とか。

749
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 09:32:16
それを世間では痩せ我慢と言う。
コメント1件

750
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 09:33:55
>749 自己紹介乙

おれは好んで ` ` の方使ってるので。
コメント1件

751
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 09:41:04
便利なのに、なくても不便でないって、使いこなしてないだけだな。

742 名無しさん@お腹いっぱい。 sage 2014/09/27(土) 08:04:01.55
>743
両方使うって言ってるの読めないの?
便利な方しか知らないのってアホすぎる

746 名無しさん@お腹いっぱい。 sage 2014/09/27(土) 08:25:36.28
不便は感じない。
スクリプトでは基本、` ` にしてるから。
$( )使うのはワンライナーの時とか。

言い訳どぞ
コメント2件

752
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 09:45:34
bashの機能を「使いこなす」って哀れだなw

753
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 09:59:48
>750
はいはい w

754
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 10:07:55
おっと逃げ道を見つけたか。
都合の悪いことは見ないふりと。
コメント2件

755
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 10:29:19
上の人じゃないけど、スクリプトにする場合は$()はなくてもいいな。
他のbashの便利機能がないと、(特に使い捨ての場合に)マンドクセってなるけど。

ちなみに$()をワンライナーで使うというのは、上の人とは違う意味で同意。
英語キーボードになったときの`を見つけられないからw

756
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 10:58:49
``を入れ子にする事なんか考えないのだね。

757
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 11:01:14
` ` の入れ子なんて普通にやってますが、

758
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 12:50:21
>754
そういうごたくは >751 に回答してからにしなよ w
コメント1件

759
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 13:08:20
>758
>751=>754
何言ってんの。

760
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 13:39:14
bash厨必死w

761
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 13:48:04
``の入れ子とか今回とは別の意味でバグを生みそう
ダブルクォーテーションのエスケープとか絡んでくるとなおさら
それを回避してるのが$()の良さだと思うけど

シェルの実装の複雑さやポータビリティを優先するか
シェルスクリプトの書きやすさや読みやすさを優先するか
人によって意見の相違があるのかもしれんが、自分は後者かな
今さらshで書くのは面倒…
しかし今回のでBashへの不安感が少し出てきたし、どうしようか…
コメント3件

762
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 13:52:38
>761
> シェルの実装の複雑さや
シェルの実装の簡潔さや

763
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 13:54:30
>761
>今さらshで書くのは面倒…
とか言ってたらボケるよ。
もともとshメインで使ってきた人にとってshで書くのは楽勝。
コメント1件

764
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 14:10:10
COBOLerも同じこと言ってた

765
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 14:43:12
>761
``に入れ子がダメで、$()なら大丈夫な理由がわからん。

766
名無しさん@お腹いっぱい。[]   投稿日:2014/09/27 15:05:03
まあややこしい書き換えするならスクリプト用の言語使うし

767
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:15:08
>763
楽勝なのと楽なのは違うから

768
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:23:44
そういう言葉にしかツッコミできないのかねぇ..

もともとshメインで使ってきた人にとってshで書くのは楽。楽々。極楽。

... これでいい?
コメント1件

769
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:31:18
世の中の言語が全部Javaになれば解決。

770
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:37:32
Javaはない。重過ぎ。

771
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:50:51
コマンドの入れ子

com "`bin \"\`exe \\\"foo bar\\\"\`\"`"

com "$(bin "$(exe "foo bar")")"

どちらでも書ける
でもどちらで書きたいか
上の書き方に疑問を抱かないのは、悪しき根性主義に毒された迷惑野郎か
自分はバグのない完璧なコードを書けると豪語する勘違い野郎
コメント2件

772
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:55:22
どっちもどっちだな。
悪しき根性主義に毒された迷惑野郎とまで言うなら
行を分けろよと思う。

773
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 15:57:18
横レスだが、変数使う方法もありますよ。

t=`exe "foo bar"`
t=`bin "$t"`
echo "$t"

変数に直接代入する場合は全体を " " で括らなくてもスペース等がちゃんと保存されるのもポイント。
これならshが苦手(笑)な人にも書けますねw
コメント3件

774
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 16:04:08
>773
たぶんだけど

>横レスだが、変数使う方法もありますよ。

こういう当たり前のことを思いつけない人が
「shが苦手(笑)」なんだろうね。

775
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 16:11:28
>771 は一部バックスラッシュ無駄だよ。あっても動くけど無駄な書き方してる。
君がshの ` ` のネスティング苦手なのはわかった。
コメント2件

776
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 17:05:06
>718
一般層向けの報道出てきたね。
http://www3.nhk.or.jp/news/html/20140927/k10014922101000.html

777
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 17:07:15
>768
意味が伝わらなかったのか、かわいそうに

>775
では、正解をどうぞ

778
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 17:28:01
いつまでもウジウジと・・・女みたいな奴だな

779
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 17:32:44
お、性差別発言。
コメント1件

780
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 17:53:03
<丶`Д´>キャベツニダ!謝罪しる!!

781
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:00:58
ネストとかクソ見にくいコードを書く奴は滅びろ
コメント1件

782
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:29:02
cshを標準にすればネストはマトモに動かないからみんな幸せ

783
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:40:21
cshはないわ。

784
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:50:22
>779
今時は誉め言葉かも w

785
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:51:39
>781
>775 が美しいコード書いてくれるから待ってろ
コメント1件

786
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 18:58:33
いつまでもウジウジと・・・女みたいな奴だな

787
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:13:11
>785
君は書けないの?プ
コメント1件

788
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:21:11
>773
それぐらい知ってる
上のレスで ` ` をネストして使うとあったのに対して疑問を呈しただけ

結局shは ` ` をネストしない、一時変数を使いなさいという流儀
>771まで複雑でなくても、ダブルクォーテーションのエスケープが頻出するのも煩雑だし美しくない
ここらへんを面倒だと感じるという主張に対して否定するのは
根性主義者、勘違い野郎と反発されても仕方がない
コメント1件

789
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:24:12
いつまでもウジウジと・・・女みたいな奴だな

790
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:27:11
shの利点はポータビリティや今回特に明らかになったセキュリティにあって
言語としては極めて貧弱
この点を認めずにshで書けと言ってもなかなか賛同を得ないと思う
コメント1件

791
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:27:16
>788
"を使う場合と使わない場合で使い分ければいいのに。
頭が固いからshを使いこなせないんだろうな。
コメント1件

792
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:30:55
一言余計。

793
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:31:10
>791
具体的にコードで説明してくれ

794
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:38:08
いつまでもウジウジと・・・女みたいな奴だな

795
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:40:43
>787
うん、書けないから書いてね

796
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:48:05
こりゃ煽ってる方も書けなかったっぽいな。

797
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 19:53:43
com "`bin "\`exe "foo bar"\`"`"
コメント1件

798
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 20:36:30
>797
これは本当にshで書けるの?
bashの拡張ではないの?

799
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 20:37:00
bashに慣れきってたから、たまには他のシェルも試してみるかと fish をインストールしてみたけど
コマンドラインのシンタックスハイライトとか新鮮で楽しいな

800
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/27 22:45:36
>773
もしかして変数に " " なしでスペースを保存しながら代入できるのもbashの拡張?

801
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 00:57:05
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
コメント1件

802
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 02:17:54
>801
それいいな
その構文なら使ってみたいかも

803
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 02:59:54
>744 便利な物を使ってるのなら頼ってるって言うんじゃないの?
>746 便利な物が使えないから不便って言うんじゃないの?
>738 「bash拡張がないとシェルスクリプト書けない奴は」とすべきだったね。
>790
エスケープをミスると即破滅場所しか無いって時点でセキュリティ…?
生SQL以上にWebサービスから呼び出してほしくない言語だと思うけど。

804
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 12:38:52
`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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 12:39:26
前スレ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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 18:26:43
shとbashの間をとってkshじゃいかんのか

807
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 19:08:57
いやそこはぜひdashで

808
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 22:49:12
dashやzshだって近々何か見つかるかも知れないよ
シェルみたいに枯れたプログラムへの攻撃は、これまでトライするだけ無駄って感じだったのに
今はみんな注目して粗探ししてるだろうからね。

809
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 22:53:51
じゃあ斜め上のpashで

810
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/28 22:59:06
日本人が開発したmoshとやらはどうなったの

811
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 01:51:01
困ったときの ash

812
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 05:53:35
インタラクティブシェルなら、シェル依存の機能をゴリゴリ使う(と言うか、そこもシェル選ぶ基準だからな)けど
シェルスクリプトとなると、特定のシェルに依存したコードは普段から書かないなあ。
OSXですら依存チェック用に低機能シェル突っ込んであるよ。

813
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 06:33:50
ブラウザーで ash

Javascript PC Emulator
http://bellard.org/jslinux/

814
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 15:27:10
今回のはシェルスクリプトをbashで書いてなくても
インタラクティブシェルがbashの時点でまずいケースがあったのでは
コメント2件

815
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 16:35:00
だいぶ状況限定だけどね

816
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/29 23:53:43
・デフォでbashが入ってて、あえてシェルを入れ替えてない
・シェルを呼び出している
の二点を満たせばアウトってのは「だいぶ状況限定」と言えるのか?
シェルを呼び出すのは比較的少ないけど、その程度の希少性しか無いだろ…
コメント4件

817
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 00:02:08
WindowsServerの安全性が証明されたわけですね。
コメント1件

818
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 00:05:02
>816
それ>814の話じゃなくね。

819
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 00:07:00
>816
それだけでだいぶ状況限定だろ
その程度の希少性って何だよ

820
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 00:29:21
>816は /bin/sh が bash になってるときの話。
>814はそうじゃないときの話。

821
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 01:29:40
>816
さくらVPSのcentos6.5って、sh -> bash だったような。顧客にはアップデートさせたが、デフォルトかは知らない。
CGIって、プロセスを起動して環境変数を設定する仕組みでしょ。#!/usr/bin/perl とか読み取って、perlにスクリプト渡すのって、shの仕事だったりしないの?

822
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 01:45:36
#!を読むのはOSのローダーの仕事だな。

823
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 02:30:42
そっか、じゃなかったら #!/bin/sh って書く必要ないか。

824
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 03:39:32
OSのローダーってカーネルより前段のIPLのこと指してしまうだろが。
コメント1件

825
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 12:28:00

826
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 17:08:06
>824
底辺PGはelfローダーとかPEローダーとか聞いた事はないかな?

827
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 18:55:49
bashにしか効かないのにシェル全部が悪いみたいな扱いなのは気に入らないw

828
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 19:00:11
そんな扱いするやついないだろ

829
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 19:01:36
やつじゃなくて世間の評判とかニュースのことでは?

830
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 19:34:52
たとえばどれ?

831
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 19:35:14
shellshockって名前が悪いな
bashshockって名前に解明すべき

832
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 19:58:05
bashockって三国志に出てきそうじゃね?w

833
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 20:07:01
泣いてbashockを斬る

834
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 21:50:06
bashdoorって別名もあるみたいよ
コメント1件

835
名無しさん@お腹いっぱい。[sage]   投稿日:2014/09/30 21:59:54
>834
ちょっと上手いと思ってしまったのが悔しい

836
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/04 22:40:23
いや上手いだろ

837
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/05 04:09:52
上手くない!

838
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/05 07:06:09
やっと意味がわかった

839
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/06 13:13:12
流石です、お兄様
コメント1件

840
名無しさん@お腹いっぱい。[]   投稿日:2014/10/06 13:24:30
りゅ…流石?

841
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/06 13:45:40
ながれいし

842
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/06 18:52:30
さすおに!
コメント1件

843
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 01:13:41
全然意味が分からない俺をどうにかしてくれ

844
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 01:48:16
どれがわからないの?
>839>842は同じネタだよ。

845
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 02:29:50
こんなんわからなくていいよ。

846
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 02:32:19
シェルスクリプトでやたら大きなプログラム書くことがそもそもおかしい

847
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 03:00:30
ていうかアレをネタに言うなら藤林お姉さまと言うべきだろうに…ニワカ共が

848
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 07:45:37
中小企業とかがやってる内輪の勉強会の発表資料を見てると
ちょくちょくアニメネタが入ってて痛々しい

849
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 13:12:29
お偉いさんの資料には、昔ゲイツ今ジョブズが入ってるよ、
大きいところも小さいところも

850
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 15:04:31
里奈ちゃんと楠夫とか
なんだっけブサイクのオバサンなんかwnn系でいたよね
よっちゃんとか、さっちゃんとかいうの

851
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 15:17:41
思い出した。
とこちゃんだ。

852
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/07 17:14:35
bash「ひゃん!」

853
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/08 12:48:48
何の事かと調べてみたら、アニメか
このノリは、俺には受け付けないわー

 魔法科高校の劣等生
 BSDのプリンセス・マジカルとこちゃん
コメント1件

854
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 08:42:55
>853
マンガってなんおことかと思ったらw
知らなかった。
あのさ、大昔のUNIX業界にはよしだともこ氏というのが
物書きとしていたんだよ
http://www.notredame.ac.jp/~tyoshida/
で、その人の通称がとこちゃんだったと思う。
おそらくだがBSD系のマンガの命名の元は実在の
とこちゃんから創られたんだと思うよ。

855
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 11:52:25
透子?

856
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 12:18:32
爆死アニメ?

857
名無しさん@お腹いっぱい。[]   投稿日:2014/10/10 14:53:30
ll命令を発行してファイルのプロパティーをタイプした時、一部のファイルの時刻が2014とかいう西暦?に化けます。バグでしょうか?
コメント1件

858
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 15:57:21
>857
2014年のファイルでタイムスタンプと年度が混在してるなら
バグだね。
試しに時計を2013に改竄したり2015に改竄して表示させたら?
コメント2件

859
名無しさん@お腹いっぱい。[]   投稿日:2014/10/10 16:20:23
すみませんが詳しい方のみ回答をお願いします

860
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 16:23:18
いいえ、-Tでも

861
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 16:41:16
>858
釣られんな

862
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 16:54:47
>858
2014年でも2014の表示になるファイルは普通にあるぞ

863
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 17:05:34
ls(1)より
最終修正時刻が 6 箇月よりも前 で
ある場合には、POSIX ロケールでは「月・日・年」の形式で
表示されます。LC_TIME ロケールカテゴリが POSIX ロ ケー
ルに設定されていない場合には、異なった形式で時間フィー
ルドが表示されます。最終修正時刻が 6 箇月以内である 場
合には、「月・日・時」の形式で表示されます。

864
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 18:38:32
次の釣りレス
「ls(1)なんて命令なんてありません。発行したのはllです」

865
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 18:41:39
$ ls(1)
bash: 期待してない token `(' のあたりにシンタックスエラー
$

これは脆弱性?

866
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 18:53:41
任意のコードを実行したりできる訳じゃないから
ただのバグやね

867
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/10 19:19:00
$ ls(1)
bash: Erreur de syntaxe pres du symbole inattendu << 1 >>

868
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 00:32:05
>817
Windows版のbashでも再現した
コメント1件

869
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 02:48:51
>868
ゴミを持ってきて脆弱性だと言われても、
お前の脳がバグってるだろうとしか。
コメント2件

870
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 07:19:59
>869
bashを別のものに交換できるLinuxServerは最強ってことですね。
一方OSがいろんなアプリに依存しちゃってるWindowsは…。
コメント2件

871
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 09:20:00
サーバとしての使い勝手とか、必要最小限の構成とか出来ない辺りサーバとしてのWindowsはダサいけど、
アプリ間の依存をネタにする場合、アプリディレクトリに依存するDLLブチ込めば済むWinの方が優秀じゃね?
ブチ込むだけだと駄目どころか、パッケージ管理システム外だとコンパイルからやれが大半ってのはダサい

872
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 10:28:27
cut -d: -f1
これをシェル内部コマンドだけで実現できませんか?
コメント1件

873
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 10:43:37
>873
$ line=root:x:0:0:root:/root:/bin/bash ; echo ${line%%:*}
root
コメント1件

874
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 10:46:24
こんな感じかな

$ ( IFS=':';while read f; do set -- $f;echo $1; done < /etc/passwd )
コメント1件

875
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 11:13:49
>874
setは要らんやろ

(IFS=':';while read a b; do echo "$a"; done < /etc/passwd)

876
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 11:41:13
なるほど、それなら配列を使えば、、

$ ( IFS=':';while read -a arr; do echo ${arr[0]}; done < /etc/passwd )

配列変数使えるのってbashとzshくらい? kshでも使えたかな…

877
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 13:23:16
bash禁止

878
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 13:24:16

879
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 17:11:40
あるファイルAに改行なしで500Mbくらいテキストが詰まっている
別のファイルBに、下記のように「開始位置.長さ」で記述がなされているとする
1,10
11,50
61,2
ファイルAをファイルBの記述に従って改行したい
つまり上記の場合、「1文字目から10文字+改行」「11文字目から50文字+改行」「61文字目から2文字+改行」
というようにファイルAを3行に改行する
ファイルAには半角文字と全角文字が混同している
ファイルBの記述は「開始位置,長さ」だが、必ず1文字目から始まり、終了位置+1を次の開始位置とみなしてよい

ちょっとこんな感じの処理を作ることになったんだけど、効率いいやり方ないかな
文字コードは都合のいいものに勝手に変換してくれ
コメント1件

880
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 17:23:08
ヒントの一部にしかなってないけど、
bashだと全角文字でも一文字分をちゃんと認識してるんだな
(LANGまたはLC_CTYPE設定必須)

$ a=ABCあいうえお
$ echo ${a:1}
BCあいうえお
$ echo ${a:2}
Cあいうえお
$ echo ${a:3}
あいうえお
$ echo ${a:4}
いうえお
$ echo ${a:5}
うえお

881
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 17:48:44
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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 17:58:53
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/11 18:03:38
文字コードはUS-ASCIIで。

884
名無しさん@お腹いっぱい。[]   投稿日:2014/10/12 00:12:12

885
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/12 22:43:37
なるほどbash任せにするのか
sedとかawkとか使う考えしかなかったから全角半角大丈夫かなとか思ってたけど
いけそうだ、会社いったら試してみる
ありがとう

886
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 20:35:25
>869
>870
どっちも間違い。

今回の場合、Windowsで走らせたbashはUnix版をビルドしたもの。
Linuxは/bin/shがbashなので交換できない。

ポータブルじゃないBASH依存のスクリプトが少数あるため・・
コメント4件

887
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 21:10:01
Ubuntu や Debian は bash じゃなくて dash だけどね

888
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 21:17:40
>886は間違い。

889
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 21:36:55
>886
だからごみを持ってきてWindowsの脆弱性というのはおかしいだろ。
お前日本語大丈夫か?

890
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 23:13:47
>886
だからLinuxの脆弱性というのはおかしいだろ。
お前日本語大丈夫か?
コメント3件

891
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 23:21:54
>890
誰がそんな話をした?
本当に日本語がだめなやつだなお前。

892
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/13 23:51:51

893
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/14 00:38:43
>890
鸚鵡返ししかできない池沼だったか

894
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/14 08:50:24
>886
rootさんに頼んで/bin/shからリンクされてるbashをバグのないバージョンにアップデートしてもらえ
Windowsで再現するのはWindowsに持ってきたbashがバグ入りのゴミバージョンって事だから差し替えろ
>870はイミフだけどお前はもっとイミフだ。

>890
バグ入りbashがデフォで入ってるLinuxディストリビューションについては、
そのLinux"ディストリビューション"の脆弱性としてカウントして良い話だと思うぞ。

895
名無しさん@お腹いっぱい。[]   投稿日:2014/10/18 16:37:07
2つのファイルをクリアしたいのですが、一回で処理したいです
調べたところcp /dev/null, xargs,lsを使うと出来そうなのですが、どうしたらよいでしょうか
ls foo hoge | xargs cp /dev/nullではだめでした
コメント3件

896
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 16:38:29
>895

> foo > hoge

897
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 16:43:03
ふつー、
for f in *; do > "$f"; done

だけど、これじゃ1回じゃないから嫌という意味か?

898
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 16:51:42
>895
どーしても xargs でやりたければこんな感じで

$ ls -1 foo bar | xargs -l cp /dev/null
コメント1件

899
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 16:56:15
fooとbarをアトミカルにクリアしたいのです。fooだけクリアされた瞬間を作りたくない。
コメント1件

900
名無しさん@お腹いっぱい。[]   投稿日:2014/10/18 16:58:19
>898
ありがとうございました。解決しました。forを使っても良かったのですが、896さんベストアンサーでってここ知恵袋ちゃうで(^o^)
コメント1件

901
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 16:59:55
>900
cpを2回呼んでるからアトミックじゃないよ

902
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:02:28
もう解決した様だけど、truncate ってコマンドがありまして…

$ truncate -s 0 foo bar
コメント1件

903
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:05:40
>902
POSIX互換ですか?

904
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:09:15
ポジックス(笑)は気にしない。*BSDとLinuxでtruncate(1)あるから、Solaris以外ハム問題。
コメント1件

905
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:14:11
>904
ありがとうございます(^o^)
最近POSIX互換にとらわれていて、困っております
seqコマンドもPOSIX互換ではないと聞いて、数え上げの方法で、よい方法がないか困っているのですが、yesコマンドを使ってできないでしょうか(>_<)

906
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:16:44
yes '' | cat -n でできるけど、そんなことするよりシェルで {1..100}とかの方がいい。

907
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:19:17
おいおい、yesコマンドもPOSIXちゃうやろ、本末転倒。

908
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:20:43
yesもPOSIX互換ではないのか(>_<)
失礼いたしました

909
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 17:59:49
そもそもアトミックなんて不可能だろ

910
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 18:55:50
$ 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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/18 19:18:39
>895>899 って別人だよね?

912
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 13:13:52
ここで質問してよいのでしょうか?
シェルで配列が使えるのってbashだけですか?
よくある以下のようなスペース区切りを配列に入れたいのです。

fields=($in)
for field in "${fields[@]}"; do

いまshで作ってるのでshのままでやれればそれがいいのですが
bashも致し方なしと言う状態です。

913
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 13:16:37
kshでも使えるよ

914
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 13:39:11
なぜshには配列が無いか? 配列が無くても十分だからだ。
コメント1件

915
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 13:40:15
sh でやる場合、

set $in
for field in "$@"; do

で行けるよ
コメント1件

916
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 13:41:50
cshでも使える
shでもそういう感じのforは出来るが

917
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 14:33:24
>915
できました!ありがとうごうざいます
作ってるシェルスクリプトの使い勝手が超よくなりました!

皆様もありがとうございました

918
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 17:09:56
実は
for f; do
でもいい

919
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/19 18:35:09
うおほんとだ
知らんかった…

920
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/20 12:59:33
作ったシェルスクリプトって実行権限つけてる?
自分はつけてなくてsh 〜とかで実行してる
理由は間違って実行したくないからなんだけどさ
コメント5件

921
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/20 13:09:26
それならそれでいいんじゃね

922
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/20 16:58:41
実行権限つけて~/binとかにおいてる。
普通にタブ打って補完してほしいし。

自分で作ったスクリプトで気をつけてるのは
使い方の説明コメントとかヘルプオプションのメッセージとかを
しっかり書くことかな。
詳しい使い方とかしばらくすると忘れちゃうんだよね。
ぐぐっても出てこないしさ。
コメント1件

923
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/20 17:25:26
同じく
エディタのバッファ上や端末でのワンライナーではなく
ファイルに保存するほどものってのは使いまわすってことだからね
頻度が少ないものは補完の邪魔だからprefixつけてる

924
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 00:55:19
>920
そういう人は通常のコマンドも撃てないんじゃないの?w
標準コマンドをなぜ間違わないかとか、間違いを防ぐaliasや引数は
どうすればいいかを考えれば良くないか?
(y or n)を利用するだけでも違うと思うが

925
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 02:00:54
ほとんどのコマンドは履歴から補間して実行しちゃうな
俺にとって sh 〜は無駄なあがき

926
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 03:02:37
>922
自作を~/binに置くのはなんか気持ち悪いな…
そんな運用のシステムを引き継ぎたくない
コメント5件

927
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 04:43:14
>926
そんなケースはめったにないから気にしなくていいよ
自分用のニッチなもの
~/bin
使いまわせるならお好きに昇格させればいい
/usr/local/bin
/usr/bin
/bin

928
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 08:50:28
つかスクリプトなんてhomeに一枠切っておけば済むのに

929
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 09:04:42
みんなで使ってるサーバなら/usr/local使えないし
~/binに入れるのは普通だと思うけど
というかどこに入れればいいねん

930
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 09:16:20
普通というか、~, /var/tmp, /tmpの内のどれかの中にしか置けなくね?w
コメント1件

931
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 09:51:26
>930
root権限ないの?
みんなで使うものなら管理者に言って置かせてもらえばいいじゃん。
コメント1件

932
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 10:01:32
>931
なんでみんなで使う前提なの?
コメント1件

933
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 10:15:54
>932
前提じゃないよ。
もしみんなで使うものなら、って話。

934
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 10:26:40
>920はみんなが使うスクリプトじゃなくて
自分しか使わない俺俺スクリプトのことを言ってるような気がするけど
みんなが使うものなら当然実行権限付けるだろうし
コメント2件

935
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 10:29:04
みんなが使うものなら/usr/localに置くし自分しか使わないものなら~/binとか好きな場所に置く
ようは>926がちょっとずれてるんじゃねってこと
コメント1件

936
名無しさん@お腹いっぱい。[]   投稿日:2014/10/21 10:29:39
UNIXサーバーの管理をしています。
ユーザーはスクリプトの実行は禁止ですが、
最近、ユーザーでも自分のホームフォルダーにスクリプトをコピーし、
X権限をすることによってスクリプトが実行できてしまうことが判明しました。
これはOSのセキュリティーボールではないのでしょうか?
ユーザーのフォルダーではたとえX権限がされていても
実行できないようにする方法はありますか?
必要ならカーネルにバッチを当てる方法も、やもうえません。
コメント1件

937
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 10:44:48
>934
> >920はみんなが使うスクリプトじゃなくて
> 自分しか使わない俺俺スクリプトのことを言ってるような気がするけど
その辺は明記されてないね。

>935
>926は「みんなで使うものが~/binに置いてある」と読み取ったんだろう。
コメント1件

938
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 11:03:56
>936
ネタだと思うけど、いちおう。
/homeを別パーティションにして、マウントオプションにnoexecを追加する。
もしくは、rbash->bash、rzsh->zshみたいなsymlinkを作って
ログインシェルをrbash/rzshに変更する。
いずれにせよsh hoge.shみたいにして実行されるのを防ぐことはできないが。
コメント1件

939
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 11:04:48
>938
いつもの改変コピペ君だろ
かまっちゃいかん

940
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 11:20:53
ディレクトリの考えは人それぞれだからなぁ
ただスクリプトのように本来のOSに無関係な
作業プログラムは全員が使うなら全員共通の
home域や個人で使うhome枠とかmnt枠に切るね。
システムダウンの代替やOSの総更新というか
障害復旧で関わらない領域やディスクやパーテーションに
作業用というかユーザや管理者がしたためたツールは置いておきたい。

941
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 14:12:34
使えるユーザを限定しようとするときはグループを分ける必要が出てきて
やっぱりroot権限がいるからrootの中の人にどこまで任せるかということになるか

942
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 14:17:24
>920は納得したのか?

943
924[]   投稿日:2014/10/21 20:08:57
みなさんごめんなさい。
/binと間違った。
>926で~/binとコピペして目に見えているはずなのに
/binと間違った。ビール飲んでたせいです
コメント1件

944
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 22:32:58
>920
特定のディレクトリでしか実行しないものは、
そこに置いて、cd してから sh 〜 で実行してる。
どこでも使うものは、実行権限つけて /usr/*/bin/ とかに入れて
他のコマンドと同じように使ってる。
普段使わないものは ~/script/ 以下にサブディレクトリ作って置いてあって
PATH は通してない。

945
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/21 22:35:08
>934>937
間違って実行したら困るような品質のスクリプトをみんなで使っちゃ駄目だわな。

>943
>926 ユーザアカウントごと引き継ぐような運用が前提なの?」
とか思ってたけどそういうことか。納得。

946
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/22 08:45:07
ruby gemだと~/.gem/ruby/2.0/bin とかに入るし、pythonだと
~/.local/bin に入ったりする。
個人的には~/bin よりむずむずする。

947
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 01:41:08
~/.gemは他を汚さないって事で別に良いと思うけど、
~/.local/binはなんでそうなったんだ…

948
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 03:18:36
例えば 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

もっと簡単に書けるのでは? と思っています。
コメント3件

949
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 04:31:23
read -a

950
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 04:54:32
>948
内部コマンドのみで書ける

users=(`while IFS=: read u x; do echo $u;done < /etc/passwd`)
コメント2件

951
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 05:32:28
>950
()で囲うだけで配列にできるのですね。

results=("$(コマンド)")
ダブルクォーテーションで囲えば空白を含む場合も問題ないですね。

とてもシンプルになりました。
ありがとうございました。
コメント2件

952
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 05:50:14
>951
> results=("$(コマンド)")
> ダブルクォーテーションで囲えば空白を含む場合も問題ないですね。
勘違いしていました。
これだと配列の要素が1つだけでだめですね。

953
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 06:23:00
あるコマンドの出力結果の各行が要素となる配列を作りたい。
出力行にスペースを含まない場合は >950 のように()で囲めばいい。
スペースを含む場合は >948 のようにやる必要がある。

ということみたいですかね。
たいへんお騒がせしました。
コメント2件

954
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 06:38:12
>953
>948 のようにやる必要はない。
改行を IFS として >951 みたいにやればいいだけ
コメント1件

955
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 06:41:57
>953
IFS='
' list=(`ls -l`)


これでls -l の各行ごとに配列要素に入る。IFS変更してることに注意。

956
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/23 06:52:10
>954,953
なるほど。
処理が終わったらIFSを元に戻せばいいですし、これでいけますね。

シェルがおもしろくなってきましたw
ありがとうございました。

957
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/24 09:46:02
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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/24 13:01:25
よくわからんが俺なら、cut -d: -f1 /etc/passwd するね
コメント1件

959
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/24 13:54:52
お前は何を言ってるんだw

960
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/24 14:24:22
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/30 00:56:19
ミドルウェアのインストーラ(シェルスクリプト内)に
uuencode/uudecodeで巨大なファイルを埋め込んでるのがあったんだが
スクリプト内にファイルを仕込むことで、何か特別な意味あったりするの?

メモリが足りなくなって、インストーラがコケまくるし
再実行するたびにデコードして展開するから胸糞悪かった
コメント1件

962
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/30 03:42:14
シェルスクリプトで全部配布出来る、とか。

963
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/30 05:28:34
Windowsっぽくしたかったんじゃね。

964
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/30 05:39:51
uuencodeなだけいいじゃないか。
javaのインストーラなんて直接バイナリ埋め込んでるし。
シェルスクリプトをexitで終了すればexit以降の部分がバイナリでもOKという技。
tail -n +行 でバイナリ切り出して解凍、みたいな。

965
名無しさん@お腹いっぱい。[sage]   投稿日:2014/10/30 13:37:12
>961
実行するだけでインストールできるから楽でしょ
この間インストールしたjava(jdk)もその形式だったし

966
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 18:06:16
もう10日書き込みなしか
でもみんな見てはいるんだろうなと予想
コメント1件


967
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 18:50:24
では、以下のより善い最適な正解を考えよう

LinuxやFreeBSDとか Part.13 /モ娘(狼)板
> 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
コメント1件

968
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 18:59:36
>967
zgrep -l Makefile *.tar.gz
で一発。
コメント1件

969
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 21:01:40
>966
専ブラで見てるから書き込みが無いと見ないんだな・・・
正直なところココに書き込むか他の質問スレに書き込むか迷って
他に書き込むことはある

970
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 21:22:13
>968
それではサブディレクトリ以下の*.tar.gzを検索しない

971
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 22:38:09
zgrep -l Makefile **/*.tar.gz
コメント1件

972
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 22:43:36
>971
カレントディレクロリの*.tar.gzを検索しなくなった
コメント1件

973
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/09 23:58:58
ロリ…

974
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 00:04:45
ディレクトロリ

975
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 00:22:06
いくつもあるとしか言ってないから、そういう場合は大抵、ひとつのディレクトリで十分だと思うな。

976
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 00:49:17
まあ何にせよ、現状は
find . -name "*.tar.gz" | while read REPLY; do (echo " -- $REPLY ---" ; tar -tf "$REPLY" | grep Makefile) done
最強だな。
サブディレクトリの*.tar.gz全ても、*.tar.gzの中のリストも
表示される
コメント4件

977
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:11:31
>972
はい、ごめんなさい

>976
最強?
並列で動いてるようにすら見えないのだが
コメント1件

978
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:20:38
横から見てたけど、結果出すのが強いと思うよ
コメント1件

979
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:25:12
>976
・ファイル名に改行コードが入っていたら?
・"〜.tar.gz" っていう名前のディレクトリがあったら?
・whileの中は { echo ...; tar -tf ...; } でいいんじゃ?(わざわざサブシェルにする理由がワカらん)

980
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:26:05
>978
言い出しっぺの法則って事で
速度度外視でいいからサンプル生成コードを出してくれ
コメント1件

981
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:36:13
>980
俺は「結果出すのが強い」と事実を書いただけだが、何の「言い出しっぺ」なの?
コメント1件

982
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:39:33
$ find . -type f -readable -name "*.tar.gz" -print0 | xargs -0 -I'{}' /bin/bash -c 'echo " -- {} ---"; tar -tf "{}" | grep Makefile'
コメント1件

983
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:53:14
>982
横から見てた別人だけど、なるほどそういう方法もあるんですね。
ちなみに>976に対するアドバンテージってナニですか?
>977のいう並列動作ですか?
コメント2件

984
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 01:58:22
>976
readは指定しなければREPLYに入れるから冗長。

985
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 02:03:07
>983
>・ファイル名に改行コードが入っていたら?
>・"〜.tar.gz" っていう名前のディレクトリがあったら?

これ↑に対処。並列動作させる場合は xargs に -P0 を付けるとよろし
コメント1件

986
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 02:19:56
>985
なるほど。その対策ですか。

-P0 付けたら表示がバラバラになってしまいますね。

987
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 02:28:00
ファイルの順序はバラバラになるけど、Makefileが含まれているかどうか
が判れば良いはずなので問題はないと思う。ファイルの表示順序を維持
したい場合は GNU parallel を使えば良い。オプションはxargsの上位互換
になっている

988
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 02:40:36
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
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 02:49:17
>981
「結果」なるもの定義が
速度?ゴルフ?動けばいいの?
などとあいまいで分かりづらかったんだよね。
でも本人さんなら「結果出すのが強い」と明確に判断できるような
お題のサンプルぐらいは提示できるひとかなっと思ったんだ
なんだかごめん。
コメント1件

990
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 05:32:23
zgrep -lr Makefile .
一発

991
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 09:24:03
/bin/zgrep: -r: option not supported

992
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 12:34:39
>989
> 「結果」なるもの定義が

普通に流れ読めばわかるだろ

993
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 12:54:30
dump(ufsdump)形式で固めたアーカイブを、
展開せずに tar (tar.gz)形式に変換したいんだが、
何かいい方法ある?
コメント1件

994
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/10 15:03:04
>993
さらに上からtarする。

995
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 00:56:17
次スレ

シェルスクリプト総合 その24?2ch.net
シェルスクリプト総合 その24
コメント1件

996
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 08:23:57
>995

997
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 14:05:29
梅がてら最近のケアレスミスを紹介

wgetでサイトのページ取ってきて解析するスクリプト作ってた
でもたまに解析に失敗する
試しにsleep入れたらちょっとましになったけどやっぱり失敗することがある
処理時間も考慮する必要があるから無駄に30秒とか入れたくないし・・・
でよく見直したら行末に「&」が付いてて非同期処理になってた
経緯としては標準出力&エラーを/dev/nullに叩き込んでたんだけど
いつも使うnohupの処理をそのままパクってきたときに消し忘れてた
これがわかるまでwgetってバッファとかメモリからの書き出しに
ラグがあるのかと思ってたくらいいいorz

998
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 17:12:33
URLのをクォートせずにコピペしてクエリの&でbgにしてることは、まれによくある。
クエリにコマンドしこまれてたら、セキュリティホールだな。区切り文字となるスペースないから、大したことできないかもだけど。
コメント1件

999
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 17:35:57
>998
あるあるw

ちなみに、特殊文字を含むデータをペーストしようとすると警告してくれる端末エミュレータが
あった気がする。TeraTerm だったかなあ? あの機能には助けられた覚えがある。

1000
名無しさん@お腹いっぱい。[sage]   投稿日:2014/11/11 18:29:25
Xの端末は腐ったときに表示した文字をコマンドとしてシェルが実行してしまうことがあるよねw
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

UNIX板 タイトル検索

このスレッドが人気です(実況系)
フランケンシュタインの恋 #2 ★3 (649)NTV実況
情熱大陸 (573)TBS実況
ミスターサタン★4 (457)フジ実況
林先生が驚く初耳学★2 (890)TBS実況
しくじり先生 俺みたいになるな!!「江本孟紀」 ★4 (331)テレ朝実況
関ジャム ★1 聖恵はどこだ (122)テレ朝実況
櫻子さんの足下には死体が埋まっている #02★2 (900)フジ実況
サンデースポーツ★2 (315)NHK実況
このスレッドが人気です(ニュース系)
【富山】名古屋から富山まで自転車で帰省中の大学生 トラックにはねられ死亡★3 (674)ニュー速+
【世論調査】安倍内閣支持率60%と横ばい 失言・不祥事の影響軽微 [日経新聞] (509)ニュー速+
【社会】「地毛証明書」、都立高の6割で 幼児期の写真を要求も (339)ニュー速+
【富山】名古屋から富山まで自転車で帰省中の大学生 トラックにはねられ死亡★2 (1000)ニュー速+
【社会】「ひきこもり支援」業者のトラブル相次ぐ…3か月分の契約料570万円を支払うも支援なし、自宅から無理やり連れ出され軟禁 (1000)ニュー速+
「給料格差ツイート、狙ってやった」 日本捨てる若手学者の危機感 ★2 (1000)ニュー速+
【ヤクザ】六代目山口組から分裂した神戸山口組から分裂…織田絆誠こと金絆誠が「任侠団体山口組」を結成★2 (456)ニュー速+
「私、日本人でよかった」ポスターが京都の街に貼られまくり批判殺到 (930)ニュー速
UNIX板の人気スレ
初心者もOK! FreeBSD質問スレッド その122 (335)
シェルスクリプト総合 その26 (161)
FreeBSDを語れ Part43 (778)
Emacs Part 50 (361)
Emacs Part 48 (997)
Vim Part26 (589)
Vim Part25 (988)
*BSDニュース@2ch その6 (982)
Cygwin使っている人いますか? その21 (980)
雑談スレだよもんもんもんだよ☆だよだよもん!{35} (991)
FreeBSDを語れ Part37 (992)
初心者もOK! FreeBSD質問スレッド その120 (1018)
NetHack 地下:62 (435)
Oracle Solaris 総合スレッド 其の2 (338)
シェルスクリプト総合 その24 (999)
雑談スレだよもん☆もんだよもんもんだよもん!{36} (646)
Cygwin使っている人いますか? その22 (714)
Emacs Part 47 (995)
Emacs Part 46 (984)
*BSDニュース@2ch その7 (699)
シェルスクリプト総合 その23 (1000)
Navi2ch for Emacs (Part 21) (846)
NetBSD その29 (501)
\chapter{\TeX} % 第九章+ (1001)
FreeBSDを語れ Part38 (983)
NetHack 地下:61 (1017)
\chapter{\TeX} % 第十章 (652)
連番のH画像/動画を一気にダウンロードする6 (984)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)