在用户的bashrc中添加一行export来修改提示符。
echo printf
printf命令模仿C程序库(library)里的printf()库程序(library routine)。它几乎复制了
该函数的所有功能。不过在Shell层级的版本上,会有些差异。由于printf的行为是由POSIX
标准所定义,因此使用printf的脚本比使用echo移植性好。
如同echo命令,printf命令可以输出简单的字符串:
[root@master ~]#printf "Hello, Shell
"
Hello, Shell
[root@master ~]#
你应该可以马上发现,最大的不同在于:printf不像echo那样会自动提供一个换行符号。你必须显式
地将换行符号指定成
。
echo -n "Enter your name:" //参数-n的作用是不换行,echo默认是换行
要使转义符生效,需加参数-e
# echo输出颜色文本
echo命令改变样式,以输出不同颜色的文本,必须有 -e 选项(开启echo中的转义)。
在echo命令输出之后附加换行,可以使用
选项:
$ cat >echo
#!/bin/bash
echo -e "this echo's 2 new lines
"
echo "OK"
echo "The log files have all been done"
echo "$LOGNAME carried them out at `date`"
echo ""/dev/rmt0""
echo "/dev/rmt0"
/dev/rmt0
echo ""/dev/rmt0""
"/dev/rmt0"
菜单显示,不必多个echo一行行显示,可以一整个echo
echo "===========================================
| ** unix script test |
| 1 --- num 1 |
| 2 --- num 2 |
| 3 --- num 3 |
| 4 --- num 4 |
==============================================="
事实上,echo 除了 -n options 之外,常用选项还有:
-e :启用反斜线控制字符的转换(参考下表)
-E :关闭反斜线控制字符的转换(预设如此)
-n :取消行末之换行符号(与 -e 选项下的 c 字符同意)
3.1.2.4 ANSI-C Quoting
Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:
a
alert (bell)
backspace
前面讲到,包围在单引号之内的字符都不会有特殊含义,所以单引号本身并不能在一对单引号中出现。但是在前面加上$之后,就可以使用进行转义了,的转义含义与C语言中的相同。
关于 echo 命令所支持的反斜线控制字符如下表:
a:ALERT / BELL (从系统喇叭送出铃声)
:BACKSPACE ,也就是向左删除键
c:取消行末之换行符号
E:ESCAPE,跳脱键
f:FORMFEED,换页字符
:NEWLINE,换行字符
:RETURN,回车键
:TAB,表格跳位键
v:VERTICAL TAB,垂直表格跳位键
:ASCII 八进位编码(以 x 开首为十六进制) :反斜线本身
$ echo -e "a b c
d e f"
a b c
d e f
上例运用 来区隔 abc 还有 def ,及用 将 def 换至下一行。
例二:
$ echo -e "141 11142 11143 12144 11145 11146"
a b c
d e f
与例一的结果一样,只是使用 ASCII 八进位编码。
例三:
$ echo -e "x61x09x62x09x63x0ax64x09x65x09x66"
a b c
d e f
与例二差不多,只是这次换用 ASCII 十六进制编码。
测试变量是否已经设置
有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。此命令格式为:
$ { v a r i a b l e : - v a l u e }
意即如果设置了变量值,则使用它,如果未设置,则取新值。例如:
$ COLOUR=blue
$ echo "The sky is ${COLOR:-grey} today"
The sky is grey today
变量c o l o u r取值b l u e,e c h o打印变量c o l o u r时,首先查看其是否已赋值,如果查到,则使
用该值。变量$COLOR没有设置,所以会打印后面的grey
上面的例子并没有将实际值传给变量,需使用下述命令完成此功能:
$ { v a r i a b l e : = v a l u e }
下面是一个更实用的例子。查询工资清单应用的运行时间及清单类型。在运行时间及类
型输入时,敲回车键表明用户并没有设置两个变量值,将使用缺省值( 0 3 : 0 0和We e k l y),并
传入a t命令中以按时启动作业。
#!/bin/bash
# vartest
echo "what time do you wish start the payroll [03:00]:"
read TIME
echo " process to start at ${TIME:=03:00} OK"
echo "Is it a monthly or weekly run [Weekly]:"
read RUN_TYPE
echo "Run type is ${RUN_TYPE:=Weekly}'
at -f $RUN_TYPE $TIME
在输入域敲回车键,输出结果如下:
what time do you wish start the payroll [03:00]:
process to start at 03:00 OK
Is it a monthly or weekly run [Weekly]:
Run type is Weekly
在使用putty、secureCRT、XShell等终端仿真器连接linux系统时,ls、vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性。
通常我们可以使用echo命令加-e选项输出各种颜色的文本,例如:echo -e " 33[31mRed Text 33[0m",可以输出红色的字体“Red Text”。其中:" 33[31m"和" 33[0m"是ANSI转义序列(ANSI escape code/sequence),它控制文本输出的格式、颜色等,大多数的类unix终端仿真器都能够解释ANSI转义序列。
1. ANSI颜色序列格式
通用的控制文本颜色的转义序列格式如下:
CSI n1 [;n2 [;…]] m
其中CSI全称为“控制序列引导器”(Control Sequence Introducer/Initiator),也就是上述示例中的" 33["(其中 33是你键盘左上角Esc键对应的ascii码(八进制));n1、n2等表示SGR参数(下面会列出一些常用的SGR参数),用于控制颜色、粗体、斜体、闪烁等文本输出格式;m表示转义序列结束。
注: 33是键盘左上角Esc键对应的ASCII码(8进制), 33、x1b和e效果一样, 例如:echo -e "x1b[31mRed Texte[0m"也输出红色字体“Red Text”。
除了shell命令可输出颜色,其它语言中也可以使用上述ANSI转义序列输出颜色(前提是你使用的终端仿真器能够解析ANSI转义序列),以下给出几种主要语言中输出颜色文本的示例。
注:以下程序仅针对类unix终端有效,win32控制台不支持ANSI转义序列,因而无效。
http://www.cnblogs.com/crabxx/p/4046498.html
https://en.wikipedia.org/wiki/ANSI_escape_code
常用的SRG参数列表如下:
可以选择的编码如下所示(这些颜色是ANSI标准颜色):
编码 颜色/动作
0 重新设置属性到缺省设置
1 设置粗体
2 设置一半亮度(模拟彩色显示器的颜色)
4 设置下划线(模拟彩色显示器的颜色)
5 设置闪烁
7 设置反向图象
22 设置一般密度
24 关闭下划线
25 关闭闪烁
27 关闭反向图象
30 设置黑色前景
31 设置红色前景
32 设置绿色前景
33 设置黄色前景
34 设置蓝色前景
35 设置紫色前景
36 设置青色前景
37 设置白色(灰色)前景
38 在缺省的前景颜色上设置下划线
39 在缺省的前景颜色上关闭下划线
40 设置黑色背景
41 设置红色背景
42 设置绿色背景
43 设置黄色背景
44 设置蓝色背景
45 设置紫色背景
46 设置青色背景
47 设置白色(灰色)背景
49 设置缺省黑色背景
其他有趣的代码还有:
33[2J 清除屏幕
33[0q 关闭所有的键盘指示灯
33[1q 设置"滚动锁定"指示灯(Scroll Lock)
33[2q 设置"数值锁定"指示灯(Num Lock)
33[3q 设置"大写锁定"指示灯(Caps Lock)
33[15:40H 把关闭移动到第15行,40列
07 发蜂鸣生beep