顯示具有 ubuntu 標籤的文章。 顯示所有文章
顯示具有 ubuntu 標籤的文章。 顯示所有文章

2022年2月11日 星期五

自訂 Linux 的 Bash Shell 命令提示字串 Prompt

如何在 Linux 或 Unix 操作系統下更改 shell 提示的顏色?如何在 Linux、macOS 或類 Unix 系統上自定義和著色我的 Bash 提示符 PS1

我們可以更改 shell 提示符的顏色,或者在命令提示符下讓工作變得更輕鬆。BASH shell 是 Linux 和 Apple OS X 下的預設的設置。現在讓我們看看在 Linux 或 Unix 系統上使用 bash 時如何更改 shell 提示的顏色。

基本設定方法

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

PS1="\u@\h \W$ "

PS1 的設定中,若以反斜線加上一個特定字母,都有一些特殊意義:

  • \u:表使用者的帳號名稱。
  • \h:主機名稱。
  • \W:目前的工作目錄名稱。

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

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

顯示時間

PS1 環境變數中,您可以使用 $(linux_command) 的方式,直接執行任何的 Linux 指令,下面是一個執行 $(date) 來顯示目前時間的例子。

PS1="\u@\h [$(date +%k:%M:%S)]> "

結果會像這樣:

另一種方式是直接使用 \t,則可以顯示 hh:mm:ss 格式的時間,例如:

PS1="[\t] \u@$(pwd)> "

而 \@ 則是可以顯示 12 小時制的時間:

PS1="[\@] \u@$(pwd)> "

任意指令輸出

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

kernel_version=$(uname -r)
PS1="\!|\h|$kernel_version|$? > "

文字顏色

命令提示字串也可以使用彩色的文字:

