Linux 的八个有用且有趣的 Bash 提示

发表于:2021-11-11 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:聆听世界的鱼    来源:Linux公社

  许多人并不认为Linux命令行提示符是一个有用的元素,甚至不太注意它。然而,一个有用的提示符可以改变您使用命令行的方式,并通过扩展,改变您的系统。本文通过示例向您展示了许多有用和有趣的Bash提示。请注意,我们从提示符本身开始,然后进一步说明如何使用它们。
  这里我们提供了一些 Bash 提示,并不是所有的都是严肃的。例如,我们在列表中的第一个条目可以为您在使用命令行时带来一点乐趣!
  1、执行命令之后显示“字符表情”
  这个提示很有趣但很有用!这个想法是,只要你执行成功的命令,你的提示就会显示一个快乐的字符表情。
  相反,当命令失败时,你会看到一个悲伤的字符表情。
  要应用它,请使用以下代码:
  PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$" 
  效果图如下:
  这可能看起来令人困惑,但我们使用 if 语句来确定命令是好是坏。从那里,我们在颜文字周围使用一些转义,以确保它们以正确的方式显示。
  2、当终端发出错误命令时更改 Bash 提示的颜色
  可以说,这个提示是列表中最有用的。像上面一样,如果您的最后一个命令未能运行,提示会更改颜色,但也会缩短长路径并包含每个命令的 Bash 历史记录编号以便于检索。
  PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"' 
  效果图如下:
  同样,这看起来很难实现,但它很简单。我们再次使用 if 语句以及颜色代码来突出显示各种消息。
  您可以将这些颜色设为您喜欢的任何颜色,但我们会运用一些逻辑思维,更改后的颜色应该对您有所帮助,而不是仅仅为了进行更改而更改。
  3、将Bash提示扩展到多行
  有时,你可能希望在 Bash 提示中包含大量信息。这个 Bash 提示可能会让你感兴趣。它显示日期、时间、完整目录路径、用户名和主机名、活动终端,甚至文件计数和空间使用情况。
  PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]" 
  效果图如下:
  在这里,我们不需要 if 语句,因为提示本身将具有静态布局和动态内容。您可能还会发现很难解析这个元素中的不同元素。我们的建议是应用它,然后逐条运行提示。通过一些交叉引用,您将开始了解提示是如何组合的。
  4、使用颜色使您的 Bash 提示更具可读性
  除了很好地使用颜色来分隔不同的信息之外,这个提示没有什么特别之处。如您所见,它提供了时间、用户名和主机名以及当前目录。
  PS1="\[\033[35m\]\t</\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$" 
  效果图如下:
  这是最有用的 Bash 提示之一,也是您自定义提示时首先要查看的区域。它可以为您学习自定义提示的工作原理提供良好的基础。
  5、显示完整目录路径
  就像使用颜色一样,这个提示是一个干净且最少的两行提示(尽管顶部有一个空行)。
  我们在第一行显示完整的工作目录路径,然后在底部显示用户。
  PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]" 
  效果图如下:
  如果不想在提示中使用空行,可以去掉第一个\n。但是,请调整布局和格式,因为每个终端体验都会因您的计算机和命令行设置而异。
  6、显示后台作业计数
  这个两行显示我们尚未在 Bash 提示中使用的信息。我们提供后台作业的运行记录。如果您同时处理多项任务但需要密切关注任何活动,这将非常有用。
  第一行是用户名和主机名,以及工作目录路径。在第二行,我们有历史编号和后台运行的作业计数。
  PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] ' 
  效果图如下:
  尽管它可以为您提供有关系统活动的一些急需的信息,但它没有什么特别之处。您甚至可以将其转换为更复杂的提示,并添加 if 语句和颜色编码以在作业达到特定级别时通知您。
  7、显示工作目录的信息
  有了这个,我们会在第一行显示用户名和主机名、作业计数以及日期和时间。下面是当前目录,以及目录中的文件数量和一些有关磁盘使用情况的信息。
  PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]" 
  效果图如下:
  所有这些提示的最大问题是弄清楚围绕格式化和转义发生了什么。但是,与多行提示一样,您应该一点一点地解决这个问题,直到您了解整体结构。
  您甚至可以一次输入一部分并注意它是否显示或是否有错误,然后处理完整的代码段。
  8、创建你自己的 Bash 提示
  自定义 Bash 提示。
  您可以结合以上任何一项和所有内容来创建您自己的自定义 Bash 提示。例如,这是对列表中第七个的修改,但已更改为占用更少的空间并包含一些特定和相关的信息。
  双线式总是更紧凑,因为您可以看到完整路径,而不会减少您使用的命令的空间。
  PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]" 
  效果图如下:
  到现在为止,您可能已经了解此提示的作用,但我们的建议是尝试创建自己的提示而不是粘贴此提示。这样,您就可以开始了解不同元素如何协同工作,甚至可能想出您自己的自定义 Bash 提示。
  总结
  如果您经常使用命令行,或者在启动终端应用程序时有特定需求,那么自定义提示可能是一个好主意。不需要太多知识,在很多情况下,您可以从其他开发人员那里找到您需要的提示。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号