破棄されたブログ

このブログは破棄されました。

bash

Bash でワンライナーの telnet モドキを作る

telnet がインストールされてなくても bash があれば行ける。 exec 3<>/dev/tcp/<hostname>/<port> && echo 'connected'; cat >&3 | cat <&3 ; echo 'connection closed.'; exec 3>&- 終えるときは Ctrl-C を押下する。 (cat に EOL を送る) コネクションを切られても自動で</port></hostname>…

cURL での WebSocket のデバッグ

TL;DR; WebSocket は、そのプロトコルの性質上、 cURL で簡単なデバッグを行うことができる。 具体的には下記のようなコマンドになる。 $ curl -v -i -N \ -H 'Sec-WebSocket-Version: 13' \ -H "Sec-WebSocket-Key: $(head -c 16 /dev/urandom | base64)" \…

名前付きパイプを用いたシェルスクリプトでの幅優先探索

幅優先探索をシェルスクリプトで実装するにあたり、キューを用意する必要があるわけですが、御存知の通り、while はサブシェルになるので、変数の受け渡しが糞めんどくさいですし、一時ファイルをディスク上に作成するのもなんか微妙な感じがします。 そこで…

(少なくとも Bash では)リダイレクト演算子の後の引数も取得できるっぽい

some_command opt1 >file opt2 こういう感じでリダイレクト演算子の後で指定された引数 (opt2) も取得することができる。 Bash って書いたのは、他のシェルで試してないから。 サンプルコード #!/bin/sh echo "$@" >&2 実行例 sh test.sh --before-redirecti…

POSIX における終了コードについてとか

POSIX の exit のページを見ていたら、こんなのがあった。 If n is specified, but its value is not between 0 and 255 inclusively, the exit status is undefined. http://pubs.opengroup.org/onlinepubs/009695399/utilities/exit.html 「終了コード 0 …

ログアウト時に .mysql_history から更新系クエリを消す

ゲーッ!! うっかり MySQL history に残ってた DELETE クエリ投げちゃった!! ってならないために、.bash_logout で .mysql_history から更新系クエリをごっそり削除してやる。 ただ、ログは残したいから消す前に diff をとって増分を .mysql_history.bak …

UTF-8 環境で Shift_JIS の文字列を grep する

grep $(echo 'ほげほげ' | nkf --oc=cp932) | nkf -w bash では動いたけどほかは知らん。あとでラッパーコマンド化しておこ。