如何更改Bash Shell迅速色彩缤纷,在Linux中有吸引力

时间:2020-03-05 15:26:05  来源:igfitidea点击:

我们大多数人都使用shell提示。
默认情况下,Linux Distro显示主机名和当前工作目录。
但只有少数可能知道自定义BASH提示。
我们会很高兴知道我们可以更改Shell提示的颜色来介绍朋友,或者通过在工作时向命令提示添加一些重要信息来使我们自己的生活非常简单。

在本文中,我将解释如何以简单的方式更改颜色或者自定义BASH提示。

了解Bash.

Bash Shell是任何Linux发行版下的默认值。
提示通过名为PS1的特殊shell变量来控制。
还有其他变量,如ps2,ps3和ps4.
Bash在准备好读取命令时显示主提示PS1.
并且它在需要更多输入以完成命令时显示辅助提示PS2.

简而言之,Bash允许通过插入许多反斜杠传播的特殊字符来定制这些提示字符串。

显示当前BASH提示

我们可以通过在下面运行此命令查看当前的bash提示符状态:

# echo $PS1
[\u@\h \W]$

默认情况下,命令提示符被设置为[_@ \ h \ w] \ $。
每个Backslash逃逸的特殊字符都可以如下解码:

  • \ u:显示当前的用户名。
  • \ h:显示主机名
  • \ w:打印当前工作目录的基础。
  • \ $:display#(表示root用户)如果有效的UID为0,否则显示为$。

对于root以外的UNIX用户,它将如下所示:

[linodadmin@centos-01 ~]$

修改BASH提示

如前所述,Bash提示由名为PS1的变量控制,我们可以在.bashrc文件中调整此变量以自定义提示。

此外,如果我们想在系统上或者全局中为所有系统用户提供这些更改,我们需要做的就是在/etc/bash.bashrc文件中修改此变量(在Debian和Ubuntu系统上)或者/etc/Bashrc(在其他Linux发行版上)而不是~/.bashrc。

Bash允许我们使用一些快捷方式来检索详细信息,例如用户名,主机名,当前工作目录,日期和时间等。
这些快捷方式称为转义序列。

举个例子,我们希望以12小时格式显示用户的名称,主机名,当前目录和时间,然后是$。
然后可以通过通过这些转义序列修改PS1变量来检索它,该序列显示如下所需信息:

  • \ u:显示当前的用户名。
  • \ h:显示主机名
  • \ w:打印当前工作目录的基础。
  • \ @:在12小时/pmm/pm格式中显示当前时间
$export PS1="[\u@\h \W \@]\$"
[linodadmin@centos-01 ~ 01:50 PM]$

这将仅允许对BASH提示进行临时更改。
如果我们需要对后续终端进行永久性更改,则可以使用此PS1值(PS1 ="[_@ \ h \ w \ @] \ $")编辑~.bashrc文件文件的末尾。

查看一些转义序列列表,这将有助于我们检索我们所需的信息。

  • "u"当前用户的用户名,
  • \ w当前的工作目录
  • \ w当前工作目录的最后一个片段。例如,如果我们当前在/home/linodadmin/var中,这将为我们提供var。
  • \ h计算机的名称,最多一个点(。)。例如,如果计算机名为Centos-01.theitroad.com,则为我们提供CentOS-01.
  • \ hfqdn主机名
  • \ D在"工作日月日"格式(例如,3月21日星期二)
  • "\ t"在24小时HH:MM:SS格式的当前时间
  • "\ t"当前时间为12小时HH:MM:SS格式
  • \ @目前的12小时AM/PM格式
  • \ n继续前进到下一行。
  • "\!":此命令的历史编号
  • "\ #":此命令的命令编号
  • \ $:如果有效的UID是0,A#,否则为$
  • \ j:shell 体目前管理的工作数量

将颜色添加到提示符

大多数情况下,系统管理员希望将一些颜色添加到他们的沉闷shell 提示。
这可以通过PS1变量中的ANSI转义序列的帮助来实现这一点。
这些逃生序列需要括在\ [和]中以便正常工作。
以一种简单的方式,我们可以使用此命令语法将颜色添加到shell提示符。

'\e[x;ym $PS1 \e[m'

