csh Prompt全描述--定制自己的linux命令行提示符

cshell Prompt主要由两部分组成, 一个是颜色定义,一个是信息显示。下面我们分别讲讲述这两部分。

颜色(ASCII color)

所有颜色都以\033[xxxm的形式输写,xxx是以分号分隔的参数

C

printf("\033[31;1;4mHello\033[0m");

C++

std::cout<<"\033[31;1;4mHello\033[0m";

python3

print("\033[31;1;4mHello\033[0m")

shell

echo -e "\033[31;1;4mHello\033[0m"

字体效果

Code Effect Note
0 Reset / Normal all attributes off
1 Bold or increased intensity
2 Faint (decreased intensity) Not widely supported.
3 Italic Not widely supported. Sometimes treated as inverse.
4 Underline
5 Slow Blink less than 150 per minute
6 Rapid Blink MS-DOS ANSI.SYS; 150+ per minute; not widely supported
7 [[reverse video]] swap foreground and background colors
8 Conceal Not widely supported.
9 Crossed-out Characters legible, but marked for deletion. Not widely supported.
10 Primary(default) font
11–19 Alternate font Select alternate font n-10
20 Fraktur hardly ever supported
21 Bold off or Double Underline Bold off not widely supported; double underline hardly ever supported.
22 Normal color or intensity Neither bold nor faint
23 Not italic, not Fraktur
24 Underline off Not singly or doubly underlined
25 Blink off
27 Inverse off
28 Reveal conceal off
29 Not crossed out
30–37 Set foreground color See color table below
38 Set foreground color Next arguments are 5; or 2;;;, see below
39 Default foreground color implementation defined (according to standard)
40–47 Set background color See color table below
48 Set background color Next arguments are 5; or 2;;;, see below
49 Default background color implementation defined (according to standard)
51 Framed
52 Encircled
53 Overlined
54 Not framed or encircled
55 Not overlined
60 ideogram underline hardly ever supported
61 ideogram double underline hardly ever supported
62 ideogram overline hardly ever supported
63 ideogram double overline hardly ever supported
64 ideogram stress marking hardly ever supported
65 ideogram attributes off reset the effects of all of 60-64
90–97 Set bright foreground color aixterm (not in standard)
100–107 Set bright background color aixterm (not in standard)

4bit 颜色码

原始规定中只支持8种颜色, SGR用30-37定义前景色,用40-47定义背景色。

  • 如果要在白色背景上得到黑色定休,可以用\033[33;47m, 30是前景色, 47是背景色。
  • 要得到鲜艳红色,用\033[1;31m, 1表示鲜艳。
  • 要重置所有属性, 用\033[0m
  • 要直接使用鲜艳色,可以用90-97和100-107

csh Prompt全描述--定制自己的linux命令行提示符_第1张图片

根据上面图形, 如果要用红色前景色,绿色背景色, 可以这样写:\033[31;42m

8bit 颜色码

前景色:\033[38;5;XXXm
背景色: \033[48;5;XXXm

csh Prompt全描述--定制自己的linux命令行提示符_第2张图片

根据上面图形,

  • 如果要用粉红字体, 可以这样写: \033[38;5;206m, 206是它的前景色
  • 如果要用清晨绿背景,可以这样写:\033[48;5;57m, 57是它的背景色

可以合并起来:\033[38;5;206;48;5;57m
csh Prompt全描述--定制自己的linux命令行提示符_第3张图片

8bit 颜色码大约范围如下:

范围 描述
0x00-0x07 标准色,同4bit
0x08-0x0F 高度色
0x10-0xE7 6x6x6 空间(216色): 16 + 36 x r + 6 x g + b (0<=r, g, b <=5)
0xE8-0xFF 从黑到白的24阶灰度

24bit 全色系

如果支持true color, 那么就可以用下面的方式来描述颜色:

前景色: \033[38;2;;;m
背景色: \033[48;2;;;m

可以混合描述前景和背景色:

\033[38;2;255;82;197;48;2;155;106;0mHello

csh Prompt全描述--定制自己的linux命令行提示符_第4张图片

scripts to print

#!/usr/bin/python

print "\\033[XXm"

for i in range(30,37+1):
    print "\033[%dm%d\t\t\033[%dm%d" % (i,i,i+60,i+60);

print "\033[39m\\033[49m - Reset colour"
print "\\033[2K - Clear Line"
print "\\033[;H OR \\033[;f puts the cursor at line L and column C."
print "\\033[A Move the cursor up N lines"
print "\\033[B Move the cursor down N lines"
print "\\033[C Move the cursor forward N columns"
print "\\033[D Move the cursor backward N columns"
print "\\033[2J Clear the screen, move to (0,0)"
print "\\033[K Erase to end of line"
print "\\033[s Save cursor position"
print "\\033[u Restore cursor position"
print " "
print "\\033[4m  Underline on"
print "\\033[24m Underline off"
print "\\033[1m  Bold on"
print "\\033[21m Bold off"

终端及信息格式

cshell里, 在%`{...%}里的内容表示它不占空间(0-width).
\e[...m\033[...m表示颜色.如上面所描述。

颜色里\033[0m是用来reset颜色

prompt 格式

符号 描述
%/ Current working directory.
%~ cwd. If it starts with $HOME, that part is replaced by a ~. In addition if a directory name prefix matches a user's home directory, that part of the directory will be substituted with ~user. NOTE: The ~user substitution will only happen if the shell has performed a ~ expansion for that user name in this session.
%c or %. Trailing component of cwd, may be followed by by a digit to get more than one component, if it starts with $HOME, that part is replaced with a ~.
%C Trailing component of cwd, may be followed by a digit to get more than one component, no ~ substitution.
%h, %!, ! Current history event number.
%M The full machine hostname.
%m The hostname up to the first ".".
%S (%s) Start (stop) standout mode.
%B (%b) Start (stop) boldfacing mode. (Only if
tcsh was compiled to be eight bit clean.)
%U (%u) Start (stop) underline mode. (Only if
tcsh was compiled to be eight bit clean.)
%t or %@ Current time of day, in 12-hour, am/pm format.
%T Current time of day, in 24-hour format.
(But see the ampm shell variable below.)
%p Current time in 12-hour format, am/pm format with seconds.
%P Current time in 24-hour format, with seconds.
\c `c' is parsed the same way as in bindkey.
^c `c' is parsed the same way as in bindkey.
%% A single %.
%n The user name, contents of $user.
%d The weekday in format.
%D The day in dd format.
%w The month in format.
%W The month in mm format.
%y The year in yy format.
%Y The year in yyyy format.
%l The line (tty) the user is logged on.
%L clear from prompt to end of display or end of line.
%# A #' if tcsh is run as a root shell, a >' if not.
%{..%} Include string as a literal escape sequence. Note that the enclosed escape sequence, should only be used to change terminal attributes and should not move the cursor location. Also, this cannot be the last character in the prompt string. (Available only if tcsh was compiled to be eight bit clean.)
%? return code of the last command executed just before the prompt.
%R In prompt3 this is the corrected string; in prompt2 it is the status of the parser.

常用颜色

30 - black
31 - red
32 - green
33 - yellow
34 - blue
35 - magenta
36 - cyan
37 - white

常用效果

0 - normal
1 - bold
2 - normal again
3 - background color
4 - underline the text
5 - blinking

特殊

如果想在prompt中使用\n, 那么不能单独给它定义颜色,否则会出现光标错乱。

例子

set prompt="\n%{\033[0;32m%}%n @ %m:%{\033[0;33m%}%~%{\033[1;30m%} [%P]\n%{\033[0;35m%}#%{\033[0m%} " '

效果如下
csh Prompt全描述--定制自己的linux命令行提示符_第5张图片

引用:
ANSI-Color WIki
TCSH Manual

你可能感兴趣的:(shell)