shell提示符是什么? linux的常见shell及其提示符

不是,不停闪烁的那个“-”是光标。

作为 Linux/UNIX 人,我们有很长的时间是在 shell 中工作,并且在许多情况下,下面这一行就是始终盯着我们的那个提示行:

bash-2.04$

如果您恰巧是超级用户 (root),您就有权使用下面这个美丽的标示“身份”的提示行版本:

bash-2.04#

这些提示行并不是十分漂亮。这也就难怪几种 Linux 版本对默认提示行进行了升级,在其中增加了颜色和更多的信息。但是,即便您恰好有一个本身带有很好的彩色提示行的新式版本,它也不可能是完美无缺的。您或许希望在提示行中增加或更改几种颜色,或者增加(或删除)一些信息。从头开始设计属于您自己的彩色的、经过装饰的提示行并不难。
提示行基础
在 bash 下,可以通过更改 PS1 环境变量的值来设置提示行,如下所示:
$ export PS1="> "
>

更改会立即生效,通过将 "export" 定义放在您的 ~/.bashrc 文件中可将这种更改固定下来。只要您愿意,PS1 可以包含任意数量的纯文本:
$ export PS1="This is my super prompt > "
This is my super prompt >

尽管这很有趣,但在提示行中包含大量静态文本并不是特别有用。大多数定制的提示行包含诸如用户名、工作目录或主机名之类的信息。这些花絮信息可以帮助您在 shell 世界中遨游。例如,下面的提示行将显示您的用户名和主机名:

$ export PS1="\u@\H > "
drobbins@freebox >

这个提示行对于那些以多个不同名称的帐户登录多台机器的人尤为有用,因为它可以提醒您:您目前在哪台机器上操作,拥有什么权限。
在上面的示例中,我们使用了专用的用反斜杠转义的字符序列,藉此通知 bash 将用户名和主机名插入提示行中,当这些转义字符序列出现在 PS1 变量中时,bash 就会用特定的值替换它们。我们使用了序列 "\u"(表示用户名)和 "\H"(表示主机名的第一部分)。下面是 bash 可识别的全部专用序列的完整列表(您可以在 bash man page 的 "PROMPTING" 部分找到这个列表):
序列 说明
\a ASCII 响铃字符(也可以键入 \007)
\d "Wed Sep 06" 格式的日期
\e ASCII 转义字符(也可以键入 \033)
\h 主机名的第一部分(如 "mybox")
\H 主机的全称(如 "mybox.mydomain.com")
\j 在此 shell 中通过按 ^Z 挂起的进程数
\l 此 shell 的终端设备名(如 "ttyp4")
\n 换行符
\r 回车符
\s shell 的名称(如 "bash")
\t 24 小时制时间(如 "23:01:01")
\T 12 小时制时间(如 "11:01:01")
\@ 带有 am/pm 的 12 小时制时间
\u 用户名
\v bash 的版本(如 2.04)
\V Bash 版本(包括补丁级别) ?/td>
\w 当前工作目录(如 "/home/drobbins")
\W 当前工作目录的“基名 (basename)”(如 "drobbins")
\! 当前命令在历史缓冲区中的位置
\# 命令编号(只要您键入内容,它就会在每次提示时累加)
\$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
\xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符
\\ 反斜杠
\[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。
\] 这个序列应该出现在非打印字符序列之后。
这样,您已经知道了 bash 中用反斜杠转义的全部专用序列。请稍微演练一下这些序列,以对它们的工作方式获得一些感性认识。在您做了一些测试之后,下面开始添加颜色。
彩色化
添加颜色相当容易;第一步是设计不带颜色的提示行。然后,我们所要做的只是添加终端(而不是 bash)可识别的专用转义序列,以使它以彩色显示文本的某些部分。标准 Linux 终端和 X 终端允许您设置前景(文字)颜色和背景颜色,如果需要,还可以启用 "bold" 字符。有八种颜色可供我们选择。
颜色是通过在 PS1 中添加专用序列来选择的 -- 基本上是夹在 "\e["(转义开方括号)和 "m" 之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。下面是一个颜色代码示例:

"\e[0m"

如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认值。您可能会在在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我们看一下这些颜色代码。请注意下面的抓屏结果:
颜色表

