BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Bash Shell PS1:Angelina Jolie のような Linux プロンプトを作成する 10 の例

Bash Shell PS1:Angelina Jolie のような Linux プロンプトを作成する 10 の例f1r3storm85 提供の写真

前回の記事では、Linux 環境変数 PS[1-4] と PROMPT_COMMAND について説明しました。効果的に使用すれば、PS1 はコマンド プロンプトですぐに貴重な情報を提供できます。

トゥーム レイダーでは、アンジェリーナ ジョリーがすべてのガジェットと武器を指先で操作して、スタイリッシュに謎を解き明かします。アンジェリーナ・ジョリーのガジェットとスタイルは一致させるのが難しいですが、少なくとも、この記事で提供されている 10 の例を使用して、古き良き Linux プロンプトを非常に機能的でスタイリッシュなものにしてみましょう.

1.ユーザー名、ホスト名、現在の作業ディレクトリをプロンプトに表示

この例の PS1 は、プロンプトに次の 3 つの情報を表示します。

  • \u – ユーザー名
  • \h – ホスト名
  • \w – 現在の作業ディレクトリのフル パス
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>

2.プロンプトに現在の時刻を表示

PS1 環境変数では、$(linux_command) の形式で指定することにより、任意の Linux コマンドを直接実行できます。次の例では、コマンド $(date) が実行され、プロンプト内に現在の時刻が表示されます。

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

以下に示すように、\t を使用して現在の時刻を hh:mm:ss 形式で表示することもできます。

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

以下に示すように、\@ を使用して現在の時刻を午前/午後 12 時間形式で表示することもできます:

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>

3. Linux コマンドの出力をプロンプトに表示

プロンプトに任意の Linux コマンドの出力を表示できます。次の例は、| で区切られた 3 つの項目を表示します。 (パイプ) コマンド プロンプトで:

  • \!: コマンドの履歴番号
  • \h: ホスト名
  • $kernel_version: $kernel_version 変数からの uname -r コマンドの出力
  • \$?: 最後のコマンドのステータス
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>

4.プロンプトの前景色を変更

ユーザー名、ホスト、および現在のディレクトリ情報とともにプロンプ​​トを青色で表示します