PS1="\e[0;34m\u@\h \w\e[0m > "

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

  • 0 與 1:0 代表正常亮度,1 代表高亮度。
  • 30 與 37:30 + x 所得到的數值可指定前景顏色(x 值與顏色的對應請參考下面的對應表)。
  • 40 與 47:40 + x 所得到的數值可指定背景顏色(x 值與顏色的對應請參考下面的對應表)。
  • 多個數值之間以分號(;)隔開,像這裡的 \e[0;34m 就是指定正常亮度(0),顏色為藍色(34 = 30 + 4),結果會像這樣:

    這是使用高亮度(1)的狀況:

    PS1="\e[1;34m\u@\h \w\e[0m > "

    加上背景的顏色:

    PS1="\e[0;34;47m\u@\h \w\e[0m > "

    使用多種顏色:

    PS1='\e[1;37m\t\e[0m\n\e[1;32m\u\e[1;33m@\e[1;32m\h\e[33m:\e[1;36m$(pwd)\e[1;33m\$\e[0m '

    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:以八進位表示字元,例如 33。the character corresponding to the octal number nnn。
    • \\:反斜線。
    • [ 與 ]:當 PS1 參雜一些無法顯示的字元時,就要用這兩個特殊字元包起來,這樣顯示才會正常,例如所有控制顏色或是格式的控制碼,都要加上這兩個特殊字元,這樣可以避免 bash 在計算提示字元長度時出錯。

    只要善用這些特殊字元,其實就可以讓自己的命令提示字串有許多的變化。

    2021年8月1日 星期日

    Ubuntu 實用的快捷鍵

    1、Super 鍵:打開活動搜索界面

    使用 Super 鍵可以打開活動菜單。如果你只能在 Ubuntu 上使用一個快捷鍵,那只能是 Super 鍵。

    想要打開一個應用程式?按下 Super 鍵然後搜索應用程式。如果搜索的應用程式未安裝,它會推薦來自應用中心的應用程式。

    想要看看有哪些正在運行的程序?按下 Super 鍵,屏幕上就會顯示所有正在運行的 GUI 應用程式。

    想要使用工作區嗎?只需按下 Super 鍵,就可以在屏幕右側看到工作區選項。

    注意
    Linux 中的 Super 鍵即鍵盤上帶有 Windows 圖標的鍵,這裏我們使用了大寫字母,但這不代表你需要按下 shift 鍵,比如,T 代表鍵盤上的 『t』 鍵,而不代表 Shift+t。

    2、 Ctrl+Alt+T:打開 Ubuntu 終端窗機

    想要打開一個新的終端,只需使用快捷鍵 Ctrl+Alt+T。這是我在 Ubuntu 中最喜歡的鍵盤快捷鍵。

    3、 Super+L 或 Ctrl+Alt+L:鎖屏

    當我們離開電腦時鎖定屏幕,是最基本的安全習慣之一。我們可以使用 Super+L 快捷鍵,而不是繁瑣地點擊屏幕右上角然後選擇鎖定屏幕選項。有些系統也會使用 Ctrl+Alt+L 鍵鎖定屏幕。

    4、 Super+D or Ctrl+Alt+D:顯示桌面

    我們可以通過單擊屏幕左下角的 9 個點打開 Ubuntu 18.04 GNOME 中的應用程式菜單。 但是一個更快捷的方法是使用 Super+A 快捷鍵。

    它將顯示應用程式菜單,可以在其中查看或搜索系統上已安裝的應用程式。另外,我們可以使用 Esc 鍵退出應用程式菜單界面。

    6、 Super+Tab 或 Alt+Tab:在運行中的應用程式間切換

    如果在運行的應用程式不止一個,則可以使用 Super+Tab 或 Alt+Tab 快捷鍵在應用程式之間切換。

    按住 Super 鍵同時按下 Tab 鍵,即可顯示應用程式切換器。 按住 Super 的同時,繼續按下 Tab 鍵在應用程式之間進行選擇。當光標在所需的應用程式上時,鬆開 Super 和 Tab 鍵。

    默認情況下,應用程式切換器從左向右移動。 如果要從右向左移動,可使用 Super+Shift+Tab 快捷鍵。

    在這裡也可以用 Alt 鍵代替 Super 鍵。

    提示
    如果有多個應用程式實例,可以使用 Super+` 快捷鍵在這些實例之間切換。

    7、 Super+箭頭:移動視窗位置

    這個快捷鍵也適用於 Windows 系統。 使用應用程式時,按下 Super+左箭頭,應用程式將貼合屏幕的左邊緣,占用屏幕的左半邊。

    同樣,按下 Super+右箭頭會使應用程式貼合右邊緣。

    按下 Super+上箭頭將最大化應用程式窗口,Super+下箭頭將使應用程式恢復到其正常的大小。

    8、 Super+M:切換到通知欄

    GNOME 中有一個通知欄,我們可以在其中查看系統和應用程式活動的通知,這裡也有一個日曆。

    使用 Super+M 快捷鍵,可以打開此通知欄。 如果再次按這些鍵,將關閉打開的通知托盤。

    使用 Super+V 也可實現相同的功能。

    9、 Super+空格:切換輸入法(用於多語言設置)

    如果使用多種語言,可能系統上安裝了多個輸入法。 例如,我需要在 Ubuntu 上同時使用 印地語 和英語,所以我安裝了印地語(梵文)輸入法以及默認的英語輸入法。

    如果您也使用多語言設置,則可以使用 Super+空格 快捷鍵快速更改輸入法。

    10、 Alt+F2:運行控制台

    這適用於高級用戶。 如果要運行快速命令,而不是打開終端並在其中運行命令,則可以使用 Alt+F2 運行控制台。

    當使用只能在終端運行的應用程式時,這尤其有用。

    11、 Ctrl+Q:關閉應用程式窗口

    如果有正在運行的應用程式,可以使用 Ctrl+Q 快捷鍵關閉應用程式窗口。我們也可以使用 Ctrl+W 來實現此目的。

    Alt+F4 是關閉應用程式窗口更「通用」的快捷方式。但它不適用於一些應用程式,如 Ubuntu 中的默認終端。

    12、 Ctrl+Alt+箭頭:切換工作區

    如果是使用工作區的重度用戶,可以使用 Ctrl+Alt+上箭頭和 Ctrl+Alt+下箭頭在工作區之間切換。

    13、 Ctrl+Alt+Del:登出

    在 Linux 中使用著名的快捷鍵 Ctrl+Alt+Del 並不會像在 Windows 中一樣打開任務管理器,而是會打開登出對話方塊。

    在普通的 GNOME 桌面環境中,我們可以使用 Ctrl+Alt+Del 鍵打開關機菜單,但 Ubuntu 並不總是遵循此規範,因此當我們在 Ubuntu 中使用 Ctrl+Alt+Del 鍵時,它會打開註銷菜單。

    在 Ubuntu 中使用自定義鍵盤快捷鍵

    我們不是只能使用默認的鍵盤快捷鍵,可以根據需要創建自己的自定義鍵盤快捷鍵。

    轉到「設置->設備->鍵盤」,將在這裡看到系統的所有鍵盤快捷鍵。向下滾動到底部,就可以看到「自定義快捷方式」選項。

    自訂快捷鍵時,我們需要提供易於識別的快捷鍵名稱、使用快捷鍵時運行的命令,以及自定義的按鍵組合。