要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号 (30-37) 和背景编号 (40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为 32 和 40。然后打开您的提示行定义并在其中添加适当的颜色代码。下面的定义:

export PS1="\w> "

变为:

export PS1="\e[32;40m\w> "

到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "\e[0m" 序列将颜色重新设置为正常值。

export PS1="\e[32;40m\w> \e[0m"

这个定义将显示一个漂亮的绿色提示行,但我们仍需要做一些扫尾工作。我们不需要包括 "40" 这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;我们通过添加一个 "1" 颜色代码来修正这个问题,这将启用更亮的加粗文字。除了这个修改之外,我们还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。没有这两个转义序列,尽管您有了一个非常漂亮的提示行,但是如果您键入的命令恰好到达终端的最右端,就会造成显示混乱。下面是我们最终的提示行:

export PS1="\[\e[32;1m\]\w> \[\e[0m\]"

别担心在同一个提示行中使用几种颜色,就像下面这样:

export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H> \[\e[0m\]"

Xterm 中的乐趣
我已说明了如何在提示行中添加信息和颜色,但您还可以更进一步。您可以通过在提示行中添加专用代码来使 X 终端(如 rxvt 或 aterm)的标题栏得到动态更新。您所要做的只是将下面的序列添加到您的 PS1 提示行中:

"\e]2;titlebar\a"

只须用您希望其出现在 xterm 标题栏中的文字替换子串 "titlebar" 即可,现在已经一切就绪了!不必使用静态文字;您可以将 bash 转义序列插入标题栏中。请查看下面这个示例,它将用户名、主机名和当前工作目录显示在标题栏中,并定义了一个简短、明亮的绿色提示行:

export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

这就是我在上面的抓屏结果中所用的那个提示行。我喜欢这个提示行,因为它将全部信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示多少字符有限制。顺便提一句,确保用 "\[" 和 "\]" 将您的标题栏序列括起来(因为就终端而言,这个序列是非打印序列)。将大量信息放在标题栏中的问题是,如果您使用非图形终端(如系统控制台),则看不到这些信息。为了解决这个问题,可以在您的 .bashrc 中添加以下几行:

if [ "$TERM" = "linux" ]
then
#we're on the system console or maybe telnetting in
export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
#we're not on the console, assume an xterm
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi

这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的 ~/.bash_profile 文件中有以下这样一行:

source ~/.bashrc

这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。
好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧

作者:
Daniel Robbins
Gentoo Technologies 公司总载兼首席执行官

====================================
令一篇关于PS1的说明

bash 有两级用户提示符。第一级是你经常看到的 bash 在等待命令输入
时的提示符。缺省的一级提示符是字符$(如果是超级用户,则是#号)。
你可以通过改变bash 的PS1变量的值来改变你的缺省提示符,例如:
PS1="Please enter a command"
把bash shell 的提示符该为指定的字符串。

当bash 期待输入更多的信息以完成命令时显示第二级提示符。缺省的第
二级提示符是 >。 果你要改变第二级提示符,可以通过设置PS2变量的
值来实现:
PS2="I need more information"
另外你还可以用特殊的字符来定义你的提示符,下面的列表列出了最常
用的特殊字符。
提示符特殊字符代码
字符 含义
\! 显示该命令的历史记录编号。
\# 显示当前命令的命令编号。

\$ 显示$符作为提示符,如果用户是root的话,则显示#号。
\\ 显示反斜杠。

\d 显示当前日期。

\h 显示主机名。

\n 打印新行。
\nnn 显示nnn的八进制值。

\s 显示当前运行的shell的名字。
\t 显示当前时间。
\u 显示当前用户的用户名。
\W 显示当前工作目录的名字。
\w 显示当前工作目录的路径。

这些特殊字符能组合成很多种有用的提示符方案(也可以组合为很奇异
的方案),例如把 PS1 设为:
PS1="\t"
这导致提示符显示当前的时间,就象下面的显示一样(提示符后面将不
会有空格):
02:16:15

而下面的设置:
PS1=\t
将导致提示符变成下面的样子:
t
这显示了设置中引号的重要性,下面的提示符串:
PS1="\t\\ "
会使提示符看起来象这个样子:
02:16:30\
这种情况下,提示符后面会有一个空格,因为引号里有一个空格。

不是,指的是闪烁光标前面的部分,一般是$,就像我这里这样:



[user@sniper ~]$
user 是用户名;sniper是本地计算机名;~指当前目录;$当前用户为普通用户
[user@sniper ~]#
#当前用户是超级用户

  • shell涓殑#浠h〃浠涔鍛,鏈変粈涔堢敤娉
    绛旓細1锛夎剼鏈腑 鑴氭湰涓#涔嬪悗鐨勪负娉ㄩ噴 鍦ㄧ涓鍒楃殑璇濓紝鍒欐暣琛屼负娉ㄩ噴銆備笉鍦ㄧ涓鍒楃殑璇濓紝#宸﹂潰鐨勬槸鍛戒护锛#鐨勫彸闈紙鍚庨潰锛変负娉ㄩ噴 2锛夊湪鍛戒护琛屼腑锛屾垨鑰呭湪璁茶В鍛戒护鐨勪緥瀛愪腑锛屽# vi test锛#鏈夊彲鑳芥槸绯荤粺鎻愮ず绗锛屽彲浠ュ拷鐣ュ畠銆傜煡閬搗i tst.txt灏辫浜 ...
  • python涓竴闂竴闂瓑寰呯敤鎴疯緭鍏ユ寚浠ょ殑灏忔柟鍧鏄粈涔?
    绛旓細杩欎釜灏忔柟鍧楁槸 Python 鐨勪氦浜掑紡shell 琛ㄧず绗︼紙prompt锛夛紝閫氬父鐢ㄤ簬绛夊緟鐢ㄦ埛杈撳叆鎸囦护骞舵墽琛屻傚湪Python鐨勬爣鍑嗗簱涓紝浜や簰寮弒hell鏄氳繃璇诲彇 Python 瑙i噴鍣ㄧ殑鏍囧噯杈撳叆杈撳嚭娴佷笌鐢ㄦ埛杩涜浜や簰瀹炵幇鐨勩傝岃繖涓皬鏂瑰潡鏄彁绀虹锛岀敤浜庡憡璇夌敤鎴峰綋鍓 Python 瑙i噴鍣ㄦ鍦ㄧ瓑寰呰緭鍏ャ傞粯璁ゆ儏鍐典笅锛孭ython 瑙i噴鍣ㄧ殑鎻愮ず绗︽槸涓変釜澶т簬鍙凤紙...
  • Linux绯荤粺Shell鍛戒护甯哥敤鍔熻兘浣跨敤璇﹁В
    绛旓細TERM 缁堢鐨勭被鍨嬨俇ID 褰撳墠鐢ㄦ埛鐨勮瘑鍒瓧锛屽彇鍊兼槸鐢辨暟浣嶆瀯鎴愮殑瀛椾覆銆侾WD 褰撳墠宸ヤ綔鐩綍鐨勭粷瀵硅矾寰勫悕锛岃鍙橀噺鐨勫彇鍊奸殢cd鍛戒护鐨勪娇鐢ㄨ屽彉鍖栥侾S1 涓绘彁绀虹锛屽湪鐗规潈鐢ㄦ埛涓嬶紝榛樿鐨勪富鎻愮ず绗︽槸#锛屽湪鏅氱敤鎴蜂笅锛岄粯璁ょ殑涓绘彁绀虹鏄$銆侾S2 鍦Shell鎺ユ敹鐢ㄦ埛杈撳叆鍛戒护鐨勮繃绋嬩腑锛屽鏋滅敤鎴峰湪杈撳叆琛岀殑鏈熬杈撳叆鈥/鈥濈劧鍚...
  • linux涓嬬殑shell鏄粈涔?
    绛旓細涓巗hutdown 閮芥槸Bourne shell 鐨勫懡浠ゆ。锛屼笖鍦ㄥ崟涓浣跨敤鑰呮ā寮(single user mode)涓嬩互 root 绛惧叆鏃跺畠甯歌绯荤粺绠$悊鑰呬娇鐢ㄣ侭ourne shell鍥犲叾绠娲侀珮鏁堣岄椈鍚嶏紝瀹冩槸鐢盇T&T寮鍙戠殑銆 Bourne shell 鎻愮ず绗鍙风殑榛樿鍊兼槸 銆2銆乧 shell c shell鏄竴绉嶆瘮 Bourne Shell鏇撮傚悎鐨勫彉绉 Shell锛屼娇鐢ㄧ殑鏄滅被C鈥濊娉...
  • ...鐨勪富瑕shell鐨勫悕瀛楀拰瀹冧滑鍚勮嚜榛樿鐨鎻愮ず绗︽槸浠涔?
    绛旓細Linux涓嬩竴鑸粯璁ょ敤鐨shell鏄bash
  • linux鐨勫綋鍓shell鍛戒护鎻愮ず绗[jerry@rhel3 /]鍚箟?
    绛旓細linux鐨勫綋鍓shell鍛戒护鎻愮ず绗[jerry@rhel3 /]鍚箟鏄敤鎴峰悕@鏈哄櫒鍚 褰撳墠璺緞銆傝繖涓彉閲忚兘澶熺紪杈戜綘home鐩綍閲岀殑闅愯棌鏂囦欢~/.profile鏀瑰彉锛屾壘鍒癙S1='\u@\h \w'鑷繁鏀广
  • linux涓璫entos6.6鐗堟湰鐨勯粯璁ょ櫥褰shell鏄
    绛旓細shell鍦↙inux涓被浼间簬java涓殑jvm锛屼篃灏辨槸鍛戒护瑙i噴鍣紝瀵圭敤鎴疯緭鍏ョ殑鍛戒护杩涜瑙i噴锛屽皢瑙i噴鍚庣殑鍛戒护鍙戦佸埌鍐呮牳銆俿hell鐨勪娇鐢紝鍦ㄧ敤鎴锋墦寮浠跨湡缁堢鎴栬呯敤鍏朵粬閾炬帴杞欢鐧诲綍鍚庯紝灏辫嚜鍔ㄨ繘鍏ヤ竴涓粯璁ょ殑shell绋嬪簭锛岀敤鎴峰彲浠ョ湅鍒皊hell鐨鎻愮ず绗銆俢entos榛樿浣跨敤鐨剆hell绋嬪簭鏄痓ash锛屽湪Linux涓竴鑸兘鎻愪緵澶氱shell绋嬪簭锛岀敤鎴...
  • 浠涔堟槸shell鍛戒护?windows绯荤粺涔熸湁shell鍛戒护鍚?
    绛旓細[Wikipedia:鍛戒护鎻愮ず绗]=== PowerShell锛堝寘鎷琖indows PowerShell鍜孭owerShell Core锛夋槸寰蒋鍏徃寮鍙戠殑浠诲姟鑷姩鍖栧拰閰嶇疆绠$悊妗嗘灦锛岀敱.NET Framework鍜.NET Core鏄瀯寤虹殑鍛戒护琛岀晫闈㈠3灞傜浉鍏宠剼鏈瑷缁勬垚锛屾渶鍒濅粎Windows缁勪欢锛屽悗浜2016骞8鏈18鏃ュ紑婧愬苟璺ㄥ钩鍙版敮鎸併俒3]鍦≒owerShell涓紝绠$悊浠诲姟閫氬父鐢眂mdlets锛...
  • linux甯哥敤鐨shell鏈夊摢浜
    绛旓細shell鏄鐢ㄦ埛鍜孡inux鍐呮牳涔嬮棿鐨勬帴鍙g▼搴忥紝濡傛灉鎶奓inux鍐呮牳鎯宠薄鎴愪竴涓悆浣撶殑涓績锛宻hell灏辨槸鍥寸粫鍐呮牳鐨勫灞傘傚綋浠巗hell鎴栧叾浠栫▼搴忓悜Linux浼犻掑懡浠ゆ椂锛屽唴鏍镐細鍋氬嚭鐩稿簲鐨勫弽搴斻俿hell鏄竴涓懡浠よ瑷瑙i噴鍣紝瀹冩嫢鏈夎嚜宸卞唴寤虹殑shell鍛戒护闆嗭紝shell涔熻兘琚郴缁熶腑鐨勫叾浠栧簲鐢ㄧ▼搴忔墍璋冪敤銆傜敤鎴峰湪鎻愮ず绗涓嬭緭鍏ョ殑鍛戒护閮界敱shell...
  • mate缁堢鐨$鏄摢绉嶇敤鎴
    绛旓細鍚姩缁堢妯℃嫙鍖呮垨鑰呬粠 Linux 鎺у埗鍙扮櫥褰曞悗锛屼究鍙互鐪嬪埌 Shell 鎻愮ず绗銆鎻愮ず绗︽槸閫氬線 Shell 鐨勫ぇ闂紝鏄緭鍏 Shell 鍛戒护鐨勫湴鏂广 瀵逛簬鏅氱敤鎴凤紝Base shell 榛樿鐨勬彁绀虹鏄編鍏冪鍙$锛涘浜庤秴绾х敤鎴凤紙root 鐢ㄦ埛锛夛紝Bash Shell 榛樿鐨勬彁绀虹鏄簳鍙#銆 璇ョ鍙疯〃绀 ...
  • 扩展阅读:手机shell权限开启 ... shell脚本基本命令 ... 普通用户的shell提示符 ... shell编程命令大全 ... shell脚本转义字符 ... shell修改命令提示符 ... 自定义shell提示符 ... shell常用的20个命令 ... shell如何自动显示提示符 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网