1.Linux命令行提示符简介

众所周知,Linux命令行是系统管理员管理Linux的重要手段,我们管理Linux,首先要面对的就是Linux命令行提示符。

Linux命令行结尾的提示符有“#”和“$”两种不同的符号,如下所示:

    [root@oldboy ~]#    #<==这是超级管理员root用户对应的命令行。

    [oldboy@oldboy ~]$  #<==这是普通用户oldboy对应的命令行。

其中:

1)#号,是使用超级用户root登录后的命令行结尾提示符,而$号是使用普通用户登录后的命令行结尾提示符。

2)超级用户具有管理系统的所有权限,普通用户的权限比较小,只能进行基本的系统信息查看等操作,无法更改系统配置和管理服务。

3)命令行提示符@前面的字符代表当前登录的用户(可用whoami查询),@后面的为主机名(可用hostname查询),~所在的位置是窗口当前用户所在的路径。示例如下

      [oldboy@oldboy ~]$  #<==@前的oldboy为当前用户, @后的oldboy为主机名,此处的~表示当前目录,即家目录。

4Linux命令提示符由PS1环境变量控制。示例如下:

     [root@oldboy ~]# set|grep PS1  #<==注意PS1是大写的。

这里的PS1='[\u@\h \W]\$ ',可以通过全局配置文件/etc/bashrc或/etc/profile中进行按需配置和调整。



2.PS1变量知识说明

Linux系统Bash命令行的提示符是由一个叫做PS1的系统环境变量控制的。PS1对应的知识见表1。

wKiom1kacQ6j-t4ZAABJ5dEUlaA675.png 


3. 提示符的实用技巧来了

 3.1 换一换Linux提示符的颜色

学习Linux和做Linux运维工作压力都很大,大家伙不放设置下颜色变化,调整下心情,减轻运维压力,其次,也可以将测试环境提示符的颜色和正式环境分开,以免误操作正式环境。

在变量PS1中,设置字符颜色的格式为:\[\e[F;Bm\],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47。颜色表如下: 

F(前景)

B(背景)

颜色说明

30

40

黑色  

31

41

红色   

32

42

绿色   

33

43

黄色   

34

44

蓝色   

35

45

紫红色

36

46

青蓝色

37

47

白色  


      例如:将命令行字体调整为黄色,背景和大背景一样的颜色。

wKioL1kacPrCZrshAAAqZ_IqSjI744.png

核心内容字符部分为:PS1='[\[\e[33;40m\]\u@\h \W]# '

怎么样?不错吧?

当然还有更舒服的配置,老男孩喜欢绿色,不喜欢黄色,因为太黄了。哈哈。

wKioL1kan2TAqnhgAAB2IiIh0lk640.png

    对应变量是PS1='\[\e[32;1m\][\u@\h \W]\$ \[\e[0m\]' 

     有关Bash字体及背景色的详细讲解,读者可以参考《跟老男孩学习Linux运维:Shell编程实战》的第13章有详细讲解。


  3.2 命令提示符显示当面的系统路径

我们通过命令行管理Linux时,经常会切换不同的路径,此时输入pwd命令就可以知道当前的路径是啥。

其实,在系统中使用Bash命令行就会自动显示用户当前所在的路径,但是默认情况下这个路径显示不全,下面的范例将会带领读者配置在命令行直接显示当前用户的完整路径。

     [root@oldboy ~]# echo $PS1  #<==打印超级管理员对应的PS1值。

       [\u@\h \W]\$                #<== @是一个分隔符,和邮箱地址中的@作用类似。

    可修改PS1变量对应的值,来让命令行显示全路径:

      [root@oldboy ~]# PS1='[\u@\h \w]\$ '  #<==\w小写的w

      [root@oldboy ~]# cd /usr/local/

      [root@oldboy /usr/local]#            #<==可以看到已经是全路径了。

      [root@oldboy ~]# PS1='[\u@\h \w]\$ '  #<==将默认的\W改为\w(小写w),仅临时生效。

      [root@oldboy ~]# cd /etc/sysconfig    #<==切换目录实验。

      [root@oldboy /etc/sysconfig]#       #<==可以看到路径是全路径了。

上面的方法只是临时性的,若要让PS1变量永久生效,可采用如下配置方法:

编辑/etc/bashrc文件,找到符合下面内容的一行(大约在第36行),将内容中的大写的W改为小写w,即可让变量永久生效。也就是将:

      [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

改为下面内容,保存并退出。

        [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

最后,注销,重新登录系统或直接执行source /etc/bashrc使得修改的信息生效。

 

  3.3 命令行显示当前时间

      调整方法为:PS1='[\[\e[33;40m\]\u@\h \w \t]# ',就是\t就好了。

wKiom1kacWOzCbaqAABrN8xZmEg075.png