在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,每个版本bash的PS1变量内的特殊符号可能有些小的差异,你可以先man bash 一下。下面是FC4环境下默认的特殊符号所代表的意义:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h  :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\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) |

0

上一篇:linux getopt()函数简单使用

下一篇:博客已升级,请注意变更地址

相关热门文章
  • python 自动化测试平台 Robot ...
  • python 自动化测试平台 Robot ...
  • python snmp 自动化2-在python...
  • 自动化测试详细测试计划 模板...
  • python snmp 自动化3-修改pyth...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议

有意思的shell命令行提示符相关推荐

  1. Linux 终端命令行提示符的艺术--PS1进阶

    话不多说,先瞅瞅我的命令行提示符(有点大): 图中命令行解释: ┌[阳历日期/农历日期 时间] ├[当前目录下目录数+当前目录下文件数][当前绝对目录] └[用户名@主机名-第几个终端 ╰_╯] 相关 ...

  2. firebase 发生消息_如何在命令行提示符下显示当前的Firebase项目名称,以防止发生危险错误...

    firebase 发生消息 by Thang Minh Vu Thang Minh Vu 如何在命令行提示符下显示当前的Firebase项目名称,以防止发生危险错误 (How to show your ...

  3. 操作系统课设之简单 shell 命令行解释器的设计与实现

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  4. shell 清楚空格_Cygwin系列(五):Shell命令行初体验

    ► 本文共5700余字,预计阅读时间15分钟,本文知乎链接:Cygwin系列(五):Shell命令行初体验,本文同步发布于微信公众号. 前一篇文章Cygwin系列(四):一步一步搭建Cygwin最小系 ...

  5. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  6. 快乐的shell命令行

    快乐的shell命令行 PART1--基础 1.权限 #超级用户权限 $普通用户 2.复制粘贴 复制:鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区(或者双击一个单词) 粘贴:鼠标中键 3.简单 ...

  7. Linux环境变量PS1_命令行提示符设置

    PS1是一个Linux终端下的一个环境变量,可以在当前命令提示符上显示所配置的信息. 例如这样: root@G470:~#  或者这样: user1@G470:~$ PS1中可以配置bash识别的转义 ...

  8. 2021年大数据Hadoop(八):HDFS的Shell命令行使用

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的Shell命 ...

  9. 13分页和shell命令行模式

    技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.为什么先讲分页功能 2.快速添加新的博客 shell命令行模式 ...

最新文章

  1. linux系统共享盘,linux与其他操作系统文件共享方法
  2. 4、spring核心AOP
  3. 【渝粤教育】国家开放大学2018年春季 8635-21T老年人中医体质辨识与养 参考试题
  4. JNI通过线程c回调java层的函数
  5. Inception(Pytorch实现)
  6. LeetCode 156. 上下翻转二叉树(DFS)*
  7. oracle 01589,ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
  8. FPGA 无解漏洞 “StarBleed”轰动一时,今天来扒一下技术细节!
  9. scholarscope不显示影响因子_Cancer Cell | 冯嘉怡博士等揭示精氨酸甲基转移酶抑制剂可通过影响RNA剪接发挥抑癌效果...
  10. 扒一扒开源世界有哪些licenses?
  11. JDBC第三篇--【事务、元数据、改造JDBC工具类】
  12. java初始堆建议值_Java堆初始大小的建议值
  13. Swift 2.0 自定义cell和不同风格的cell
  14. 马哥2020linux笔记下载,马哥linux 基础命令笔记
  15. 新版Edge浏览器88版本系列不支持adobe flash的处理方法
  16. 静态代理和动态代理区别(是否有实现类)
  17. Zookeeper分布式锁解决羊群效应的方案
  18. Docker 安装及镜像加速器配置
  19. Chartboost 广告添加使用
  20. 美术向技美入门课——庄懂的技术美术入门课(美术向)01

热门文章

  1. JS随手记——跨页面传值
  2. 国产迪王耀全球(上)
  3. 半导体的基础-三极管的工作原理,史上绝无仅有的理解方式
  4. NOIP模拟系列 [BZOJ4668]冷战
  5. 如何使用在线客服转接功能
  6. WD蓝盘绿盘黑盘红盘的区别
  7. 2022基金从业考试如何备考
  8. 基于软路由连接上网的相关配置
  9. 快递查询 教你一个方法使用物流单号查询物流信息
  10. 修改win7锁屏壁纸,突破壁纸大小256Kb限制