2022-01-01から1年間の記事一覧
まとめ //go:generate sh -c "m4 -DVAL=\"hello world\" hello.go.m4 > hello.go" 注意点 //go:generateディレクティブ以降に指定されたコマンドはシェルで実行されるわけではない。 だからシェルが提供する機能であるクオート、標準出入力は使えない。 ただ…
pkg.go.dev fs.FSを実装するには次のインターフェースを満たす具象型を実装しなければならない。 fs.FS fs.File and / or fs.ReadDirFile fs.DirEntry fs.FileInfo 多いね。それぞれのメソッドとインターフェースの関係は次の図で表すことができる。 例えば…
github.com Usage postsrv [-flag] cmd [arg ...] postsrvはとてもシンプルなHTTPサーバー。 カレントディレクトリをサーブするファイルサーバーとほとんど同じだが、/uploadはPOSTリクエストをハンドルする。 POSTリクエストのBodyが標準入力を通してcmdへ…
Unixにはシステムコールやライブラリ(C言語)、コマンド(シェルスクリプト)などのインターフェースを定義したPOSIXという規格がある。移植性の高いソフトウェアの開発を容易にすることを目的としており、GNU/LinuxやmacOS, BSDなどはPOSIXにだいたい準拠…
github.com u9fsはPlan 9に付属している(のに)Unix向けのソフトウェアである。これはUnixのファイルシステムをPlan 9の通信プロトコル9Pでサーブし、Plan 9でマウントすることを目的としている。私は初め使い方が全く分からなかったので、私と同じ人のため…
これは技術ブログでない。ただの日記だ。 皆様はPythonでUnixのコマンドcatを実装できますでしょうか?それっぽいのではなく、ちゃんと標準の/bin/catと同じ動作するものを作ろうとすると意外と引っかかる部分が多いと思います。 まず最も単純な実装(cat1.py…
タイトル通り。 github.com [init]-+-[systemd-journald] |-[systemd-udevd] |-[systemd-oomd] |-[systemd-resolved] |-[systemd-timesyncd] |-[acpid] |-[avahi-daemon]---[avahi-daemon] |-[@dbus-daemon] |-[irqbalance] |-[python3] |-[polkitd] |-[powe…
sedの置換表現s/foo/bar/のセパレータは/でなくても良い。\と\n以外の1byteキャラクターなら何でも良い。だからsequenceも使える。 $ echo _qu_ | sed sequence _nc_ 他に使える英単語は?次のシェルスクリプトを使って探そう。 #!/bin/sh words=/usr/share/…
zshはmacOSのデフォルトログインシェルである。多機能で便利なシェルであるが、ダム端末で使われることを想定していないようだ。この記事ではダム端末とはshellやコマンドの出力をそのまま表示する端末のこととしよう。Acme, 9term, Emacs shellなどはダム端…
Brian W. KernighanとRob Pikeの「Unixプログラミング環境」にはpickと呼ばれるコマンドが紹介されている。 これは対話的にプログラムを処理するためにシェルスクリプトで書かれたツールである。pick args...とすると、引数を一度に1つずつ表示しユーザーの…
新しいものが見つかるたびにこまめに更新する予定 TermuxはAndroid上でLinuxのシェルが動かせるアプリケーションである。現在はF-Droidまたは直接apkをダウンロードすることによりインストールができる。このページではルート化していないAndroidについて述…
僕はUnix (Plan 9, Linux, *BSD, macOS, ...)で遊んでいます。その記録を残すためにこのブログを始めました。遊んでいるだけなので、ITエンジニアには役に立たないであろう情報が多いと思います。 Unixに関係する自己紹介 UbuntuとmacOSがメインのオペレーテ…