• Linux终端提示符PS1设置(颜色)


    d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
    H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
    h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
    :显示时间为24小时格式,如:HH:MM:SS
    T :显示时间为12小时格式
    A :显示时间为24小时格式:HH:MM
    u :当前用户的账号名称
    v :BASH的版本信息
    w :完整的工作目录名称。家目录会以 ~代替
    W :利用basename取得工作目录名称,所以只会列出最后一个目录
    # :下达的第几个命令
    $ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

        CentOS中关于这些:
    a     an ASCII bell character (07)
    d     the date in "Weekday Month Date" format (e.g., "Tue May
                         26")
    D{format} the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
    e     an ASCII escape character (033)
    h     the hostname up to the first ‘.’
    H     the hostname
    j     the number of jobs currently managed by the shell
    l     the basename of the shell’s terminal device name
         newline
         carriage return
    s     the name of the shell, the basename of $0 (the portion
                         following the final slash)
         the current time in 24-hour HH:MM:SS format
    T     the current time in 12-hour HH:MM:SS format
    @     the current time in 12-hour am/pm format
    A     the current time in 24-hour HH:MM format
    u     the username of the current user
    v     the version of bash (e.g., 2.00)
    V     the release of bash, version + patch level (e.g., 2.00.0)
    w     the current working directory, with $HOME abbreviated with a tilde
    W     the basename of the current working directory, with $HOME abbreviated with a tilde
    !     the history number of this command
    #     the command number of this command
    $     if the effective UID is 0, a #, otherwise a $
    nn   the character corresponding to the octal number nnn
    \     a backslash
    [     begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
    ]     end a sequence of non-printing characters


        于是可以根据这些指定自己喜欢的命令提示符格式:

    PS1="u@h:w$ " 
        但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:

    PS1="e[1;32mue[me[1;33m@e[me[1;35mhe[m:w$ " 
        此时,在终端中的显示应该是彩色的提示符了,其中的e[1;xxm和e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "[" 和 "]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间 ,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):

    PS1="[ e[1;32m] u[ e[m] [ e[1;33m] @[ e[m][ e[1;35m] h[ e[m] :w$ "

    先说BASH:
    bash的提示符为 PS1 变量, 默认是 环境变量, 下面包含bash为用户在PS1中所使用的符号的一个完整列表:

    a ASCII 响铃字符(也可以键入 07)  
    d "Wed Sep 06" 格式的日期          
    e ASCII 转义字符(也可以键入 33)  
    h 主机名的第一部分(如 "mybox")  
    H 主机的全称(如 "mybox.mydomain.com")  
    j 在此 shell 中通过按 ^Z 挂起的进程数  
    l 此 shell 的终端设备名(如 "ttyp4")  
    换行符  
    回车符  
    s shell 的名称(如 "bash")  
    24 小时制时间(如 "23:01:01")  
    T 12 小时制时间(如 "11:01:01")  
    @ 带有 am/pm 的 12 小时制时间  
    u 用户名  
    v bash 的版本(如 2.04)  
    V Bash 版本(包括补丁级别) ?/td>;  
    w 当前工作目录(如 "/home/drobbins")  
    W 当前工作目录的“基名 (basename)”(如 "drobbins")  
    ! 当前命令在历史缓冲区中的位置  
    # 命令编号(只要您键入内容,它就会在每次提示时累加)  
    $ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"  
    xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "07")表示的 ASCII 字符  
    \ 反斜杠  
    [ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。  
    ] 这个序列应该出现在非打印字符序列之后。  

    我所使用的的提示符为 PS1="***** w *** <u@h> ***** ! ***** *** $ "
    这个提示符, 我很喜欢, 应为他包含了我需要的足够信息如: 工作目录 用户名@机器名 命令编号 以及 时间, 但是他又不至于使 提示符 占用太长, 以至于没有多少空间留下来给 输入的命令, 注意看最后那个 是个换行符, 故而 这是个 2行提示符, $ 独占一行, 留下足够的空间以便输入命令。

    然而, 以上的提示符 不过 是我的“初稿”而已, 我还准备把它加上颜色, 使其更加醒目, 且 方便使用。 那么说到这里, 就不得不说一下终端的颜色使用了。(以下颜色是借鉴网上一篇文章而来)

    颜色是通过在 PS1 中添加专用序列来选择的 -- 基本上是夹在 "e["(转义开方括号)和 "m" 之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。
    下面是一个颜色代码示例:
    "e[0m"  

    如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认值。您可能会在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我们看一下这些颜色代码。请注意下面的抓屏结果:
      

    颜色表  
    前景          背景              颜色
    ---------------------------------------
    30             40             黑色
    31             41             紅色
    32             42             綠色
    33             43             黃色
    34             44             藍色
    35             45             紫紅色
    36             46             青藍色
    37             47             白色


    代码              意义
    -------------------------
    0                 OFF
    1                 高亮显示
    4                 underline
    5                 闪烁
    7                 反白显示
    8                 不可见
    要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号 (30-37) 和背景编号 (40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为 32 和 40。然后打开您的提示行定义并在其中添加适当的颜色代码。下面的定义:

    export PS1="w> "  
    变为:  
    export PS1="e[32;40mw> "  
    到现在为止,提示行
    尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "e[0m" 序列将颜色重新设置为正常值。  
    export PS1="e[32;40mw> e[0m"  

    此时我可以加工我以上的 “草稿了”, 将以下写入 .bashrc 或者 .bash_profile(两者有点差别, 主要在 登录shell 与 非登录shell方面, 我还会写一篇 登录shell 与 非登录shell的文章来 详细介绍如何设置这两个文件, 以求最优, 不过在这里 你可以随便写入那个文件)。
    # 先设置需要的颜色变量, 分别为 关闭颜色, 黑色, 红色, 绿色, 黄色, 蓝色,紫红色,青蓝色,白色。 注意这里没有写背景色, 你也可以如上 e[32;40m 这样加入背景色, 来获取更加丰富的颜色方案, 但是这里我认为足够了。
        c_1="[e[0m%]"
        c0="[e[30m%]"
        c1="[e[31m%]"
        c2="[e[32m%]"
        c3="[e[33m%]"
        c4="[e[34m%]"
        c5="[e[35m%]"
        c6="[e[36m%]"
        c7="[e[37m%]"
        PS1="$c0***** $c1w $c2*** $c3<u@h> $c4***** $c5! $c6***** $c7 $c1*** $c2$ $c_1"; export PS1

    这样一个漂亮的 提示符便展现在你的面前。 
    注意 最后的 $c_1 , 一定不要忘记, 这个是让终端恢复以前的颜色, 不然你所键入的命令, 显现的文件都将显示为最后 $c2 所定义的颜色。 还有, 细心的人定会发现颜色前后都被加上[ ]这对符号,以其作用不外乎告诉终端, 这个是不占用终端的空间的, 开始终端编码而已,以便终端能够顺利换行等事情。

    TCSH的设置。
    我们可以使用的标记列表有:
    !    跟%h一样
    %B    开始粗体模式
    %b    结束粗体
    %c    当前工作目录名称的最后部分, 相当于basename $cwd 或者 ${cwd:tail} ${cwd:t}
    %c2, %c3等等 最后2,3(等等)部分
    %C    与%c类似,但是使用长形式
    %d    本周的当天
    %D    今天时当月中的第几天
    %h    历史编号
    %l    shell的当前控制终端
    %U    开始下划线
    %u    结束下划线
    %/    完整目录名
    %~    短格式目录
    %m    机器名
    %n    登录名
    %h    历史编号
    %P %p %t %T    时间的不同形式。
       .
       .
       .
    太多了, 我们用到的也就几个而已,不知道的自己上网GOOGLE吧。

    tcsh会读取 .login 和 .cshrc(或者.tcshrc), 登录shell两个文件都读取, 非登录shell只读取 .cshrc. 而提示符tcsh下使用的是 prompt 通常不设定为环境变量, 设为shell变量即可。 以下便是 上面PS1版本在TCSH下 prompt的设定。

    set c_1 = "%{e[0m%}"
    set c0 = "%{e[30m%}"
    set c1 = "%{e[31m%}"
    set c2 = "%{e[32m%}"
    set c3 = "%{e[33m%}"
    set c4 = "%{e[34m%}"
    set c5 = "%{e[35m%}"
    set c6 = "%{e[36m%}"
    set c7 = "%{e[37m%}"
    set prompt = "$c1***** $c2%/ $c3*** $c4<%U`whoami`%u@%m> $c5*** $c6%h$c_1 $c7***** $c1%P $c2*** $c3%%$c_1 "

    注意, bash设置变量直接写 x="..."这样,但是tcsh要有set。 %{ %}就相当于bash下的[ ]

  • 相关阅读:
    CSS 总结
    C#实现网页表单自动提交
    解析XML【C#】
    用正则表达式替换指定标签中的内容
    C#实现在winfrom程序中下载文件
    DataGridView添加复选框并向其中绑定值
    二进制数与十六进制数之间如何互相转换
    MySql数据库表类型MYISAM与InnoDB的区别
    php引用(&)变量引用,函数引用,对象引用和参数引用用法
    从git中删除 .idea 目录
  • 原文地址:https://www.cnblogs.com/GameDeveloper/p/3409195.html
Copyright © 2020-2023  润新知