其中:

  • \ e [:开始配色方案。
  • x; y:颜色对使用(x; y)
  • $ps1:shell提示变量。
  • \ e [m:停止配色方案。

查看可以使用的颜色代码列表:

txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
bakgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset

让我们看看使用这些颜色代码的示例。

假设,我们希望在一个终端语句本身中使用不同的颜色,如我们想要在红色和青色的目录路径中显示用户名,然后是黄色,粗体$符号。
我们需要根据需要使用转义序列。
例如,红色的转义序列是\ e [31M,对于青色,它是\ e [36m,而对于黄色,它是\ e [33m。
对于粗体文本,我们需要使用\ e [1m。
此外,我们需要重置ANSI转义序列,这可以防止样式影响shell中的其余文本。
复位序列是\ e [0m。
PS1变量为此看起来像这样。

export PS1='\[\e[32m\u\] \[\e[36m\w\] \[\e[33m\]\[\e[1m\]$\[\e[0m\]'

出口语句应添加到$Home/.bashrc文件中以进行永久更改。

使用tput命令

我们甚至可以使用tput命令修改提示设置。
例如,要使用Tput显示黄色提示,我们可以使用以下命令:

export PS1="\[$(tput setaf 3)\]\u@\h:\w $\[$(tput sgr0)\]"

下面的一些Tput命令行选项的列表:

  • tput bold- 粗体效果
  • Tput Rev- 显示逆颜色
  • "tput sgr0" - 重置所有内容
  • tput setaf {code}- 设置前景色,请参阅下面的颜色{code}表格显示更多信息。
  • "tput setab {code}" - 设置背景颜色,请参阅下面的颜色{code}表格显示更多信息。

用于Tput命令行选项的颜色代码

使用以下这些Tput命令签出示例:

使用bashish修改提示设置

Bashish是文本终端的主题环境。
它可以根据每个应用程序更改颜色,字体,透明度和背景图像。
此外,它支持提示在常见的shell上更改,如bash,zsh和tcsh。
我们可以从下载链接为我们的Linux发行版安装这些工具。

我使用ITSTAR提取物安装它。

root@centos-01:/home/bashish-2.2.4 $./configure
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating data/main/prompt/sh/autoload
config.status: creating data/bashish-version
config.status: creating Makefile
config.status: creating bashish.spec
config.status: creating man/bashish.1
config.status: creating bin/bashish
Bashish configuration:
prefix: /usr/local
Now run 'make' and 'make install'
root@centos-01:/home/bashish-2.2.4 $make
root@centos-01:/home/bashish-2.2.4 $make install

现在我们需要运行bashish来安装用户配置文件。

$bashish
This will enable Bashish prompt and terminal themeing
the following files will be modified:
~/.profile
~/.bashrc
~/.bash_profile (if already exists)
~/.zprofile (if already exists)
~/.zshrc
press ENTER to enable Bashish theming
or hit CTRL+C to quit
Bashish is now installed.
Restart your terminal or logoff and logon again to start theming your shell.

接下来,我们必须通过键入以下命令重新启动shell:

$exec bash
┌────[root@centos-01]───────[15:58:35]───────[/home/bashish-2.2.4]─────────────────────────────────────────────────────────────────────────────
└──#

我们可以键入命令Bashish列表以查看所有可用的自定义主题和bashish --help以查看更多选项。

─# bashish list
amiga
amigados
appchat
appcompress
appeditor
appeditornofont
appeditor_reversed
appevilroot
appgeneric
apphearttracker
appinvertfgbg

例如,我们可以通过键入bashish themename将所需的更改应用于命令提示符

$bashish moo

这将在快照中修改命令提示符。

同样,我们可以应用这些自定义主题中的任何一个来修改命令提示符或者终端设置。

在提示上添加表情符号

此外,我们将很高兴地知道我们甚至可以让笑脸显示我们提示与我们的工作(成功/失败)对应于提示的表达式。
例如,我们希望在我们的失败尝试中展示我们成功的尝试和红色悲伤笑脸的绿色幸福笑脸。
然后我们可以设置一个逻辑脚本来获取布尔值以显示与返回的变量值对应的笑脸。

export PS1='$(if [[ $? == 0 ]]; then echo "\[\e[32m\]:)"; else echo "\[\e[31m\]:("; fi)\[\e[0m\] _\w $'

$?
变量保存上一个程序的返回值。
如果它成功,它包含一个0,如果失败,则非零值。
$(如果... FI)块包含显示表情符号的逻辑。

在提示符上添加EMOJIS

我们可以使用Unicode字符为Emojis的Unicode字符修改相同的逻辑字符串,而不是表情符号以更有效地传送情绪。
请查看已修改的字符串,其中包含笑脸提示的Emoji变体。
:)表示为\ xf0 \ x9f \ x98 \ x83和:(表示为\ xf0 \ x9f \ x99 \ x81.

export PS1='$(if [[ $? == 0 ]]; then printf "\xf0\x9f\x98\x83"; else printf "\xf0\x9f\x99\x81"; fi)\[\e[0m\] _\w $'

但是,取决于终端仿真器和我们系统上使用的字体,我们可以看到单色表情符号甚至乱码。