Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

bash

debian系OSでUSBデバイスをソフトウェア的に抜き差しする

node-redでUSBカメラを使おうとしたところ、 おそらくUIの方に握られてInjectの時刻毎の実行ができないケースに遭遇しました一応抜き差しで何とかはなったものの、最終的にはリモートで操作したいので……これを機にコマンドでやる方法を調べる事に 実際のとこ…

m4とimagemagickを使ってHTMLテンプレートにインライン画像を埋め込む

実際のところ Data URIを使って、インライン画像を生成 PNG画像のインラインなら、特に記述変更の必要なく埋込ができます convert rose: -resize - inline:PNG:-これをm4をつかって埋込します 以下の様にテンプレート(index.html)を用意して <html> <body> <img src="YOURIMG1"> <img src="YOURIMG2"> <img src="YOURIMG3"> <img src="YOURIMG4"> </body> </html> m4を実…

pgrepのオプションを使い、コマンドの詳細や新しいのだけ出したりする

実際のところ 素で実行すると、単にプロセス名がでるだけ # pgrep bash 1 16 25 プロセスの細かい内容をだす # pgrep bash -a 1 bash 16 bash 25 bash 一番古いプロセスをだす # pgrep bash -o 1 一番新しいプロセスを出す # pgrep bash -n 25 参考もと Man …

GNU Parallelでファイルの移動とリサイズ

実際のところ 9~30までのファイルを名前を変更して移動し、かつ移動したファイルを別名でリサイズ # cat vZ.txt 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30# parallel -a vZ.txt 'mv /root/Downloads/dict/image\ \({}\).png /root/…

改良型SSHとして使えるMOSHというものについて

termiusを使っていたらmoshとかいうのが MObile SHellの略らしく、途中でスリープ等でロストしてもセッションを継続してくれたり、 接続先のWiFiスポットが切り替わっても生きる様子。移動体で使うには結構便利なんでは? 実際のところ 接続先の方でサーバー…

shiftで関数やスクリプトファイルの引数を順繰りによむ

実際のところ $ foobar () { printf $1; shift; printf "_"$1; }$ foobar 12 34 12_34 応用例:パラメータの読み込み shiftをつかうとオプション値の順次読み込みのような動作を実現できます。 #!/bin/bash declare color=null declare value=0 until (($#==…

配列の中に格納された文字列の長さを調べてprintfに渡す

$ myary=("1234" "5678" "909")$ echo ${myary[0]} 1234echo ${#myary[0]} 4$ LONG=${#myary[0]} $ printf "%${LONG}s" s sループで回して一番長い奴を探してそれに合わせるとかできるかも ……まぁ、実行速度考えれば先に決めとけって話ではあるのですが 参考…

bashtopで格好よい機体情報表示

Jetson用の機体状態表示ツールであるjtopがかなり恰好良かったので、 これに似たような事ができるツールを探したところ……ありました 本家はbtopというツールのようですが、こちらのbashtopはそのまんまbashで稼働するツールです。 実際のところ 導入 aptで導…

unitsコマンドは異なる単位系での計算もできる

実際のところ 時間の計算 $ units -t "24 hour + 34 minute" sec 88440 異なる単位の足し算 $ units -t "1 inch + 34 cm" m 0.3654

units_curでunitsコマンド用通貨のレート更新を行う

日本円に設定して最新のレートを引っ張るには units_cur -b JPY試してみると # units Currency exchange rates from FloatRates (JPY base) on 2022-08-23 3304 units, 92 prefixes, 107 nonlinear unitsこの状態であれば units -t "100 HKD" 1749.1684 japa…

unitsコマンドのフォーマット

実際のところ ”-o”が出力フォーマット指定のオプション いわゆるANSI-Cフォーマットなので、gで整数型、fで浮動小数点型 $ units -o "%.10g" "12 m" cm * 1200 / 0.0008333333333 結果の数値だけ表示したいなら追加で"-t" $ units -t -o "%.10g" "12 m" cm 1…

unitsコマンドで3ミリ光秒の到達距離を調べたりA4用紙何枚で一畳になるか調べたりする

unitsコマンドは単位から単位の簡易計算に使えるツールです A4用紙のサイズといった規格から、mからマイルへという変換も簡単にできます 実際のところ 例として3ミリ光秒*1とマイルの対応なんていう (すくなくとも私は)突然新橋の路上で聞かれても回答できそ…

bashの特殊変数”$-”から現在実行中のシェルのオプションを読み取る

bashの特殊変数”$-”から現在実行中のシェルのオプションを読み取る 実際のところ $ echo $- himBHsこのうち、"i"は対話モード。 何らかの事情でコマンド実行中のシェルが対話型か実行したい場合は case "$-" in *i*) echo This shell is interactive ;; *) e…

Atom Cam2のRTSP配信をうける

これまでRasPiにUSBカメラを載せて動かしていたシステムをIPカメラで置き換えることになりました カメラはあくまで動画配信のみ、画処理は受信先で一気にやる想定で選定しました。 今回の配置先と性能、評判を総合的に考えて選んだのが、こちら。 ATOM Cam 2…

ffmpegでRTSP配信しているカメラから静止画をとる

実際のところ 実行環境 Ubuntu 20.04LTS on Docker ffmpeg version 4.2.7-0ubuntu0.1 コマンド Atom Cam2のLive streamを画像でうけとる方法は以下のようになります。 YOURPATH=rtsp://XXXX:YYYY@192.168.Z.A/live $ ffmpeg -rtsp_transport tcp -stimeout 2…

