mattintosh note

Hello Raspberry Pi!

ShellScript

Raspberry Pi の CPU 温度を Zabbix Server に送る

Zabbix Agent で Raspberry Pi の CPU 使用率やネットワーク使用率は Zabbix Server と連携できるようになったけど、CPU の温度までは連携してくれない。 そこで Zabbix Sender を使って Raspberry Pi から Zabbix Server に能動的にデータを送る。 Raspberr…

シェルスクリプトで2進数や16進数を変換

最近、A/Dコンバーターを使うので2進数を扱うことが多くなってきた。Python なんかだと 0b や 0x といった書式や bin() や hex() といった関数があるが、シェルスクリプトの場合はどうするのか?マニュアルを見るとこんな風に書いてある。 Constants with a …

シェルスクリプトで最後の改行を取り除きたい

前に AWK を使ってやったことがあったような気がしたけど head だけで出来るんだよな…。AWK でやったことの方が印象が強くてこっちを忘れてしまう。 head -c -1 file あぁでも Unix の head に -c オプションが無くてそれで AWK を使ったような気がする。で…

SOX で Upsampling? stdout with mpv とか

この前、Raspberry Pi で cdrdao と toc2cue、bchunk でオーディオの取り込みが出来るようにした。 mattintosh.hatenablog.com AAC へのエンコードは長い間 Nero AAC Codec を使ってたが、結構古いしそろそろ最近のエンコーダの方がいいかなと思い、変えてみ…

カラオケメーカー by VLC/ffmpeg/mpv

