ふと、文字列の一部分だけをecho-sdで囲むような処理を作ってシェル芸botで遊ぼうと思い立ったので、やってみることにした。 文字列の一部分って何だよとなるが、具体的には以下のような出力。

   _人人人_
これが> 超 <ベジータだ!
    ̄Y^Y^Y^ ̄

じゃ、具体的にどうすればいいのかというと、以下のように一度echo-sdで囲む文字とそうでない文字で分解して、pasteで組み合わせたりしてやればいい。

sed -r 's/超/\necho-sd & \n/' <<<これが超ベジータだ!|sed -r '2!s/^/echo -e \\\\n/;s/.+/<(&)...

Twitterでそんな処理について見かけたので、調べた内容を残しておく。 GNU findの場合だと、-xtype, -deleteオプションがあるので、それを利用する。

find ./ -xtype l
find ./ -xtype l -delete
blacknon@test-ubuntu:~/testdir$ ls -al
合計 20
drwxr-xr-x  2 blacknon blacknon 4096  7月 25 10:38 .
drwxr-xr-x 52 blacknon blacknon 4096  7月 24 08:54 ..
-rw-rw-r--  1...

awsに接続してssh_configを生成するec2sshというツールがあるのだけど、awsやazコマンドで得たjsonをjqで加工して似たようなことができそうだなと思ったのでやってみた。 awsの場合は、以下のようにaws-cliでec2の情報を取得してjqに渡してやればいい。ユーザ名は取得できないので、必要であればjqの処理のとこに(決め打ちになってしまうが)追記してやればいい。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|(.Tags[]|select(.Key == "Name")|.Value...

たまーに、指定したファイルを使用しているプロセスを調べたいということがある。 そういうとき、大体は lsof や fuser で対象のプロセスを調べるのだけど、そういったツールが入ってない+インストールができない、めんどくさいといった場合、どうやって調べればいいのだろう。

Linux(というか、UNIX系OS共通だと思う)の場合、/proc配下にあるプロセスIDのフォルダの中にある各種ファイルやフォルダに使用しているファイルへのシンボリックリンクが貼られている(fdだったらstdoutやstderrといったファイルディスクリプタに。例として、「cmd > /path/to/xxx」...


データのインポート処理などで、進捗具合を確認するためにwatchコマンドで処理を定期実行させることが多いのだけど、その際に以下の点が気になっていた。

  • 実行履歴が記録されないので、どのタイミングでどのような変動があったのか確認できない
  • 出力結果がターミナルのサイズより行数が多い場合、スクロールできないので見切れてしまう
  • 差分確認時に前回の出力と比較ができない

一応、実行コマンドでいろいろと工夫すれば変動のあった差分のみファイルに出力させることも可能なのだけど、こんなんいちいち覚えていられないし、やはり面倒。

で、前にGolangでツール作ったのだけど、これについては今...


先日実施された、第36回シェル芸勉強会に参加してきたので、その復習。なんか、ブログの記事自体をすごく久しぶりに書いた気がする(個人的にRustで簡単なツール作ってるのだけど、難しすぎてそっちにリソース全振り中…。ある程度動くようにはなったけどいつ終わるのやら…簡単なはずだったのに…)。 大体いつもむずかしめの問題が多いのだけど、今回も難しかった。

問題及び模範解答はこちら。最初に、問題等に使用するファイルをgitからcloneしておくといい。

Q1.

welcome.txt」というファイルに隠されたメッセージを読み取れ、という内容。 単純にcatしただけだとアンダーバーし...