如何在bash中回显反斜杠转义PS1中使用的特殊字符?

时间:2013-02-01 03:09:36

标签: bash

我希望看到设置$PS1时使用的转义特殊字符的输出。例如,在PS1中放置\u将输出当前用户的用户名。

所以实质上:

omar @ ~ > echo -e '\u'

期望值:

omar

实际输出:

\u

2 个答案:

答案 0 :(得分:1)

您可以使用@P运算符进行参数扩展,如下所示:

prompt="\u"; echo ${prompt@P}

从Bash 4.4开始,您可以在Parameter expansion中使用@P运算符:

  

${parameter@operator}
  扩展是参数值的转换或有关参数本身的信息,具体取决于运算符的值。每个运算符都是一个字母:

     

@P 扩展名是一个字符串,它是将参数值扩展为提示的结果

以下是一些常见的special characters available to the PS1 command

  

下面列出了提示变量PS0,PS1,PS2和PS4中可能出现的特殊字符

     

\a 响铃字符
   \d 日期,以“工作日月份日期”格式(例如,“ 5月26日星期二”)
   \e 转义符
   \H 主机名
   \u 当前用户的用户名
   \w 当前工作目录

进一步阅读

答案 1 :(得分:0)

这是一种可用于显示转义字符值的方法。

下面定义的函数会将您当前的PS1更改为给定的字符串。输入命令后,您可以立即看到输出。

  1. 将当前的PS1存储在变量

    > save=$PS1

  2. 创建重置功能

    > function reset { PS1=$save; }

  3. 创建打印功能

    > function omar { PS1="\\$1 "; }

  4. 按如下方式使用

    > omar u:您的命令提示符将是您的用户名

    omar >

    > omar @:您的命令提示符将是12小时上午/下午格式的当前时间

    11:19 PM >

    > omar h:您的命令提示符将是第一个`。'

    之前的主机名

    omar-Laptop >

    等...

  5. 您可以通过拨打PS1或重新启动终端来重置reset