FigletとかToiletで使えるフォント

実際のところ デフォは/usr/share/figletにあるもので、様式さえ合っていれば自前定義も可能。 flfかflcという様式らしい。 "-d"でディレクトリを指定すれば新しいのも使える。たとえばfutureだとオールドフューチャー的な雰囲気 外部からフォントをもってく…

端末の文字列を装飾するtoiletコマンド

実際のところ $ sudo apt install toilet 使い方 とりあえず表示 $ date +'%F %T' | toilet -f term -F border --gay デジタル時計風 $ while true; do tput clear; date +'%F%n%T' | toilet -f big --gay; sleep 0.2; doneこれが、こんな感じで表示されます…

手元端末からPTY経由でUDPで送る

何やらヤヤコシイ事をしている気がしますが……手元PCの疑似端末(PTY)に送るデータをUDPで遠方に送る方法です。 実際のところ 送信側 対話はscreenやminicomで/dev/vmodem0に接続して行います。 ptyのオプションwaitslaveを使う事で他所のプロセスがlink先を…

socatの入出力でエスケープ文字を設定

実際のところ 以下の例ではバイナリ”0xdeadbeef"が送られるものの、escapeに0xbeが設定されているためそこで読み込み中止、stdoutには\xdeadが出力されます。 echo "\xde\xad\xbe\xef" | socat stdio,escape=0xbe stdio使えるのはSTDIOに限りません。 UDPで…

m4でシェルコマンドを実行するには"syscmd"

シェルスクリプトで使用する想定なマクロエンジンm4は、必然としてシェルコマンドの内部実行も可能。 実際のところ 目的であるテンプレートエンジン的な使いかた 引数にファイル名をとり、独自コマンドをパイプで渡して、それをcatでキャッチして実行という…

m4で対話型デバッグ

m4は実際にはマクロを記載したファイルを実行するような形で運用するのですが、 量が増えてくるとチョコチョコと確認したくなるタイミングも出てきます。 幸い、m4にも対話型インターフェイスが備わっています。 実際のところ "-i"オプションを付ければ対話…

テキスト処理ツールm4はシェルスクリプトでテンプレートエンジン的に扱える

slimやjadeのようなテンプレートエンジンを使うとHTMLの一部を置き換えしたりできます。 シェルスクリプトでコレを実現する場合、私はいままでgrepだのsedだのawkだのをブンまわしていました。さて、ここで昔から使われいるテキスト処理ツールのm4が登場しま…

サブシェル内の実行結果をリダイレクトでファイルに飛ばす

$ ./mycmd > my.log みたいな事は普段シェルスクリプト書く人はご存知かと思います。 ここで、組み込みコマンドexecとサブシェルを使うとサブシェル中の実行結果をリダイレクトさせることが可能に・ 以下の例では、日付を出力した後mycmdを実行しそれをmylog…

curlの速度を制限する"limit-rate"オプション

妙に帯域が細かったり、あまり優先的でない処理を行う際、limit-rateオプション使うと速度制限ができます。 実際のところ 速度を1k/secに制限した状態で"http://foobar/download"からfile.extという名称でダウンロードするには $ curl -o file.ext --limit-r…

netcatの"-k"オプションと名前付きパイプを組み合わせる

shuzo-kino.hateblo.jp の続き的内容 netcatの"-k"オプションは読み取りを連続させるオプション これと名前付きパイプを組み合わせると、別プロセスで動いてる標準入力まちのコマンドに文字列を送り込む事が可能に 実際のところ 標準入力をループでまってるY…

PVコマンドで転送の進捗をだす

いくらお手製ツールでも、長時間掛かるような奴は進捗が見えないとさすがに不安になります。 pvコマンドを使うと、そのあたりの可視化が可能に。 実際のところ "-p"はアニメーションするプログレス表示、"-b"は転送済みバイト列。 $ nc -l 9999 | pv -pb > t…

atコマンドでCan't open /var/run/atd.pid to signal atd. No atd running?とか怒られたら……そもそもサービスを起動していないかも

指定日時にコマンドを実行してくれるatコマンドについての話題 実際のところ atコマンドを導入済みの新しい環境……というかWSLでatコマンドを実行しようとしたところ $ echo "pwd > dev.log" | at now warning: commands will be executed using /bin/sh job …

fswebcamの標準出力を明示的にPNG/JPEG化する

実際のところ fswebcamの標準出力は何もしないと以下のようにJPEGで出てきます。 Writing JPEG image to '-'. 受け手の都合でPNGにしておきたい場合、pngオプションが使えます。 引数は圧縮率で0~9を指定可能、-1にすると自動選択となります。 以下の例では…

fswebcamでpng画像をオーバーレイさせる

実際のところ 元画像を生成。 imagemagickのビルトイン画像であるroseをpng画像として保存 $ convert rose: rose_logo.png生成したPNG画像を"overlay"オプションにて使用 $ fswebcam -d /dev/video0 --overlay rose_logo.png --no-banner -結果はこんな塩梅に…

標準入力をwhileループで待ち受けるpython3スクリプトに名前付きパイプ越しに別の端末から文字列を送り付ける

なんだかクッソ長いタイトルですが……要は python3側はwhileループで標準入力にきた結果を待ち構えている 標準入力には別の端末で生成された文字列を送り込みたい という課題を、これまで作ってきたモンの寄せ集めで作ってみましたという話 実際のところ 名前…