51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2305|回复: 0
打印 上一主题 下一主题

[转贴] Linux 的八个有用且有趣的 Bash 提示

[复制链接]
  • TA的每日心情
    无聊
    2024-11-5 10:03
  • 签到天数: 77 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2021-11-26 15:16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    许多人并不认为Linux命令行提示符是一个有用的元素,甚至不太注意它。然而,一个有用的提示符可以改变您使用命令行的方式,并通过扩展,改变您的系统。本文通过示例向您展示了许多有用和有趣的Bash提示。请注意,我们从提示符本身开始,然后进一步说明如何使用它们。
      这里我们提供了一些 Bash 提示,并不是所有的都是严肃的。例如,我们在列表中的第一个条目可以为您在使用命令行时带来一点乐趣!
      1、执行命令之后显示“字符表情”
      这个提示很有趣但很有用!这个想法是,只要你执行成功的命令,你的提示就会显示一个快乐的字符表情。
      相反,当命令失败时,你会看到一个悲伤的字符表情。
      要应用它,请使用以下代码
    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 历史[url=]记录[/url]编号以便于检索
    1.  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 提示可能会让你感兴趣。它显示日期、时间、完整目录路径、用户名和主机名、活动终端,甚至文件计数和空间使用情况
    1.   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 提示更具可读性
      除了很好地使用颜色来分隔不同的信息之外,这个提示没有什么特别之处。如您所见,它提供了时间、用户名和主机名以及当前目录。
    1. PS1="\[\033[35m\]\t</\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$"
    复制代码
    效果图如下:

      这是最有用的 Bash 提示之一,也是您自定义提示时首先要查看的区域。它可以为您学习自定义提示的工作原理提供良好的基础。
      5、显示完整目录路径
      就像使用颜色一样,这个提示是一个干净且最少的两行提示(尽管顶部有一个空行)。
      我们在第一行显示完整的工作目录路径,然后在底部显示用户。
    1.   PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"
    复制代码
    效果图如下:

      如果不想在提示中使用空行,可以去掉第一个\n。但是,请调整布局和格式,因为每个终端体验都会因您的计算机和命令行设置而异。
      6、显示后台作业计数
      这个两行显示我们尚未在 Bash 提示中使用的信息。我们提供后台作业的运行记录。如果您同时处理多项任务但需要密切关注任何活动,这将非常有用。
      第一行是用户名和主机名,以及工作目录路径。在第二行,我们有历史编号和后台运行的作业计数。
    1.  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、显示工作目录的信息
      有了这个,我们会在第一行显示用户名和主机名、作业计数以及日期和时间。下面是当前目录,以及目录中的文件数量和一些有关磁盘使用情况的信息。
    1. 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 提示。例如,这是对列表中第七个的修改,但已更改为占用更少的空间并包含一些特定和相关的信息。
      双线式总是更紧凑,因为您可以看到完整路径,而不会减少您使用的命令的空间。
    1.  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),我们将立即处理





    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 01:26 , Processed in 0.059849 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表