Linuxのtmux
1. 概要
tmux は、Linuxのターミナルマルチプレクサツールです。 基本的に、複数の疑似端末インスタンスを作成および維持できます。 具体的には、tmuxコマンドが実行されるたびに開始されるサーバープロセスを介してこれらの疑似端末を維持します。
これらのターミナルプロセスはサーバープロセスによって維持されるため、 tmux は、それらを強制終了せずにターミナルセッションから切り離す柔軟性を提供します。 さらに、後で制御を取り戻すために、任意のターミナルセッションを再接続できます。 これにより、バックグラウンドで実行し、ときどき制御を取り戻すために再接続できる、長時間実行されるプロセスに最適です。
このチュートリアルでは、Linuxでのtmuxコマンドを学習します。 特に、tmuxが提供する機能とコマンドのいくつかを見ていきます。
2. tmux
2.1. インストール
apt-get パッケージマネージャーを使用して、DebianベースのLinux(Ubuntuなど)にtmuxをインストールできます。
$ sudo apt-get update -qq
$ sudo apt-get install -y tmux
同様に、 yum パッケージマネージャーを使用して、RHELベースのLinux(CentOSなど)にtmuxをインストールできます。
$ sudo yum update -qq
$ sudo yum install -y tmux
2.2. 基本的な使用法
コマンドを単独で入力することで、新しいtmuxセッションを起動できます。
$ tmux
引数がない場合、tmuxは1つのウィンドウで新しいセッションを作成します。 さらに、セッションにはデフォルト名0が付けられます。 作成後すぐに、tmuxセッションに移動します。
3. キーバインディング
ドキュメントから、tmuxが多くのコマンドをサポートしていることがわかります。 これらのコマンドは通常、tmuxインスタンスを構成することを目的としています。 たとえば、新しいウィンドウを作成したり、ペインを分割したり、切り離したりするためのコマンドがあります。
これらのコマンドを入力しやすくするために、 tmux は、生産性を高めるために利用できるいくつかのキーバインディング(ショートカットまたはホットキーとも呼ばれます)を定義します。 この記事では、主にこれらのキーバインディングを使用してtmuxとやり取りします。
プレフィックスキーテーブルのキーバインディングの場合、プレフィックスキーをプレフィックスとして付ける必要があります。 デフォルトでは、tmuxはプレフィックスキーをCtrl +bとして設定します。 さらに、プレフィックスキーに注釈を付けます
4. tmuxのセッション
tmux のセッションは、多数の疑似端末をグループ化します。 これらの端末は、tmuxサーバーの管理下にあります。
4.1. セッションの作成
new-sessionコマンドを使用して、tmuxに新しいセッションを作成できます。 このコマンドは、セッションをカスタマイズできるいくつかのオプションフラグをサポートしています。
たとえば、セッションを作成し、-sフラグを使用して名前を付けることができます。
$ tmux new-session -s gamma
入力すると、gammaセッションに移動します。
セッション名に加えて、-nフラグを使用してウィンドウ名を指定できます。
$ tmux new-session -s gamma -n observation
-dフラグを使用して、新しく作成されたセッションに接続しないことを選択できます:
$ tmux new-session -s gamma -d
$ tmux list-session
alpha: 2 windows (created Sun Jun 20 11:37:35 2021)
gamma: 1 windows (created Sun Jun 20 12:11:41 2021)
new-session コマンドを入力した後、 -d フラグが原因で、セッションにドロップされません。 ただし、セッションが作成されたことは確認できます。
4.2. セッションからの切り離し
クライアントをセッションから切り離すために、ホットキーを入力できます。
<prefix key> + d
4.3. セッションへの添付
セッションにアタッチするには、 attach-sessionコマンドに続いて、-tフラグとセッションの名前を使用できます。 たとえば、gammaセッションに接続できます。
$ tmux attach-session -t gamma
4.4. すべてのセッションの一覧表示
現在tmuxサーバー上にあるすべてのセッションのリストを表示するには、list-sessionコマンドを使用できます。
$ tmux list-session
alpha: 2 windows (created Sun Jun 20 11:37:35 2021)
gamma: 1 windows (created Sun Jun 20 12:11:41 2021)
出力から、現在tmuxサーバーで実行されている2つのセッションalphaとgammaがあることがわかります。
4.5. セッションの名前を変更する
既存のセッションの名前を変更するには、rename-sessionコマンドを使用できます。
$ tmux rename-session -t alpha beta
$ tmux list-session
beta: 2 windows (created Sun Jun 20 11:37:35 2021)
gamma: 1 windows (created Sun Jun 20 12:11:41 2021)
rename-sessionコマンドでは、-tフラグを使用して名前を変更するターゲットセッションを指定する必要があります。 この例では、セッションの名前をalphaからbetaに変更しています。
4.6. セッションの終了
セッションを強制終了するには、最初にセッションの名前を特定する必要があります。 次に、-tフラグを指定したkill-sessionコマンドを使用してセッションを終了できます。
$ tmux kill-session -t gamma
$ tmux list-session
beta: 2 windows (created Sun Jun 20 11:37:35 2021)
-t フラグは、強制終了するセッションを指定します。この例では、セッションgammaです。
5. tmuxのウィンドウ
各tmuxセッション内には、1つ以上のウィンドウがあります。 セッションと同様に、ウィンドウの作成、削除、名前付け、および切り替えを行うことができます。
5.1. 新しいウィンドウの作成
セッションで新しいウィンドウを作成するには、ホットキーを使用できます。
<prefix key> + c
画面下部のステータスバーから、このセッションには現在2つのウィンドウがあることがわかります。
各ウィンドウには、0から始まるインデックスが付けられます。 さらに、各ウィンドウには名前が付けられています。 デフォルトでは、名前はウィンドウが現在実行しているコマンドになります。 この例では、両方のウィンドウで bash という名前が付けられています。これは、両方のウィンドウで現在実行中のプロセスであるためです。
最後に、 tmuxは、ウィンドウの名前の横にアスタリスクを配置することにより、現在アクティブなウィンドウを示します。 スクリーンショットから、ウィンドウのインデックス番号1を見ていることがわかります。
5.2. すべてのウィンドウの一覧表示
次のように入力すると、このセッションのすべてのウィンドウのリストを表示できます。
<prefix key> + w
リスト上にある間、上矢印キーと下矢印キーを使用してリストをナビゲートできます。 次に、Enterキーを押して、表示するウィンドウを選択します。
5.3. ウィンドウの名前を変更する
識別を容易にするために、 tmux では、次のコマンドを使用してウィンドウ名を変更できます。
<prefix key> + ,
画面下部のステータスバーが黄色に変わることに注意してください。 これは、tmuxが入力を期待していることを示しています。
ウィンドウの名前をwindow1に変更しましょう。
名前を変更してEnterキーを押すと、名前の変更がステータスバーに反映されていることがわかります。
5.4. ウィンドウの終了
ウィンドウを終了するには、次のホットキーを使用できます。
<prefix key> + &
ウィンドウが終了する前に、tmuxは確認を求めるプロンプトを表示します。 終了を確認するには、 y と入力し、Enterキーを押します。
6. tmuxのペイン
tmux のウィンドウは、さらに複数のペインに分割できます。 さらに、各ペインは1つのスタンドアロンターミナルインスタンスを実行します。
6.1. ウィンドウをペインに分割する
水平軸に沿ってウィンドウを2つの異なるペインに分割するには、ホットキーを使用できます。
<prefix key> + "
コマンドを入力すると、現在のウィンドウが2つのペインに分割されます。1つは上部に、もう1つは下部にあります。
または、ホットキーを使用してウィンドウを垂直方向に2つのペインに分割することもできます。
<prefix key> + %
6.2. ペインの終了
ペインを終了するには、ペインを表示しているときにショートカットを入力します。
<prefix key> + x
ウィンドウを終了するのと同様に、tmuxは確認を求めるプロンプトを表示します。 終了を確認するには、 y と入力して、Enterキーを押します。
6.3. 窓に窓ガラスを壊す
ペインを分割して、スタンドアロンウィンドウにすることができます。 たとえば、2つのペインを持つウィンドウを2つのウィンドウに変換する場合は、ショートカットを使用できます。
<prefix key> + !
入力すると、効果がすぐに発生し、前のペインで構成された追加の新しいウィンドウが表示されます。
6.4. 別のペインに切り替える
複数のペインがあるウィンドウでは、ホットキーを使用して別のペインに簡単に切り替えることができます。
<prefix key> + <arrow key>
たとえば、左ペインから右ペインに切り替えるには、プレフィックスキーを押してから右矢印キーを押すだけです。
同様に、下部ペインに切り替えるには、プレフィックスキーを入力してから、下矢印キーを入力します。
7. tmuxのコピーモード
7.1. tmuxクリップボードを使用してコピーして貼り付ける
tmux でテキストをコピーすることは、単純なCtrl+CおよびCtrl+Vよりも少し複雑です。
通常、最初にコピーモードに入る必要があります。 次に、コピーするテキストの一部を選択します。 最後に、tmuxクリップボードからテキストを貼り付けることができます。 tmuxにコピーして貼り付ける正確な手順を見てみましょう。
説明を簡単にするために、 tmux 内にいる間に、dateコマンドからの出力をコピーしようとします。
まず、ショートカットを使用してコピーモードに入ります。
<prefix key> + [
コピーモードでは、右上に2つの数字が付いた注釈が表示されます。 左から1番目の数字は、カーソルが置かれている行番号を表します。 次に、右側の数字は、標準出力にある行の総数を表します。
テキストをコピーするには、上矢印キーを使用してカーソルを1行上に移動します。 カーソルが配置されたら、ショートカットを押して選択を開始します。
<prefix key> + Space
選択を開始すると、カーソルの背景色が黄色に変わることがわかります。 これは、カーソルが選択モードになっていることを示しています。 行を選択するには、左矢印キーを使用してカーソルを左に移動します。
選択を確認したら、Enterキーを押して、テキストをtmuxのクリップボードにコピーします。
最後に、ショートカットを使用して、tmuxのクリップボードからテキストを貼り付けます。
<prefix key> + ]
7.2. スクロール標準出力
tmuxの表示を超える標準出力を表示するには、最初にコピーモードに入る必要があります。 次に、矢印キーを使用してカーソルをナビゲートできます。 または、PageUpまたはPageDownを押して、行ではなくページごとにスクロールすることもできます。
7.3. コピーモードの他のコマンド
コピーモードでは、 tmux は、テキストエディタで通常使用する機能に似た無数の機能をサポートします。
たとえば、コピーモードでwキーを押すと、次の単語に移動できます。 同様に、キー0を使用して行の先頭に移動できます。 さらに、コロンキーを押してから行番号を入力することで、行に直接ジャンプできます。
これまでに説明したコマンドは、コピーモードで可能なことのほんの一部にすぎません。 サポートされているコマンドとそのショートカットの完全なリストについては、tmuxのドキュメントを参照してください。
8. 結論
このチュートリアルでは、tmuxコマンドラインツールをよく見てきました。
私たちはいくつかの基本的な使用法から始めました。 次に、tmuxのさまざまなコンポーネントを確認しました。 各コンポーネントで、tmuxの構成に使用できるショートカットキーのいくつかも学びました。
最後に、 tmux のコピーモードと、コピーモードで発行できるコマンドのいくつかについて説明しました。