てきとうなメモ

本の感想とか技術メモとか

Bash

set -eはどこまで有効なのか

シェルスクリプト(bash)はコマンドが失敗しても次のコマンドを実行してしまうので怖い→set -eしておけという話はよくあるが、実際どこまで有効なのか。 基本 コマンドの戻り値が0になった時にシェルを終了する #!/bin/bash set -e echo "before false" false…

bashでUnicodeのコードポイントを扱う

echo(ビルトインコマンド)を使うのと $ echo -e '\u3042' あ$'string'を使う方法がある $ echo $'\u3042' あバージョン4からみたいだが。あと、bashそのものではないけどGNU coreutilsのprintfつかうとコードポイントを指定して出力できるけどね。 $ printf …

extquote

bashで$'string'と入力すると、文字列の内部のANSI Cライクなエスケープシーケンスを解釈してくれるという機能がある。で、こちらの本の中でそれはextquoteと呼ぶと書いてあってあったので、呼び名があるんだと思ったのだが。シェルプログラミング実用テクニ…

bashのFlorian's patchとアップデート時の再起動

Shellshock関係でbashをアップデートした後にbashを利用しているプロセスを再起動するかどうかという話。 Mitigating the shellshock vulnerability (CVE-2014-6271 and CVE-2014-7169) - Red Hat Customer Portal RHELの文書はちょっと混乱していて最初は再…

Shellshockの攻撃をModSecurityで防ぐ

今回のShellshock問題の対策としては普通にbashのアップデートで良いのだけども、RedHatにModSecurityで防ぐ方法が載っていた。 The following mod_security rules can be used to reject HTTP requests containing data that may be interpreted by Bash as…

bashの脆弱性(CVE-2014-6271, CVE-2014-7169)

CVE - CVE-2014-6271 Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169) - Red Hat Customer Portal これはひどい。こんな感じで環境変数に設定したスクリプトを実行してしまう。 $ env x='()…

bashで一回でもエラーが発生したらスクリプトをエラー終了する

some_command if [ $? -ne 0 ] then echo "failed to execute some_command" exit 1 fi とか毎回やるのはめんどいので、 err_handler() { echo "failed to execute '$BASH_COMMAND'" exit 1 } trap err_handler ERR some_command ... とやればいいかtrapはシ…

bashの'\n'と';'の違い

これもOK。となると、次もOKでしょうよ、当然。 for x in 1 2 3; do; echo $x; doneガーン、ダメなんだってぇ。 syntax error near unexpected token `;' シェルスクリプトのセミコロンの打ち所がわからん - 檜山正幸のキマイラ飼育記 for文の改行が';'に置…

bashのbrace expansion

Some examples and what they expand to: {aa,bb,cc,dd} => aa bb cc dd {0..12} => 0 1 2 3 4 5 6 7 8 9 10 11 12 {3..-2} => 3 2 1 0 -1 -2 {a..g} => a b c d e f g {g..a} => g f e d c b a Bash Brace Expansion | Linux Journal 最初のやつは知ってい…