Bye Bye Moore

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

linux

時刻フォーマットISO 8601について

いままで時刻というと 2013-09-01 06:52:14といった読みやすいフォーマットを勝手に作ってましたが GPSと連動する仕事が多くなってきてスペースが邪魔だったり色々あったので 調べ直してみました。すると、当然というか何というか、世界基準のタイムスタンプ…

opensslのサブコマンドで特定の16進数が素数かどうか判定する

$ openssl prime -hex ABAB is not primeなんやこれ生活便利ツールか(今更— 木野修造@零細事業主 (@shuzo_kino) September 27, 2019 特定の16進数が素数かどうか即出てくる人は少ないと思います。 OpenSSLのサブコマンドprimeは16進数でも、それが素数かど…

dateコマンドで日時の文字列をN時間進める

実際のところ 協定世界時を日本標準時に変更するのは以下の通り $ date -d '2013-09-01 06:52:41 9 hours' '+%Y-%m-%d %H:%M:%S' 2013-09-01 15:52:41

opensslのサブコマンドでpen特定の16進数が素数かどうか判定する

$ openssl prime -hex ABAB is not primeなんやこれ生活便利ツールか(今更— 木野修造@零細事業主 (@shuzo_kino) September 27, 2019 $ openssl prime -hex AB AB is not prime $ openssl prime -hex D D is prime

Ubuntuのユーザーに紐づいたパスワードを変更

実際のところ デフォではパスワード設定のあるなしに関わらず、上書きされます。 入力が表示されない状態で、二回入力します。 $ sudo passwd user1 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワ…

ユーザーのデフォルトのホームディレクトリを変更する

実際のところ $ useradd -d /etc/ userA 参考もと 【 useradd 】 ユーザーを追加する | 日経 xTECH(クロステック)

usermodコマンドで端末のユーザー管理を行う

yourgropというグループを作成し、ユーザーuser-nameを登録する手順は以下の通り。 sudo usermod -a -G <yourgroup> <user-name>他にも、時限式のユーザーを作成したり、特定のユーザーのパスワードを無効化してログインできなくしたりする能力があります。 参考もと man usermod</user-name></yourgroup>

X WindowはUbuntuでも使える

shuzo-kino.hateblo.jp ではRasPiでやっていましたが、VirtualBox上のUbuntuでも当然同じことができます。 実際のところ $ ssh -X -C user@localhost -p 2222 encrobot@localhost's password: Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-36-generic x8…

PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'とか怒られたら

Pythonでシリアルポートを開こうとしたところ、以下のようなエラーが。 >>> ser = serial.Serial('/dev/ttyACM0', 57600) Traceback (most recent call last): File "/home/hoge/anaconda3/lib/python3.7/site-packages/serial/serialposix.py", line 265, i…

diffの"-r"オプションでディレクトリ単位でのdiffをだすことができる

diffの"-r"オプションでディレクトリ単位でのdiffを出力できます。 用途としては 何らかの事情でGit管理外で更新したネタ*1の差分チェック 似た作業だけど途中から過程が違うログファイルの比較*2 なんかがあります。manの解説はこんな風になってますね。 -r…

Linux系のシェルでi2cを扱う

i2cのインターフェイスが出ているLinux系環境でシェル経由でi2cデバイスを扱うコマンドがあります。 実際のところ 導入 $ sudo apt-get install i2c-tools つかいかた i2cset "-y"は対話モードを無効化。パイプでつなぐなら必須。 i2cset [-f] [-y] [-m mask…

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

実際のところ 数値が一行分格納されてるだけの以下のようなファイルがあったとします。 $ 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