學習Shell(一)

查看 Shell

Shell 是一個程序,通常都是放在/bin或者/user/bin目錄下,當前 Linux 系統可用的 Shell 都記錄在/etc/shells文件中。/etc/shells是一個純文本文件,你能夠在圖形界面下打開它,也可使用 cat 命令查看它。

經過 cat 命令來查看當前 Linux 系統的可用 Shell:shell

$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

在現代的 Linux 上,sh 已經被 bash 代替,/bin/sh每每是指向/bin/bash的符號連接。

若是你但願查看當前 Linux 的默認 Shell,那麼能夠輸出 SHELL 環境變量:bash

$ echo $SHELL
/bin/bash

輸出結果代表默認的 Shell 是 bash。spa

Shell 提示符

對於普通用戶,Base shell 默認的提示符是美圓符號$;對於超級用戶(root 用戶),Bash Shell 默認的提示符是井號#。該符號表示 Shell 等待輸入命令。命令行

 

[root@localhost ~]# 

這種格式包含了如下三個方面的信息:code

  • 啓動 Shell 的用戶名,也即 mozhiyan;
  • 本地主機名稱,也即 localhost;
  • 當前目錄,波浪號~是主目錄的簡寫表示法。


Shell 經過PS1PS2兩個環境變量來控制提示符格式:blog

  • PS1 控制最外層命令行的提示符格式。
  • PS2 控制第二層命令行的提示符格式。


要顯示提示符的當前格式,可使用 echo 輸出 PS1 和 PS2:io

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]# echo $PS2
>

Shell 使用以\爲前導的特殊字符來表示命令提示符中包含的要素,這使得 PS1 和 PS2 的格式看起來可能有點奇怪。下表展現了能夠在 PS1 和 PS2 中使用的特殊字符。table

Bash shell 提示符能夠包含的要素
字符 描述
\a 鈴聲字符
\d 格式爲「日 月 年」的日期
\e ASCII轉義字符
\h 本地主機名
\H 徹底合格的限定域主機名
\j shell當前管理的做業數
\1 shell終端設備名的基本名稱
\n ASCII換行字符
\r ASCII回車
\s shell的名稱
\t 格式爲「小時:分鐘:秒」的24小時制的當前時間
\T 格式爲「小時:分鐘:秒」的12小時制的當前時間
\@ 格式爲am/pm的12小時制的當前時間
\u 當前用戶的用戶名
\v bash shell的版本
\V bash shell的發佈級別
\w 當前工做目錄
\W 當前工做目錄的基本名稱
\! 該命令的bash shell歷史數
\# 該命令的命令數量
\$ 若是是普通用戶,則爲美圓符號$;若是超級用戶(root 用戶),則爲井號#
\nnn 對應於八進制值 nnn 的字符
\\ 斜槓
\[ 控制碼序列的開頭
\] 控制碼序列的結尾


注意,全部的特殊字符均以反斜槓\開頭,目的是與普通字符區分開來。您能夠在命令提示符中使用以上任何特殊字符的組合。

咱們能夠經過修改 PS1 變量來修改提示符格式,例如:class

[root@localhost ~]# PS1="[\t][\u]\$ "
[22:12:45][root]$ 

新的 Shell 提示符如今能夠顯示當前的時間和用戶名。不過這個新定義的 PS1 變量只在當前 Shell 會話期間有效,再次啓動 Shell 時將從新使用默認的提示符格式。變量

相關文章
相關標籤/搜索