1. トップ
  2. 新着ニュース
  3. IT
  4. パソコン

Windows Subsystem for Linuxガイド 第39回 Bashのヒストリ機能 その1「利用編」

マイナビニュース / 2024年9月24日 12時24分

画像提供:マイナビニュース

今回より、ときどき、WSL自体ではなく、WSLあるいはLinuxを使う場合の基礎知識的な記事を入れることにする。これは、Windowsには慣れているものの、Linuxにはなじみのない読者を想定している。

bashには、実行したコマンドを記録し、あとから呼び出して利用するための仕組み「ヒストリ」機能がある。ヒストリの日本語訳としては「履歴」が充てられることが多いが、一般用語としての「履歴」もあるので、ここでは「ヒストリ」と表記する。
○ヒストリ機能の使い方

ヒストリ機能は、実行が成功したコマンドを順次記録していく。注意するのは実行がエラーになったコマンドは記録されないことだ。こうして作られたコマンドのリストに対して、「キーボードによるコマンドの呼び出し」、およびbashの「履歴展開」機能の2つが利用できる。

前者は、PowerShellの履歴などと同じく、「↑」キーなどで以前に実行したコマンドを呼び出すもの。キーボードを使うヒストリ機能は1980年台に開発されたKornShell(ksh)に搭載され、その後一般的になった。なお、この場合、実行前にコマンドラインを修正することもできる。

後者は、コマンドラインに過去のコマンドや引数などを参照する記号を使うもの。例えばコマンドラインに「!!」と入力してエンターキーを押せば、「↑」とエンターキーを押したのと同じく、直前のコマンドを実行できる。この履歴展開の機能は、1970年台に開発されBSD系UNIXに搭載されたC Shell(csh)に採用され、bashはこれを引き継いだ。cshの作者の一人であるビル・ジョイによれば、Interlisp-Dのredoコマンドを参考にしたという。

(表01)は、bashの標準的なヒストリ関連のキーを示す。ディストリビューションやバージョンにより多少の違いが出る可能性があるものの、多くのディストリビューションのbashでは、これらのキーが使える可能性が高い。

上下カーソルキーが2つあるのは、端末(コンソール・アプリケーション)のモードによって、同じ上下カーソルキーが生成するキーコードが異なるからである。また、一般的なLinuxのコンソールでは、Ctrl+Sは、sttyコマンドでstopキーとして定義されているため、このキーを押すと、先にsttyの方で解釈されることになり、bash/readline側にキーコードが渡らない。ヒストリ機能に限らず、bashのコマンドラインで、Ctrl+Sを利用したい場合には、sttyコマンドでCtrl+Sの割り当てを取り消す必要がある(解説は次回)。

この記事に関連するニュース

トピックスRSS

ランキング

複数ページをまたぐ記事です

記事の最終ページでミッション達成してください