bash

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

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

ScanSnap Homeの常駐プロセスを終了したい - macOS版

小ネタです。 PFUのスキャナ「ScanSnap」を10年ほど愛用してまして、もう数百冊以上の書籍やら10年分のあらゆる書類や郵便物をスキャンしてます。めっちゃ便利!思い出や資料として取っておかない物はためらわずにデータ化した方が良いですね。部屋から本棚…

[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] MD5の値を大量にチェックする

小ネタです。 例えばsplitコマンドなどで分割したファイルをダウンロードした際に、一つ一つMD5の値を確認するのはダルいですよね。md5sumコマンドでは、予め検証したいファイルのパスとそのMD5の値をペアで記述されたファイルを用意しておくと、一発で確認…

[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…もとい負荷テストをするわけでもないといった場合…