SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【bash】プロンプトの表示を変える

問題

bashのプロンプトが非常に長くなって、見づらいのですが、何とかなりませんか。

[admin@host123456:/etc/apache2/sites-available]$

答え

bashでは、PS1という環境変数によってプロンプトを定義している。

デフォルトでは、下のような表示。

ユーザー名@ホスト名:パス(長くなったりする) $

exportコマンドでPS1を変更すれば、プロンプトが変わる。

1、一般的なの(ユーザー@ホスト名 パス $)

export PS1='[\u@\h \W]\$ '
↓
[admin@xxxhost log]$

2、すっきり $ だけにしたいとき

export PS1='$ '
↓
$ 

3、長いけどdebianでsuしたときのデフォルト?

export PS1="\${debian_chroot:+(\$debian_chroot)}\\u@\\h:\\w\\\$ "
↓
apache@localhost:/usr/local/bin$

4、ユーザー名とホスト名は知りたい

export PS1='\u@\h \$ '
↓
root@server123 # 

5、現在のディレクトリがわかればよい

export PS1='\W $ '
↓
tmp $ 

6、時間が見えるとありがたい

export PS1='\t \u@\h $ '
↓
12:44:27 apache@www12345 $

使用できる特殊な文字一覧

\a ASCIIのベル文字(07)を表示する(ビープ音を鳴らす)
\d 「曜 日 月 日」の形式(例:Fri Jan 5)で日付を表示する
\e ASCIIのエスケープ文字(033)を表示する
\h ホスト名のうち最初の「.」までの部分を表示する
\H ホスト名を表示する
\n 改行する
\r 復帰する
\s シェルの名前を表示する
\t 現在の時刻を24時間の「HH:MM:SS」形式で表示する
\T 現在の時刻を12時間の「HH:MM:SS」形式で表示する
\@ 現在の時刻を12時間の「am/pm」形式で表示する
\u 現在のユーザー名を表示する
\v bashのバージョンを表示する
\V bashのリリースを表示する
\w 現在の作業ディレクトリを、ユーザーのホームディレクトリからの絶対パスで表示する
\W 現在の作業ディレクトリを表示する
\! このコマンドの履歴番号を表示する
\# このコマンドのコマンド番号(現在のシェルのセッション中に実行されたコマンドのシーケンスにおける位置)を表示する
\$ 実効UIDが0の場合に#となり、それ以外の場合に$となる
\nnn 8進数nnnに対応する文字を表示する
\\ バックスラッシュを表示する
\[ 非表示文字のシーケンスを開始する。これを使って、プロンプト中に端末の制御シーケンスを埋め込むことができる
\] 非表示文字のシーケンスを終了する

関連するメモ

コメント