久しぶりに MacBook Air を使っていて、なぜか「今聴いている音楽をカラオケ音源で聴きたいな」とか思ったのでやってみた。 ここで言う「カラオケ音源」とは ヘッドフォンのプラグが中途半端に抜けた状態のアレ のことである(何を言ってるのかわかると思う…

ImageMagick で「艦これ一覧めーかーカッコカリ改」

前回の「艦これ一覧めーかーカッコカリ」はただ単に並べるだけでしたが、今回の「改」ではアレンジを加えてみました。 mattintosh.hatenablog.com bg_compose="{mode}" を書き換えることでホロっぽい背景に変更可。ImageMagick の plasma: キャンパスは毎回…

ちょっとだけ真面目に「艦これ一覧めーかーカッコカリ」

昨日適当に作った艦隊これくしょんの改装画面一覧を作成するスクリプトを Gist で公開しました。 艦隊これくしょんの改装画面を自動的にトリミングし、任意の列数に配置します。艦娘の配置順をわかりやすくするウォーターマーク追加オプション付きです。 gis…

艦これ一覧めいかー(仮?)

まとめとかで見かけるアレを作るためのスクリプトを作ってみました。ImageMagick が必要ですが…。 艦これの画面画像(800x480ピクセル)があれば横2や横3などのレイアウトで一覧を簡単に作ることができます。 ■2列レイアウト ■3列レイアウト ■3列レイアウト…

ImageMagick で艦これの改装画面を自動アレンジ

久しぶりに ImageMagick を弄ってて反射効果の復習がしたかったので艦これ(艦隊これくしょん)の改装画面をキャプチャーしたものを convert 1回でアレンジするスクリプトを書いてみた。 必要なものは以下の画像6枚。艦これの画面は正確にクロップすれば800×…

ImageMagick を使ってテキストデータを画像に変換する

以前、フォント見本を出力するのに ImageMagick を使ってテキストを画像に変換したんだけどその方法を残してなくてちょっと忘れたのでメモしておく。 テキスト変換も色々オプションが多いのだけど端的に書くと以下のコマンドで任意のテキストを画像にするこ…

date コマンドで「○ヶ月前」

1 month ago とか使えない date コマンドで「○ヶ月前」ってどうやって出すのかな…と。 例えば6ヶ月前の場合。(引数がなければ ${gap} に -6) 自分なりに考えてみたものだと JavaScript の .getMonth() のように1〜12月を0〜11に変換してそれを戻すっていう…

複数の PDF ファイルをひとつにまとめる

Google Chrome でウェブページを PDF 保存したものを Ghostscript でひとつのファイルにまとめた。 gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=COMBINED.PDF *.pdf 上記のコマンドは面倒なので入力と出力の拡張子の大小文字を変更して出力ファイ…

シェルスクリプトでカラム表示とかセンタリング表示とか

これも Qiita に投稿できないのでこっちに。 〈カラム表示〉 /usr/bin/column /usr/bin/lam /usr/bin/paste /usr/bin/pr /usr/bin/rs 〈テキスト生成・加工〉 /usr/bin/fmt:テキストのセンタリング /usr/bin/fold:長くなったテキストを指定行で折り返す /u…

sh・bash・zsh 他 echo 比較

Qiita に投稿しようと思ったけど書式エラーで貼れなかったのでこっちに貼っておく。 GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) zsh 4.3.9 (i386-apple-darwin10.0) シェルおよびコマンドの種類 /bin/sh /bin/bash /bin/bash(xpg_echo…

bash の for NAME in WORDS で "in WORDS" を省略した場合

help for より。 If `in WORDS ...;' is not present, then `in "$@"' is assumed. in WORDS を与えない場合 in "$@" だと仮定される。とのこと。 sh -c 'for args; do echo $args; done' -- "1 a" "2 b" "3 c" 1 a 2 b 3 c 書いてないソースコード見たこと…

while read で何故次の行が読めるのか

Qiita に投稿しようと思ったけどなんか毎回同じようなこと書いてても他の人にはまったく関係ないよねってことでブログに。 また新しい疑問が沸いて来た。 「while read; do :; done < file で何故次の行が読めるのかわからない。」 だって read < file した…

シェルスクリプトの雑記帳

シェルの初期化 env を経由することにより環境変数などをリセットできる。 #!/usr/bin/env - SHELL=/bin/sh LC_ALL=C TERM=xterm COMMAND_MODE=unix2003 /bin/sh ただし以下のように実行された場合はリセットされない。 $ sh script.sh 最低限?必要な環境変…

sed で awk とか grep っぽいこと

何のソースで見たか覚えてないけど Xcode のパスの取得について調べていたときのこと。 SDK のパスはコマンド一つでは取り出せず、xcodebuild -version -sdk <sdkname> から取得しなくてはいけない。 $ xcodebuild -version -sdk macosx10.6 MacOSX10.6.sdk - 'Mac OS</sdkname>…

osascript でダイアログ表示「tell application "Finder"」と「tell application "AppleScript Runner"」

osascript でダイアログを表示するのに今まで tell application "Finder" 使ってたけど都度 activate しなきゃいけないし Finder の制御を持っていかれるのが面倒だった。AppleScript と同じ感じで使えればいいんだけどな〜と思って調べてみたら tell applic…

Wine のプロファイルの隠蔽化

iNSTANTWiNE で試用中の「スパースバンドル」の話。「スパースバンドル」っていうのは可変サイズディスクイメージでマウントしていない場合は“何か”のデータが入ったただのフォルダ。多分これならマウントしていない間は Wine のプロファイルを見ることはで…

Mac × ffmpeg × Automator

ffmpeg を更新したので Finder に追加している ffmpeg 変換サービスのスクリプトを書き直した。 # template: services # source: file or folder # mode: args cd $TMPDIR printf '#!%s\n' $SHELL > $$$$ for f in "$@"; do test -f "$f" && printf '/usr/lo…

Finder で選択した項目を Wine で開く(ターミナル兼用版)

Automator を使った Finder 用サービスのサンプルです。Finder で選択したファイルをコンテキストメニューからターミナルアプリケーションを経由して Wine で実行します。 WINELOADER の部分は MacPorts 用なのでそれ以外の場合はパスを変更して下さい。ター…

Wine で msi ファイルを開くときの「msiexec /i」を省略できるようにする

Wine で msi ファイルを開く時は… $ wine msiexec /i hoge.msi な感じで実行するんですが、bin/msiexec なんてものを発見。これもしかして単体で実行できるんじゃないの?って調べてみたら出来るっぽい。 msiexec - The Official Wine Wiki というわけで起動…

💻 sed でタブを入力するには?

sed でタブの削除や置換をしたりする話です。

Finder で選択した動画から ffmpeg で音声を抽出する

Automator と ffmpeg を使って Finder の選択項目から音声を抜き出したりするためのシェルスクリプトを考えてみた。サービスとして登録し、Finder のコンテキストメニューから呼び出せばターミナル上で ffmpeg を使って処理を行う。拡張子抽出部分はテストソ…

Finder からアーカイブの中身を確認する

ちょっと tar の勉強中なので Finder から選択したアーカイブ内のファイル一覧をテキストエディタで開くシェルスクリプトを考えてみた。 # mode: stdin while read f do [ ! -f "$f" ] && continue ### open in term ### #tmp=/tmp/`uuidgen` case "${f##*.}…

Finder で XZ 形式を扱う(p7zip)

この前、XZ Utils を使ったワークフローを作ったけど、--threads オプションを使っているのにスレッド数が増えないのでマニュアル見直したら「マルチスレッドにまだ対応してない」みたいなことが書いてあったので p7zip を使うことにした。 # mode: stdin wh…

Mac で p7zip のセルフビルド

MacPorts 版を使ってるけどセルフビルドを試してみたかったので。 MacPorts のポートファイルを見てみたら makefile.machine を変更することでカスタマイズできそう。makefile.macosx_64bits を makefile.machine にコピーして OPTFLAGS=-O を OPTFLAGS=-O3 …

Mac で 7zFM.exe を使う

Windows のアーカイバはファイルマネージャーを搭載していることがほとんどだけど、Mac ではあまり見かけない。コマンドラインなら p7zip や zipinfo を使ったりもできるけど、そこからさらに選択したファイルだけを解凍…となると GUI の方が楽だったりする…

Finder で選択した複数のディレクトリを個別に ZIP にする

Finder では複数の選択項目をひとつのアーカイブにすることはできても、個別にアーカイブ化することができないので Automator でアプリケーションを作ってみた。日付別なんかで JPEG イメージが保存されたディレクトリを個別に ZIP 化するのが目的。 ファイ…