<センター>
$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ – カラー プロンプトの開始を示します
  • x;ym – カラーコードを示します。下記のカラーコード値を使用してください。
  • \e[m – 色プロンプトの終了を示します

カラーコード表:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

次の行を .bash_profile または .bashrc に追加して、色の変更を永続的にします

STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5.プロンプトの背景色を変更

以下に示すように、PS1 プロンプトで \e[{code}m を指定して背景色を変更します。

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

背景と前景の組み合わせ

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

以下を .bash_profile または .bashrc に追加して、上記の背景色と前景色を永続的にします。

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

次の背景色を試してみて、好みに合ったものを選択してください:

  • \e[40分
  • \e[41分
  • \e[42分
  • \e[43分
  • \e[44分
  • \e[45分
  • \e[46分
  • \e[47分

6.プロンプトに複数の色を表示

同じプロンプトで複数の色を表示することもできます。次の関数を .bash_profile に追加します

function prompt {
 local BLUE="\[\033[0;34m\]"
 local DARK_BLUE="\[\033[1;34m\]"
 local RED="\[\033[0;31m\]"
 local DARK_RED="\[\033[1;31m\]"
 local NO_COLOR="\[\033[0m\]"
 case $TERM in
 xterm*|rxvt*)
 TITLEBAR='\[\033]0;\u@\h:\w\007\]'
 ;;
 *)
 TITLEBAR=""
 ;;
 esac
 PS1="\u@\h [\t]> "
 PS1="${TITLEBAR}\
 $BLUE\u@\h $RED[\t]>$NO_COLOR "
 PS2='continue-> '
 PS4='$0.$LINENO+ '
}

変更を有効にするために再ログインするか、以下に示すように .bash_profile を入手できます。

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>

7. tput を使用してプロンプトの色を変更します

以下に示すように、tput を使用して PS1 プロンプトの色を変更することもできます。

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

tput カラー機能:

  • tput setab [1-7] – ANSIエスケープを使用して背景色を設定
  • tput setb [1-7] – 背景色を設定する
  • tput setaf [1-7] – ANSIエスケープを使用して前景色を設定
  • tput setf [1-7] – 前景色を設定する

tput テキスト モード機能:

  • 太字にする – 太字モードを設定
  • 暗転 – ハーフブライト モードをオンにする
  • tput smul – 下線モードを開始
  • tput rmul – 下線モードを終了
  • tput rev – リバース モードをオンにする
  • tput smso – スタンドアウト モードに入る (rxvt では太字)
  • tput rmso – スタンドアウトモードを終了
  • tput sgr0 – すべての属性をオフにする

tput のカラー コード:

  • 0 – 黒
  • 1 – 赤
  • 2 – 緑
  • 3 – 黄色
  • 4 – 青
  • 5 – マゼンタ
  • 6 – シアン
  • 7 – ホワイト

8. PS1 変数で利用可能なコードを使用して、独自のプロンプトを作成します

次のコードを使用して、機能的で好みに合った独自の PS1 Linux プロンプトを作成します。このリストの中で、日常的に使用するのに非常に役立つコードはどれですか?コメントを残して、Linux プロンプトに使用した PS1 コードを教えてください。

  • \a ASCII ベル文字 (07)
  • \d 「平日の月日」形式の日付 (例:「5 月 26 日火曜日」)
  • \D{format} – フォーマットが strftime(3) に渡され、結果がプロンプト文字列に挿入されます。空の形式は、ロケール固有の時間表現になります。中括弧が必要です
  • \e ASCII エスケープ文字 (033)
  • \h 最初の部分までのホスト名
  • \H ホスト名
  • \j シェルによって現在管理されているジョブの数
  • \l シェルの端末デバイス名のベース名
  • \n 改行
  • \r 改行
  • \s シェルの名前、$0 のベース名 (最後のスラッシュに続く部分)
  • \t 24 時間 HH:MM:SS 形式の現在の時刻
  • \T 12 時間 HH:MM:SS 形式の現在の時刻
  • \@ 午前/午後 12 時間形式の現在の時刻
  • \A 24 時間 HH:MM 形式の現在の時刻
  • \u 現在のユーザーのユーザー名
  • \v bash のバージョン (例:2.00)
  • \V bash のリリース、バージョン + パッチ レベル (例:2.00.0)
  • \w $HOME をチルダで省略した現在の作業ディレクトリ
  • \W $HOME をチルダで省略した、現在の作業ディレクトリのベース名
  • \! このコマンドの履歴番号
  • \# このコマンドのコマンド番号
  • \$ 有効な UID が 0 の場合は #、それ以外の場合は $
  • \nnn 8 進数 nnn に対応する文字
  • \\ バックスラッシュ
  • \[ プロンプトに端末制御シーケンスを埋め込むために使用できる非印刷文字のシーケンスを開始します
  • \] 非印刷文字のシーケンスを終了

9. PS1 変数内で bash シェル関数を使用する

以下に示すように、PS1 で bash シェル関数を呼び出すこともできます。

ramesh@dev-db ~> function httpdcount {
> ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

次の行を .bash_profile または .bashrc に追加して、この変更を永続的にすることができます:

function httpdcount {
 ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '

10. PS1変数内でシェルスクリプトを使用

PS1 変数内でシェル スクリプトを呼び出すこともできます。以下の例では、現在のディレクトリの合計ファイルサイズを計算する ~/bin/totalfilesize.sh が PS1 変数内で呼び出されます。

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
 let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
 file size of the current directory in the PS1 prompt]


PS1 にどの程度のカスタマイズを加えましたか?あなたのPS1はアンジェリーナ・ジョリーに勝てますか?コメントを残して あなたの PS1 を共有 プロンプト値.

推奨読書

Carl Albing、JP Vossen、Cameron Newham による Bash クックブック . Bash は非常に強力なシェルです。この本は、bash シェルをマスターして生産性を高めるのに役立ちます。システム管理者、DBA、または開発者のいずれであっても、ある時点でシェル スクリプトを作成する必要があります。賢明なシステム管理者は、シェル スクリプトの手法を習得したら、シェル スクリプトに単調な作業をさせることで、サーバーを自動操縦モードにできることを知っています。 sysadmin の自動操縦モードに到達するには、このクックブックで提供されている例を確実に習得する必要があります。静かな Bash シェルの本はほとんどありません。しかし、この本は多くの詳細な例を示しているため、それらすべてを上回っています。
 
追加の Linux 書籍の推奨事項:脳とライブラリーを豊かにするための 12 冊の驚くほど重要な Linux 書籍
 
この記事が気に入ったら、del.icio.us でブックマークして、Stumble してください。


  1. Windows 10にBash(Linuxシェル)をインストールして使用する方法[チュートリアル]

    WindowsでLinuxシェルを設定して使用する方法は次のとおりです– Linux用Windowsサブシステムを使用します ( WSL 。 このチュートリアルは、2020年以降の最新バージョンのWindows10を対象としています。古いソフトウェアを使用するべきではないため、古いバージョンのWindows10でWSLを使用する方法やWindows8/7 / XP/3.1の他の方法については説明しません。 Windowsを使用する必要がある場合は、セキュリティパッチをまだ受けているバージョンを使用してください! WSL は優れたツールであり、Linuxを離れたことがないかのよ

  2. 6 つの実用的な例を含む Bash シェル関数のチュートリアル

    Bash シェル関数は、グループに単一の名前を使用して、後で実行するために複数の UNIX / Linux コマンドをグループ化する方法です。 . Bash シェル関数は、通常の Unix コマンドと同じように実行できます。シェル関数は、それらを解釈するための新しいプロセスを作成することなく、現在のシェル コンテキストで実行されます。bash エイリアスと関数の両方を使用すると、より長い、またはより複雑なコマンドのショートカットを定義できます。ただし、エイリアスは、このチュートリアルで説明されているように、これらの関数が許可する制御フロー、引数、およびその他の巧妙なものを許可しません。 この