Skip to content

Latest commit

History

228 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

シェル・ワンライナー160本ノック(#shellgei160)のリポジトリ

 技術評論社から出版された「シェル・ワンライナー160本ノック」のためのリポジトリです。書籍を購入した人は、とりあえず、

$ git clone https://github.com/shellgei/shellgei160.git

をお願いします。(できる人はforkでお願いします。)

このリポジトリの役割

  • 問題で利用するデータの提供
  • 質問の受け付け(issueにて受け付けています。)
  • 訂正の掲示
  • 解答、別解のテキストデータの提供(answerディレクトリにあります。)
    • さらなる別解のプルリクエスト大歓迎(

その他、シェル芸の一般的な情報は、上田の個人サイト内にあるシェル芸のページで随時更新しています。

お知らせ

  • 問題23で記述に誤りがありました。訂正を掲載しました。(20211004)
  • 電子版の一部にスラッシュが抜ける誤りがあるようで、対応中です。(20211004)
    • 対応完了(20211007)

訂正事項

未定

ページ場所修正前修正後発見者・状況コメント
p.389問題135別解3awk -F '' '{n=0;for(i=1;i<=NF;i++){if($i=="(")n++;if($i==")"){n--;if(i!=NF && n==0){print $0}}}}n!=0'awk -F '' '{n=0;for(i=1;i<=NF;i++){if($i=="(")n++;if($i==")"){if(n==0){print $0;exit};n--}}}n!=0'issue74途中でカッコの数が釣り合うと文法が正しいのに問題があるという判断になってしまう。(メモ: 訂正は脚注でktraraiさんから間違いの指摘があって修正したと記述する。)
p.398問題139別解1s/\/[^\/]*//;s/\/[^\/]*$//;issue72結果が題意と異なってしまう
p.400問題140別解1yes paste -d ...yes -- paste -dissue73yesの仕様変更

第5刷で対応

ページ場所修正前修正後発見者・状況コメント(主に上田)
p.503番目のコードブロック直後の1行というように、年月日、自分秒がそれぞれ 8 桁、6 桁で出力されます。というように、年月日、時分秒がそれぞれ 8 桁、6 桁で出力されます。issue57変換ミスと思われます。
p.51別解2$ cat log_range.log | awk '$4" "$5>="[24/Dec/2016 21:00:00]" && $4" "$5<"[25/Dec/2016 03:59:60]"'$ cat log_range.log | awk '$4" "$5>="[24/Dec/2016 21:00:00]" && $4" "$5<"[25/Dec/2016 03:59:60]" && a == 0;$4" "$5>"[25/Dec/2016 02:59:60]"{a++}'issue56データに3時台のレコードが1つしかなくて不備を見落としていました。
p.51別解2の下の行(⇒練習1.3.g)。(⇒練習1.3.g)。a==0以降は、3時台のデータを2行以上出力しないための細工です。同上同上
p.61練習2.1.e 2段落目の最後の2文ダブルクォートによるクォートの場合、中にあるBashの変数は解釈されます。また、変数だけでなく、ホームディレクトリを表す˜などの特殊な記号も解釈されます。ダブルクォートによるクォートの場合、変数やコマンド置換などは解釈されます。issue50完全に間違いです。勘違いをそのまま確認せずに書き流してしまいました。すみません:pray:
p.110補足2の2行目cowseycowsayissue51タイポです。
p.113最終行もしくはシングルクォート「'」でくくる必要があります。もしくはクォートする(「'」や「"」で囲む)必要があります。issue50これもダブルクォートでチルダ展開が抑制されることが抜けてました。
p.428解答をつくっていくなかのgrepのオプション(4箇所)grep -zoPgrep -zoEissue52PCREだと改行が.(ドット)にマッチしないので本文では「念のため」となっているけど念のためになっていなかった。(ebanさんから教えてもらった。)

第2刷まで

ページ場所修正前修正後発見者・状況コメント(主に上田)
p.105問題文4行目このシェルの挙動もシグナルに関係しています。これと同じような挙動はシグナルでも実現できます。issue6たぶん私が筆を入れたときに埋め込み -> みんなスルーという状況で発生したような気が・・・
p.106本文の3行目Ctrl+Qで発行されるシグナルCtrl+Qと同じ働きをするシグナル同上同上
p.127問題文のコードの10行目\N\dissue8あれ・・・なんでだろう・・・
p.1291番目のコードボックスと本文1行目\N\d同上同上
p.130練習問題の問題文のコードの7行目東から始まり東京から始まりissue9不注意でした。
p.140脚注16のURLhttps://docs.ruby-lang.org/ja/latest/docspec=2fregexp.htmlhttps://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.htmlissue10すみません!
p.247リスト5.3 3行目2020年1月1日2020年8月1日issue23不注意でした。
p.248解答例のコードの1行目,$0削除issue23間違いですが残っていても動くのでスルーされたようです。
p.2662番目のコードブロック$ split -b 1000 -d image.bmp image.bmp.$ split -b 1000 image.bmp image.bmp.issue27-dを使った没案の一部消し忘れのようです。
p.2662番目のコードブロックの直後の1行その番号から数字が開始するようになります。その引数の番号から数字が開始するようになります。issue27同上

macでの挙動についての情報

issueに寄せられたコメント

参考サイト

連絡先

  • @ryuichiueda(ひねりのない直球の愚痴・文句、外野からの意見の多い方を目にすると仕事の集中力が落ちるので、全く恨みはないんですけど機械的にブロックしている可能性があります。)
  • 他の著者のTwitterアカウント

About

書籍: シェル・ワンライナー160本ノックの情報ページ #shellgei160

Resources

Stars

235 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages