tmux の基本的な使い方
[履歴] [最終更新] (2020/02/26 00:29:29)
最近の投稿
注目の記事

概要

tmux は GNU Screen のような仮想端末を提供します。

必要最小限の設定

~/.tmux.conf

# プレフィックスキー
set -g prefix C-t

# C-t C-t でトグル
bind C-t last-window

# Vim 風のキーバインド
setw -g mode-keys vi

# ステータスバーの色
set -g status-fg white
set -g status-bg black
setw -g window-status-current-fg black
setw -g window-status-current-bg yellow

# 履歴の長さ
set-option -g history-limit 10000

主要な操作

セッション名を指定して新規セッションを作成

$ tmux new -s セッション名

デタッチ

C-t d

セッション一覧を表示

$ tmux ls

アタッチ

直近のセッション

$ tmux a

セッション名を指定

$ tmux a -t セッション名

他のクライアントをデタッチしてからアタッチ

tmux a -d
tmux a -d -t セッション名

セッションの削除

$ tmux kill-session -t セッション名

ウィンドウの作成

C-t c

二つのウィンドウを行ったり来たり

C-t C-t

前後のウィンドウに移動

previous

C-t p

next

C-t n

ウィンドウの一覧

C-t w

ウィンドウ名の変更

C-t ,

セッション名の変更

C-t $

Vim 風の操作で過去のターミナル履歴を閲覧

C-t [

範囲選択の開始 (スペースキー) → 範囲選択の完了 (エンター) → 貼り付け (C-t ])

ヘルプ

C-t ?

ウィンドウを閉じる

C-t &

複数のサーバを同時操作

.tmux.conf に以下の設定を追加します。C-t e で同時に複数ペインを操作できるようになります。

bind e setw synchronize-panes on
bind E setw synchronize-panes off

ペインを水平方向または垂直方向に追加

C-t %
C-t "

ペインを移動

C-t o
C-t ;

ペインを破棄

C-t x

ペインを整理

C-t space

ペインを拡大、戻す

C-t z

ペイン番号を環境変数で取得できます。

echo ${TMUX_PANE}
%7

echo ${TMUX_PANE} | sed 's/%//' | awk '{ printf "%04d\n", $1 }'
0007

bash スクリプトから設定

コマンドラインから tmux を設定することができます。以下の例は、複数サーバに同時に ssh を行いたい場合に便利です。

Uploaded Image

#!/bin/bash
set -eu
set -o pipefail

NAME="awesome-window"
LAYOUT="tiled"  # "even-horizontal" "even-vertical"

CMDS=(
"ssh host1"
"ssh host2"
"ssh host3"
"ssh host4"
"ssh host5"
"ssh host6"
"ssh host7"
"ssh host8"
"ssh host9"
)

tmux new-window -n ${NAME}

for i in $(seq ${#CMDS[@]}); do
  tmux send-keys -t ${NAME}.$(expr $i - 1) "${CMDS[$i - 1]}"
  if [ $i -ne ${#CMDS[@]} ]; then
    tmux split-window -t ${NAME}
    tmux select-layout -t ${NAME} ${LAYOUT}
  fi
done

tmux set-window-option -t ${NAME} synchronize-panes on
関連ページ
    「AWS IoT ボタン」を用いずにインターネット経由でスマホによるラジコン操作 スマートフォンから操作できるブルドーザーロボットです。前進、後退、回転が可能です。Qoosky WebSocket API を利用しています。制作費は Raspberry Pi が既に手元にあれば追加でおおよそ 1 万円です。センサー機能が搭載されていないため正確な操作はできませんが、学校や職場から自宅のロボットを
    やりたいこと hello.sh #!/bin/sh while : do date sleep 1 done ローカルホストにおけるバックグラウンド処理はコマンドの後に '&' を付与することで実現できます。リダイレクションについてはこちらをご参照ください。 ./hello.sh > out.txt 2>&1 & tailf out.txt 2015年 6月 15日