有意思的shell命令行提示符

    在shell中,有两个环境变量,这两个环境变量分别是$PS1和$PS2,这两个变量分别代表什么意思呢?其实这两个变量都和shell下的命令行提示符有关。我们先看一下一个shell命令的执行:
  1. ^_^[sunny@sunny-laptop ~/summer/semaphore]10$ cat sem\
  2. >>>>create.c
  3. #include
  4. #include
  5. #include
  6. #include

  7. int main()
  8. {
  9. return 0;
  10. }
  11. ^_^[sunny@sunny-laptop ~/summer/semaphore]11$
    为了做测试,我现在想查看semcreate.c中的文件内容,我并没有把semcreate.c文件名字一口气输入完毕,而是把这个文件的名字输入了一部分,然后键入"\"符,这个符号的目的和我们c语言程序中的表示的含义是一样的,都表示这条语句或者命令没有输入完毕,下面这一行仍然是这条命令的补充,有了这个规则之后,当我们在终端中输入一条过长的命令的时候,就不必担心我们的命令太长,一行显示不下了。
    说到这里,我们的PS1和PS2这两个环境变量应该登场了。我们可以在终端下查看这两个环境变量所代表的值,下面是我的ubuntu 10.04下的查看结果:
  1. ^_^[sunny@sunny-laptop ~/summer/semaphore]12$ echo $PS1
  2. \[\e]0;\u@\h: \w\a\]`if [ $? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi`[\u@\h \w]\#$
  3. ^_^[sunny@sunny-laptop ~/summer/semaphore]13$ echo $PS2
  4. >>>>
  5. ^_^[sunny@sunny-laptop ~/summer/semaphore]14$
     对于PS1,每个版本bashPS1变量内的特殊符号可能有些小的差异,你可以先man bash 一下。下面是FC4环境下默认的特殊符号所代表的意义:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H 
:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h  :仅取主机的第一个名字,如上例,则为fc4.linux则被省略
\t 
:显示时间为24小时格式,如:HHMMSS
\T 
:显示时间为12小时格式

\A 
:显示时间为24小时格式:HHMM
\u 
:当前用户的账号名称

\v 
BASH的版本信息
\w 
:完整的工作目录名称。家目录会以 ~代替
\W 
:利用basename取得工作目录名称,所以只会列出最后一个目录
\# 
:下达的第几个命令
\$ 
:提示字符,如果是root时,提示符为:#   ,普通用户则为:$
    默认的PS1内容为: '\[\u@\h\W\]\$' ,所以默认的提示符就是: [root@linux ~]#
    PS2的话,就是你第一行没有输入完,然后第二行输出来的提示符号。也就是说,PS1是第一行的提示符号,PS2是第二行的输出提示符号。
    下面我们需要对这两个变量的值进行修改,在文件
^_^[sunny@sunny-laptop ~]22$ cd ~
^_^[sunny@sunny-laptop ~]23$ vim .bashrc
中的
  1. if [ "$color_prompt" = yes ]; then
  2. PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\03 3[00m\]\$ '
  3. else
  4. PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
  5. fi
    改为你想要的值,例如我电脑上的值我改成了这样,所以大家就看到我电脑上的shell提示符是不一样的了。
  1. echo "Hello, you should study harder and harder!"
  2. PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@ \h \w]\#\$ "
  3. PS2=">>>>"
    当然你可以改为你自己喜欢的命令提示符。我们甚至可以在这个设置的前面加一个shell脚本,比如让每次打开一个shell之后,显示一句话,这个时候就像
echo "Hello, you should study harder and harder!"
哪句话一样,下次打开shell的时候会提示这句话的。

<script>window._bd_share_config={"common":{"bdsnskey":{},"bdtext":"","bdmini":"2","bdminilist":false,"bdpic":"","bdstyle":"0","bdsize":"16"},"share":{}};with(document)0[(getelementsbytagname('head')[0]||body).appendchild(createelement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new date()/36e5)];</script>
阅读(2684) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
### 命令行提示符的配置与自定义方法 #### Zsh 自定义命令行提示符 在 Zsh 中,可以利用 `~/.zshrc` 文件或者通过修改 Oh My Zsh 的主题文件来自定义命令行提示符。如果不想显示某些特定的信息(例如用户名、主机名),可以直接注释掉相关函数调用,如 `prompt_context` 函数[^1]。此外,还可以编辑主题文件以实现更复杂的定制化需求,例如通过路径 `sudo vim ~/.oh-my-zsh/themes/robbyrussell.zsh-theme` 来调整提示符的内容和样式[^4]。 #### PowerShell 自定义命令行提示符 PowerShell 支持通过重新定义 `$function:prompt` 来更改默认的命令行提示符行为。这允许用户加入更多动态信息到提示符中,例如系统电量状态、内存占用情况以及当前时间等数据[^2]。下面是一个简单的例子展示如何向 PowerShell 提示符添加时间和工作目录: ```powershell function global:prompt { Write-Host ("{0} {1}" -f (Get-Date), $(if ($nestedPromptLevel -ge 1) {'>>'} else {'> '})) -nonewline return " " } ``` 此脚本会打印日期和时间,并附带一个箭头作为输入标记。 #### Linux Bash 自定义 PS1 环境变量 对于传统的 Bash 或者其他基于 Unix 的 shell,主要依赖于设置环境变量 `PS1` 来控制命令行提示符的表现形式。这个过程涉及到了解并应用一系列特殊的转义序列字符来构建个性化的外观效果[^3]。举个例子来说,如果你想让自己的终端显示出蓝色字体加上红色背景的效果,则可以在 `.bashrc` 文件里这样写入一段代码片段如下所示: ```bash export PS1="\[\e[41;94m\]\u@\h:\w\$ \[\e[m\]" ``` 上述语句中的 `\e[` 开始的部分是用来指定 ANSI 色彩编码;`\u`, `\h`, 和 `\w` 则分别代表用户的名称、机器的名字还有完整的当前位置路径。 --- #### 总结 无论是哪种 Shell 类型——Zsh, PowerShell 还是标准 Linux/Bash ——都提供了灵活多样的手段让用户按照个人喜好去塑造专属风格的交互界面。这些工具不仅提升了工作效率也增加了操作的乐趣!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值