Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

linux

シェルスクリプト だけで数値が格納されたファイルの数値を加減算する

実際のところ 数値が一行分格納されてるだけの以下のようなファイルがあったとします。 $ cat basedata.txt 14こいつの値を1追加して上書きするにはexprをつかって以下のような感じで実装します $ expr $(cat basedata.txt) + 1 > basedata.txt $ cat baseda…

シェルコマンドでifなしで前のコマンドが成立した時に次のコマンドを実行する

とある事情により、if文やtest([)を使わずにファイルが存在するか確認して次のコマンドを実行するという奇怪な処理を実装する必要がでてきました。 その時の調査メモです。 実際のところ 手っ取り早い方法としてlsで存在を確認し ファイルが存在しないとエラ…

diskutilのサブコマンドeraseDiskでSDカードを初期化

クソザコナメクジなので知らなかったのですが、diskUtilってフォーマット用の命令もあったんですね…… これを使えば、RasPI用カードの初期化が楽にできちゃいます。 実際のところ コマンドの説目いをみると、以下のようになってます。 $ diskutil eraseDisk -…

shellでTDDするshunit2 その5:Table Driven Testで似たテストを自動化

Table Driven Testをつかうと、似たデータのテストをブン回すときに便利です。 実際のところ ヒアドキュメントで while read desc arg want; do got=$(fn ${arg}) rtrn=$? assertTrue "${desc}: fn() unexpected error; return ${rtrn}" ${rtrn} assertEqual…

shcコマンドでシェルスクリプト を難読化(というかバイナリ化)する

まあ、ガチの人に狙われたら一たまりもないので……気休めかもしれません。 実際のところ myscript.shを加工したい場合、以下のコマンドで"myscript.sh.x"と"myscript.sh.x.c"というのができます。 構造としては、シェルスクリプトをC言語に変換し、そいつをビ…

seqとprintfでjotの16進数っぽい記法をつかう

shuzo-kino.hateblo.jp という記事を書きましたが……jotはopenBSD由来のコマンドで 多少遅くなっても seqとprintfの合わせ技の方が良さげ $ seq 0 10 100 | xargs printf "0x%04x\n" 0x0000 0x000a 0x0014 0x001e 0x0028 0x0032 0x003c 0x0046 0x0050 0x005a …

netcat/ncの送信データ改行をCRLFにする

C' Send CRLF as line-ending $ echo "hoge" | nc -C localhost -p 8080linux.die.net

Raspberry Pi 3 B+を WiFiアクセスポイントとして運用する

RasPiをWiFiアクセスポイントに設定すると、 機器の接続で楽できて便利ですね。 今回はそんな話。 実際のところ 参考もと様にスクリプト例が置いてありましたので、 こちらを参考に……。 #!/bin/bash # # This version uses September 2017 august stretch im…

cuコマンドで簡単にシリアル通信をやる

実際のところ $ cu -s 9600 -l /dev/ttyUSB0やめるときは "~"の後に"." 参考もと 【入門】Linux機にUSB-シリアル変換ボードをつなげてみる【備忘録】 | 團長の小部屋 https://linuxjf.osdn.jp/JFdocs/Remote-Serial-Console-HOWTO/index.html ttyについて tt…

netcatで擬似的なWEB鯖をつくる

実際のところ 鯖 whileでブンまわしつつ、ncにcloseで毎回切るように。 $ while true; do ( echo "HTTP/1.0 200 Ok"; echo; cat -u ./sample.html ) | nc -c -l -p 8080; doneファイルはこんなもんをつかいました。 $ cat sample.html <body> here!! </body> 送信 $ nc lo…

netcat/ncの受信モードで実行後にコマンドを実行しておくる

-e, --exec=PROGRAM program to exec after connect 実際のところ 受け側 $ nc -l -p 5000 -e "echo 123" 送り側 $ echo yeah! | nc localhost 5000 実行結果 受け側 $ nc -l -p 5000 -e "echo 123" $ 送り側 $ echo yeah! | nc localhost 5000 123 read(net…

netcat/ncの受信モードで連続して受け取るようにする

netcat/ncの受信モードだと一個パケットをつかむと止まったりします。 これを継続するには-kオプションです。 ……例のごとく、なぜかmacOS環境ではmanやhelpには載ってません。 どういうこっちゃ……?? k' Forces nc to stay listening for another connectio…

netcatの-cオプションで送って閉じる

netcatで送信を行うとき、うまくコマンドが閉じないケースがあります。 とくにUDPだとそのまんまです。 このとき、-cオプションを使うとうまく閉じる事ができます。 実際のところ パイプに繋げたUDP通信で、送ったきり閉じてしまいたい時は以下のようにしま…

スペース文字が入ったファイル名をxargsを使って一括変換したいとき、-0オプションを使うといいかも

シェルスクリプトでファイル名を一括変換したり、ファイル移動したりしたいが 該当ファイルにスペースが入っていてxargsがうまく動かない場合があります。 そんな時は、ヌル文字をデリミターにつかう"-0"オプションが使えるかもしれません。 実際のところ こ…

nkfコマンドで半角を全角に

$ echo カタカナ | nkf カタカナ$ echo ハンカクカタカナ34マジムリ12…… | nkf -wxZ4 ハンカクカタカナ34マジムリ12…… $ echo ハンカクカタカナ34マジムリ12…… | nkf -w ハンカクカタカナ34マジムリ12……$ echo ハンカクカタカナ34マジムリ12…… | nkf -wxZ4 | nkf --hiragana はんかくかたか…

sed $'s/regexp/\\\n/g'という記法はANSI-Cのバックスラッシュ記法を適用するbash独自実装である

前の記事で使った sed $'s/発注済/\\\n/g'なる奇怪な実装ですが……こちら、GNUの資料をみると 3.1.2.4 ANSI-C Quoting Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as spec…

RasPiのeth0が見当たらず、代わりにenxXXXみたいな名前になってるとき

一般にLinux系では有線LANのポートはeth0です。 ところが、最近のRasPiではこれが見当たらず、代わりにenxXXXみたいな名前になってます。 これは装置のmacアドレスから決められてるのですが……ポータビリティという観点ではありがた迷惑ですね……。 というわけ…

bashでプログレスバーを実装してみる その2:プログレスバーの文字列を変数代入でやる

shuzo-kino.hateblo.jp の派生です。 実際のところ 以前はプログレスバーの文字列はyesコマンドを中心としたパイプ処理にて行いました。 今回は、より泥臭く変数代入でやってみます。 #!/bin/sh for i in `seq 20 20 100` do COUNT=$i STR="${STR}##" printf…

grepの--line-bufferedオプションで行ごとに出力

標準入力をうけとって処理するgrepコマンドの場合、行ごとに出力できた方がいい場合があります。 そういうときは"line-bufferd"オプションです。 実際のところ $ netcat -ul -p 5000 | grep --line-buffered sender 参考もと hogem.hatenablog.com man grep

netcat/ncコマンドでUDPパケットを受ける/送る

極々少量のデータを送りたいだけ……なんて時はUDPを使ってみるのも手かなと思い調べてみました。 UDPは音声や、設定ファイルの内部むけブロードキャスト通信で使ったりします。 上手につくると、スプラトゥーンのような展開の激しいゲームでもP2Pめいたデータ…

ffmpegコマンドでMOV形式の動画をmp4にする

iPhoneでとった動画はMOV形式になります。 お客に展開する際、windows環境だとマトモに出なかったりしますね。 恥ずかしながらオンラインツールでやってたのですが……ffmpegコマンドをつかえば、一発でいけます。 実際のところ デフォ設定でinputfile.MOVをou…

シェルでtty端末を初期化する

シェルでtty端末を初期化する場合、sttyコマンドをつかいます。 実際のところ ttyUSB0を115200で初期化する場合 $ stty -F /dev/ttyUSB0 115200 参考もと unix.stackexchange.com Man page of STTY

シェル経由でtty端末と情報の読み書き

実際のところ あらかじめ設定済みの/dev/ttyUSB0を対象とします。 読む $ tail -f /dev/ttyUSB0または $ cat /dev/ttyUSB0 書く 一行書く。 $ echo "val=123" > /dev/ttyUSB0改行不要なら"-n"で。 $ echo -n "val=123" > /dev/ttyUSB0printfでもいけます。お…

curlコマンドで標準入力の結果を受け取る

curlコマンドはPOSTアクションを実行できます。 これを使って簡易な投稿のシステムを作る時、標準入力の結果を受け取る事ができると便利ですよね。 今回はその方法について。 実際のこころ 文字列"SOMETHING"をcurlでYOUR_DISTに送る場合、以下のようにしま…

XWindow環境(i3など)で"Fatal server error: could not open default font 'fixed'"と出たら……フォントの入れ忘れかも

XWindow環境(i3など)で"Fatal server error: could not open default font 'fixed'"と出たら……フォントの入れ忘れかもしれません。 実際おtころ 環境を再構築していた時のこと……。 $ vncserver :1 -geometry 1280x800 -depth 24 Couldn't start Xtightvnc; t…

scpコマンドでUNIX系システム間ファイル送信

scpコマンドをつかうと、UNIX系システム間ファイル送信できます。 たとえば、macOS上でセコセコ作っていたC++のコードをRasPiに転送したり……。manの解説によると以下の通りなので……sshコマンドの仕組みを使ってるようです。 scp copies files between hosts …

同一LAN内のIPaddressをしらべる

実際のところ $ echo 192.168.0.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl | cut -d" " -f 4 | tr -d : 192.168.0.3 192.168.0.1 192.168.0.13 192.168.0.18 192.168.0.21 ... 192.168.0.201 192.168.0.202 192.168.0.254 192.168.0.253また…

Raspbian環境にて無線LAN + 固定IP設定(内部)

Raspbian環境にて無線LAN + 固定IPを設定する方法です。 私の用途ではルーターから外には出るものの、 ルーター外部からアクセスするケースは考えていない構成です。 実際のところ ターゲットはRaspbianで 固定IPはローカルネットの中だけで使用する、"192.1…

tightVNC環境をRaspberry Pi 3 B+/ Tinker Board Sにつくる

debian側 sudo apt install tightvncserver初回起動ではパスワード指定。 閲覧用のパスもあるが、今回はなしで。 $ vncserver You will require a password to access your desktops. Password:******** Verify:******** Would you like to enter a view-onl…

軽量なアプリランチャーdmenu

i3環境は軽量ですが、とはいえアプリランチャーみたいなのが無いと若干不便なのも事実。 そういう時にはdmenuが使いやすいです。 ……まぁ、こう文字で説明するより動画で見た方が威力がわかるかも……。 www.youtube.com 実際のところ i3環境の場合 タイル型デ…