2007年・2010年・2019年のUnix学習メモから、プロセスの確認、履歴、単位付き表示、環境変数の疑問を振り返ります。操作の前に状況を読む考え方を、鹿のメイザーが少しユーモラスに語ります。
この回を動画で見る
同じテーマを、鹿のメイザーが図解と字幕付きで語ります。
年代の違うUnixメモを開く
どうも、鹿のメイザーです。今日はユニックスの学習メモを開いてみよう。黒い画面に短い文字を打ち込む、あの道具箱じゃ。今回は華麗な一行で全部解決する武勇伝ではなく、画面の向こうで何が起きているかを読むお話です。
手元のファイルには、二千七年、二千十年、二千十九年の記録が並んでいます。一枚のメモでも、同じ時期、同じ環境とは限らない。古いページと新しいページが隣り合うと、技術の年表まで一緒に折り畳まれた気分になるんじゃ。
しかも、参照した記事の抜粋が混ざっています。だから、説明文を全部わしの経験として語ることはしません。操作の記録、調べた説明、残った疑問を分けて眺める。読んだだけの話を実施済みにしたら、記憶の倉庫が水増しされるからね。
今回の主役は、プロセスを眺める道具、数字を読みやすくする小さな指定、それから設定がいつまで残るかという疑問です。画面に絵が少なくても、確認する順番は描ける。鹿の角でも、配線図くらいなら想像できるんじゃ。
黒い画面は状況を読む道具
コマンドの画面が苦手だと、何か入力しただけで大事件が起こりそうに見えますね。でも、状況を表示する道具と、状態を変える道具は役割が違う。最初から全部を一括りに怖がるより、今日は何を読むのかを一つ決めてみよう。
もちろん、黒い画面なら安全という意味ではありません。表示するだけのつもりでも、入力するものや対象を確かめる必要はある。今回の回顧録は古い操作の丸写し講座ではなく、メモに残る観察の仕方を取り出す場にしたいんです。
短い名前だから簡単な道具とも限らない。二文字のコマンドにも、表示する範囲や形式の違いがある。短い苗字だから人生まで短い、とは言えんじゃろう。名前の長さと、理解する項目の数は、仲良く並んでくれないことがあるね。
まず目的を言葉にする。動いているものを知りたいのか、容量を知りたいのか、設定を知りたいのか。目的が分かれると、読む項目も分かれる。何かを直す前に、何が分からないかを小さくする。そのために使う黒い画面もあるんじゃ。
psで相手を確かめる
メモの冒頭には、ピーエスの指定が残っています。動いているプロセスを確認するための道具じゃ。何かがおかしいとき、いきなり操作を加える前に、どんなものが動いているかを眺める。この順番が記録の中にも登場します。
名前が似ているから、あれだろう。そう決めつけると、別の仕事をしている相手を選ぶことがある。確認する項目は名前だけではない。今回の図は匿名のプロセスを三つ並べた説明用の例で、実際のパソコンの情報を表示しているわけではありません。
古い資料には、系統の違うユニックスで表示の指定を分ける説明もあります。それを見て、同じ道具名でも前提が変わるのだと分かる。手順の文字列だけを持ち歩くより、対象の環境を一緒に書く方が、後の自分に親切なんじゃね。
ここから、具体的な障害をわしが何分で直したという話は作りません。記録にない成果は、ないままにする。それでも、相手を先に確かめるという考え方は拾える。確認は地味じゃが、地味な手順ほど後から効いてくることがあるんです。
止める前に何が動いているか
続いてメモには、キルという道具の説明が出てきます。名前が物騒じゃが、ここでのポイントはプロセスへ信号を送るという役割。相手に終了を求めることと、相手が片付けを終えて消えることを、同じ一瞬だと思わないでおきたいね。
公式資料でも、信号には種類が示されています。特にキルの信号は、プログラムが受け取って処理したり、無視したりできる種類ではありません。普通の終了の道筋とは違うので、強い指定ほど丁寧に終われる、という読み方はしないんじゃ。
元メモにある、強い指定なら確実に終了するという表現は、そのまま現在の説明へ持ち込みません。この回は終了操作の実演でもありません。記録を読むときに、要求することと結果を確認することを分ける。そこを話の中心にします。
何が動いているか、何を保存しているか、他の処理へどう影響するか。操作の前には考えることがある。鹿が首を振ると角も一緒に動くように、ひとつの操作が周りに触れる場合もある。焦ったときほど、対象と結果を確かめたいんです。
履歴と行編集という小さな助け
二千七年の記録では、エイチピーユーエックスのコマンド行編集と履歴操作を調べています。一から打ち直さず、前の入力を呼び出して編集したい。派手な技術ではないけれど、毎日の小さな手間に関心を向けた記録じゃね。
ただし、ここにあるキー操作を、今のどのシェルでも同じだと紹介することはしません。道具のモードや環境が違えば約束も違う。見た目の黒さだけで親戚にすると、また違う玄関の呼び鈴を押してしまう。
履歴を使う話で拾いたいのは、前の入力を使えることと、そのまま実行してよいことは別だという点です。対象が変わっていないか、前の条件がまだ成り立つか。入力を減らす工夫にも、実行前に読むという仕事は残ります。
わしも、同じ話をまた語れるなら楽だと思うことはある。でも、前の回の名前を残したまま次の回を始めたら、鹿の自己紹介まで迷子になる。便利な再利用ほど、残っている前提を見直す。この小さな習慣は道具を越えて役に立つんじゃ。
df -hで数字に単位が付く
二千十年のメモには、ディーエフ、ハイフン、エイチで単位が表示されるので見やすい、と残っています。この短い感想が、わしは好きじゃ。大きな導入成功だけでなく、数字が読みやすくなった小さな発見も、学習の記録になるんです。
ジーエヌユーの公式資料では、ディーエフはファイルシステムの使用量を表示する道具として説明されています。エイチの指定は、人が読みやすい単位付きの表示に関わる。今回はこの基本だけを押さえて、匿名の概念図で振り返ろう。
数字がずらりと並ぶと、どの桁を読んでいたか目が迷うことがある。単位が付くと、まず大きさをつかみやすい。ただし、見やすくなったことと、すべての条件を理解したことは同じではない。表示の対象や前提も一緒に読むところじゃ。
ここで具体的な容量不足の障害があったと脚色はしません。資料に残るのは、表示が見やすいという評価です。小さい発見を無理に大事件へ育てなくても、当時の学び方は伝わる。短いメモに、作業中の目線が残っているんじゃね。
exportは永続設定とは限らない
二千十九年の記録では、環境変数のパスを確認し、エクスポートは永続的なのか、という疑問が残っています。答えの手前で書き留めた一行じゃ。分からないことを分からないまま保存するのも、次に調べる場所を作る立派な仕事です。
バッシュの公式資料で、エクスポートは後から実行するコマンドへ渡す環境の名前を指定する操作として説明されています。それだけで次のログインまで設定を永久保存する命令、という意味にはなりません。渡すことと保存することを分けよう。
前回のエムシスツーの回でも、設定がどこから読まれるかを話しました。今回は長い復習をせず、疑問の形に注目します。今の画面で効いたことと、別の起動でも効くことは別。試した条件を一緒に残すと、次に確かめる場所が見えてきます。
メモの答えが、多分違う、と控えめなのも面白い。そこで成功談を足さず、公式資料で意味を確かめてから補足する。古い疑問が、今の確認の入口になるわけじゃ。未完成の一行でも、学びの続きを始める印にはなります。
雑誌の端末入門へつなぐ
関連資料として、ソフトウェアデザイン、二千十九年六月号を紹介します。シェルとシェルスクリプトの特集に、山田泰宏さんによるシェルの基本の章があります。ジョークコマンドで端末に親しむ入口を設けた構成です。
黒い画面に慣れるというテーマが、今回のメモとつながります。ただし、メモを残した日にこの号を読んだ、と言っているわけではありません。今回確認した関連資料として並べる紹介じゃ。資料の年代と、本人の体験の年代は区別しておきます。
誌面やコードを動画へ貼り付けることはしません。本文と説明欄に、年月号、記事、著者、出版社、ページと公式目次を記載する。短く紹介して元へ戻れるようにする。引用の出どころは、鹿の足跡より追いやすく残したいね。
小さな操作から親しむ入口と、目的を決めて状況を読む入口。どちらも学習の進め方になる。今回の回顧録は、いきなり何でも使いこなせる人の物語ではなく、道具の意味を少しずつ確かめた記録として楽しんでもらえたらうれしいんじゃ。
急がず観測してから操作する
今日は、年代の違うユニックスの学習メモから、相手を見ること、入力を見直すこと、数字を読むこと、設定の意味を確かめることを拾いました。道具の名前を一度に暗記しなくても、確認する順番は持ち帰れるんじゃ。
古いファイルを開くときは、どの環境のいつの話かを先に見る。引用と本人の記録を分ける。書いていない結果は創作しない。そのうえで、今使う道具の意味は現行の公式資料で確かめる。メモの保存と、手順の再利用を別に考えるわけです。
そして状況を読むことと、状態を変えることを分ける。操作したら結果を確認する。これは昔の黒い画面だけの話ではありません。絵が増えて便利になった道具でも、確認する仕事まで完全に消えるわけではないんじゃね。
立派な成功談になっていないメモでも、読み返す価値はあります。見やすいという一言や、永続なのかという疑問が、次の学びを呼んでくれる。語り手は鹿のメイザーでした。ではまた、次の古い道具箱を開くときにお会いしましょう。
参考資料
- 筆者保管のUnix学習メモ(2007・2010・2019年の記録と参照記事の整理。識別情報・第三者本文を転記せず再構成)。
- GNU Coreutils Manual:df invocation https://www.gnu.org/s/coreutils/manual/html_node/df-invocation.html
- GNU Coreutils Manual:Signal specifications https://www.gnu.org/s/coreutils/manual/html_node/Signal-specifications.html
- GNU Bash Reference Manual:Bourne Shell Builtins(export) https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html
- 山田泰宏「楽しく学ぶシェルの基本」『Software Design』2019年6月号、技術評論社、第1特集第1章、p.18から。関連資料として短く紹介。誌面・本文・図版の転載なし。公式目次 https://gihyo.jp/magazine/SD/archive/2019/201906