はじめに
こんにちは!今回はtputコマンドについて解説します。
tputは、ターミナルの属性や機能を制御するコマンドです。色の変更、カーソル位置の移動、テキストの装飾など、ターミナルを自由に操作できます。
シェルスクリプトで見栄えのいい出力を作りたい時に、めっちゃ活躍しますよ。
tputコマンドとは
tputは、terminfoデータベースを参照してターミナル制御シーケンスを実行する外部コマンドです。
主な機能:
- 色の制御 - 前景色・背景色の設定
- テキスト装飾 - 太字、下線、反転表示など
- カーソル制御 - カーソル位置の移動、行の消去
- ターミナル情報取得 - 画面サイズ、色数の確認
- ビープ音 - アラート音の出力
スクリプトで色付きの出力をするには必須のコマンドです。
基本構文
|
|
capnameはターミナルの機能名(capabilities)です。
主なオプション
| オプション | 説明 |
|---|---|
bold |
太字 |
underline |
下線 |
blink |
点滅 |
reverse |
反転表示(背景と文字の色を反転) |
smul |
下線開始 |
rmul |
下線終了 |
setaf [1-7] |
前景色設定(1:赤、2:緑、3:黄、4:青、5:紫、6:シアン、7:白) |
setab [1-7] |
背景色設定 |
cup X Y |
カーソルを(X,Y)に移動 |
home |
カーソルをホーム位置(左上)に移動 |
clear |
画面をクリア |
el |
行末まで消去 |
cols |
画面幅を取得 |
lines |
画面高さを取得 |
colors |
色数を取得 |
bel |
ビープ音を出す |
reset |
ターミナルをリセット |
使用例
例1: テキストを赤色で表示
|
|
実行結果:
|
|
setaf 1で赤色を設定。sgr0で属性をリセットします。
例2: テキストを太字で表示
|
|
実行結果:
|
|
boldで太字。sgr0でリセット。
例3: 色付きメッセージ関数
|
|
実行結果:
|
|
よく使うパターンを関数化。
例4: 画面をクリアしてカーソルをホームに
|
|
実行結果:
|
|
clearコマンドと同じ効果。
例5: ターミナルの幅と高さを取得
|
|
実行結果:
|
|
画面サイズをスクリプトで取得。
例6: 背景色付きテキスト
|
|
実行結果:
|
|
背景と前景色を組み合わせ。
例7: ビープ音を出す
|
|
実行結果:
|
|
アラート音。
例8: プログレスバー
|
|
実行結果:
|
|
シンプルなプログレスバー表示。
例9: 複数の装飾を組み合わせ
|
|
実行結果:
|
|
太字と色を同時に適用。
例10: 色数を確認
|
|
実行結果:
|
|
ターミナルの色対応状況を確認。
Tips・注意点
sgr0でリセットは必須
|
|
sgr0(Set Graphics Rendition 0)で必ずリセットします。
色番号の対応
|
|
色番号は ANSI標準に従います。
-Tオプションでターミナルタイプ指定
|
|
異なるターミナルで動作させたい場合に指定。
実践的な使い方
ログ出力に色をつける
|
|
ログレベル別に色を分けて表示。
インタラクティブなスクリプト
|
|
UIっぽい出力を作成。
画面サイズに応じた出力
|
|
ターミナルサイズをチェック。
まとめ
tputコマンドのポイント:
- ターミナル制御を行うコマンド
- 色設定:
tput setaf [1-7](前景色)、tput setab [1-7](背景色) - テキスト装飾:
bold(太字)、underline(下線)など - カーソル制御:
cup X Y(移動)、home(ホーム) - 情報取得:
cols(幅)、lines(高さ)、colors(色数) - 必ずリセット:
tput sgr0で属性をリセット - よく使う組み合わせ:
tput setaf 1; echo "text"; tput sgr0
シェルスクリプトで見栄えのいい出力を作りたい時に最強のコマンドですよ!