linux中显示字符串命令,自訂 Linux 的 Bash Shell 命令提示字串 Prompt(一):基本用法...

本文介绍了如何通过设置Linux Bash Shell的PS1环境变量来自定义命令提示符,以提升终端使用体验。内容包括显示时间、执行任意指令、使用颜色以及特殊字符等功能,并给出了多个示例,帮助用户打造个性化且实用的命令行环境。
摘要由CSDN通过智能技术生成

這裡教您如何自訂 Linux 的 Bash Shell 命令提示字串,打造屬於自己的命令列環境。

許多的 Linux 使用者在使用命令列時,可能從來就沒有想過命令提示字串可以做些什麼事情,甚至根本就把它忽略了,其實一個良好的命令提示字串可以改善終端機的使用者經驗,讓終端機不再只是死板板的文字而已,有時候還會非常有趣。

基本設定方法

Linux 的 Bash Shell 命令提示字串可以透過 PS1 這個環境變數來設定,通常他都是寫在 ~/.bashrc 或是 ~/.bash_profile 這些 Bash 的設定檔中,通常預設的設定會類似這樣:PS1="[u@h W]$"

在 PS1 的設定中,若以反斜線加上一個特定字母,都有一些特殊意義:u:表使用者的帳號名稱。

h:主機名稱。

W:目前的工作目錄名稱。

顯示出來的結果會像這樣:

b27e8b68ee7560010c13e2429204b01c.png

通常剛裝好的 Linux 系統,命令提示字串大概就是像這樣,沒有什麼特別,但是其實它的功能很強大,可以有很多的變化,以下是一些常用的功能介紹。

顯示時間

在 PS1 環境變數中,您可以使用 $(linux_command) 的方式,直接執行任何的 Linux 指令,下面是一個執行 $(date) 來顯示目前時間的例子。PS1="u@h[$(date +%k:%M:%S)]>"

結果會像這樣:

77c88b21cdf907afcc4ee8e1e211ebbb.png

另一種方式是直接使用 t,顯示 hh:mm:ss 格式的時間:PS1="u@h[t]>"

42e5d1d950f3b1ecd5d3b4db5db9565d.png

而 @ 則是可以顯示 12 小時制的時間:PS1="[@]u@h>"

d13f1599f98c12a3e5451d0741ce0c15.png

任意指令輸出

如果您對於 shell 的程式設計很熟悉的話,可以在 PS1 插入任何的指令輸出或是變數:kernel_version=$(uname-r)

PS1="!|h|$kernel_version|$?>"

這裡我們將 uname -r 的輸出儲存在 $kernel_version 變數中,在插入 PS1,而 $? 則是 shell 中的一個特殊變數,它會儲存上一個指令的執行傳回值,另外一個 ! 則是目前指令的歷史紀錄編號。結果會像這樣:

1079ccb4557115c80c72bcf4f67b22a3.png

文字顏色

命令提示字串也可以使用彩色的文字:PS1="e[0;34mu@h w>e[m"

這裡文字的色彩是靠 ANSI escape code 來指定的,e[0;34m 是顏色指定的開始控制碼,結束是 e[0m,而在放這中間的所有文字都會是有顏色的,而文字的顏色則是由開始控制碼中的數值來決定:0 與 1:0 代表正常亮度,1 代表高亮度。

30 與 37:30 + x 所得到的數值可指定前景顏色(x 值與顏色的對應請參考下面的對應表)。

40 與 47:40 + x 所得到的數值可指定背景顏色(x 值與顏色的對應請參考下面的對應表)。ANSI escape code 數值與顏色對應表亮度01234567

正常黑紅綠黃藍洋紅青白

高亮度黑紅綠黃藍洋紅青白

多個數值之間以分號(;)隔開,像這裡的 e[0;34m 就是指定正常亮度(0),顏色為藍色(34 = 30 + 4),結果會像這樣:

c1cadda07484392547093e04cad49bc9.png

這是使用高亮度(1)的狀況:PS1="e[1;34mu@h w>e[m"

17a8e1356056c9fb141b3c0546461ca6.png

加上背景的顏色:PS1="e[0;34;47mu@h w>e[m"

dbf5292d5ad9a938db28b3087c012945.png

使用多種顏色,這個是我自己慣用的提示字串:PS1='[e[1;32m]u@h[e[m]:[e[1;34m]W[e[1;33m]$[e[m]'

0874cb45c6829632d032c5a45b03bb4b.png

PS1 特殊字元

以下這些是在 PS1 中可以使用的特殊字元,您可以用運這些設計自己的命令提示字串。a:ASCII bell 字元(07)。

d:格式為 Weekday Month Date 的日期(例如 Tue May 26)。

D{format}:將 format 傳給 strftime(3),然後將輸出的結果放進命令提示字串中,如果 format 是空字串,就會使用目前語系的預設的格式,其中的大括號不可以省略。

e:ASCII 跳脫字元(escape character,033)。

h:機器的簡短主機名稱(hostname),只顯示到第一個句點之前。

H:機器的完整主機名稱(hostname)。

j:目前的 shell 所掌控的 jobs 數量。

l:the basename of the shell’s terminal device name

n:換行。

r:carriage return

s:the name of the shell, the basename of $0 (the portion following the final slash)

t:現在時間,24 小時制(HH:MM:SS)。

T:現在時間,12 小時制(HH:MM:SS)。

@:現在時間,12 小時制(HH:MM AM/PM)。

A:現在時間,24 小時制(HH:MM)。

u:目前使用者的使用者名稱(username)。

v:目前的 bash shell 版本(如 2.00)。

V:目前的 bash shell 詳細版本(如 2.00.0)。

w:目前的工作目錄完整路徑,若在 $HOME 中,則以 ~ 顯示。

W:目前的工作目錄名稱,若在 $HOME 中,則以 ~ 顯示。

!:目前指令的歷史紀錄編號。

#:目前指令的編號。

$:如果是 root 管理者,則顯示 #,否則顯示 $。

n:以八進位表示字元,例如

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值