シェル

「いらすとや」さんのトランプ画像をまとめてダウンロードする

小ネタです。 「いらすとや」さんのトランプ画像を使わせていただこうとしたら、1枚ずつ保存しなければならないようで心が折れそうになったため一括でダウンロードできるシェルスクリプトを組みました。……組んだのですが、URLのハッシュ値の法則性を解析する…

[macOS] Terminalでファイルを監視し更新されたら指定の処理をする - fswatch

一言で言えばGulpのようなタスクランナーっぽいことをmacOS上でやりたかったのです。 「Gulp入れればいいじゃん」という話もありますが、今回はファイルが更新されたら特定のコマンドを実行したいだけだったので、わざわざNode.jsの環境を整えてJavaScriptを…

[Linux] bashで超簡易的な改ざん検知を行いSlackに投げる

小ネタが続いてますが、今回も小ネタですw Webサイトの改ざん検知を手軽にパパッと行いたい場合、単純にcurlなどで取得したファイルをdiffで比較するだけでも実現できます。 というわけで以下がコード。ここでは最終的にSlackに通知しています。 #!/bin/bas…

[Linux] Bashでファイル一覧を順番に処理したい

Bashで特定のファイルを順番に処理したい場合、配列をforでぐるぐる回してやるのがお手軽です。ここでは配列listで定義した3つのファイルを順番に指定ディレクトリへコピーしています。 #!/bin/bash # 対象のファイル一覧 list=( /tmp/foo.txt /tmp/bar.txt …

[Linux] Bashでlsやfindの実行結果を1件ずつ処理したい

Bashでlsなどコマンドの実行結果を順番に処理したい場合は以下のようにforでぐるぐる回してやるだけです。 #!/bin/bash for file in `ls /tmp/*.json`; do echo "copy ${file} to /home/foo" cp $file /home/foo done ここでは「/tmp」ディレクトリ配下にあ…

[Linux] Bashで一定件数以上のファイルを削除する

日次バッチなどを作っていると、例えばバックアップファイルは最新30件だけ保存し、それ以上古いファイルは削除したいといった気持ちになりますよね。そんな時に利用するのが次のワンライナー。 $ cd backup/ $ rm -f `ls -t . | tail -n+31` これだと30日前…

[Linux] Bashでwgetの戻り値をチェックする

小ネタです。 シェルスクリプトを書いている際にwgetで正常にファイルをダウンロードできた場合のみ処理を継続したい場合には次のようなコードを書きます。 #!/bin/bash wget 'https://example.com/foo.zip' if [ $? -ne 0 ]; then echo "[ERROR] 正常にダウ…

bashで知能指数の低いbotを作成する

何らかのAPIを延々と自然な形で叩き続けたいときがありますよね。え?ないw? ← JMeterのようなテスト用のフレームワークを使っても良いのですがそこまでするのは準備が面倒だし、ApacheBenchのようにDDoS…もとい負荷テストをするわけでもないといった場合…