Linux的提示符以及控制Shell的运行方式

1.提示符
Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己 定义提示符,只需修改PS1变量的值。例如将其改为:
PS1=”Enter a command:”
第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为>。如果需要自己定义该提示符,只需改变PS2变量的 值。例如将其改为:
PS2=”More information:”
上面的两个例子都是设定提示符为静态字符串的情况。其实用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前 时间之类的信息 。表10-4列出了最常用的一些特殊字符及其含义。

表10-4 bash提示符常用特殊字符

 

特殊字符

 

说 明

 

\!

 

显示该命令的历史编号

 

\#

 

显示shell激活后,当前命令的历史编号

 

\$

 

显示一个$符号,如果当前用户是root则显示#符号

 

\\

 

显示一个反斜杠\

 

\d

 

显示当前日期

 

\h

 

显示运行该shell的计算机主机名

 

\n

 

打印一个换行符,这将导致提示符跨行

 

\s

 

显示正在运行的Shell的名称

 

\t

 

显示当前时间

 

\u

 

显示当前用户的用户名

 

\W

 

显示当前工作目录基准名

 

\w

 

显示当前工作目录

 

这些特殊字符可以组合起来,为用户提供一些提示符,提供很有用的信息。 下面来看几个实际例子:

PS1=”t”
将使提示符变成如下所示:
02:16:15
而 PS1=t
将使提示符变成如下所示:
t
若PS1=”t\”
将使提示符变成如下所示:
02:16:30
该例就是使用两个特殊字符的组合得到的。

2.控制shell的运行方式

Bash有一些特殊变量,能控制shell以不同的方式工作。例如,变量noclobber能防止在重定向输出时意外地覆盖一个文件。通 过set命令可以设置noclobber变量的有效或无效。set命令有两个参数:一个是指定变量开(on)或关(off)的选项,一个是特殊变量的变量 名 。要使某一特殊变量开(有效),用-o选项,要使其关(无效),用+o选项。例如:
$ set –o noclobber // 使noclobber变量开
$ set +o noclobber // 使noclobber变量关
三个最常用的shell特殊变量有:ignoreeof、noclobber及noglob。

ignoreeof

ignoreeof变量用来禁止使用ctrl+d来退出shell(ctrl+d不仅用来退出shell,而且可以终止用户直接输 往标准输出上的输入。 该操作经常在一些shell实用命令中使用,例如实用命令cat。在这些实用程序操作中,非常容易误操作而意外地退出shell。ignoreeof特殊 变量正是用来防止这种意外的退出。例如:
$ set –o ignoreeof
之后,用户只能用logout或exit命令退出shell。

noclobber
noclobber变量可以在重定向输出时保护已存在的文件,防止被意外地覆盖。 在下例中,用户设置noclobber为有效,在重定向时,用户试图去覆盖已经存在的文件myfile,此时系统将返回一个错误信息。
[例]
$ set –o noclobber
$ cat preface>myfile
bash: myfile: cannot overwrite existing file
$

noglob
设置noglob变量后,shell将不扩展文件名中一些特殊的字符或字符串 。如字符*、?、[ ]等将不再作为通配符。如果用户希望列出结尾为?的文件名answer?,可通过如下步骤:首先,用户使noglob变量为无效,然后再列出文件名。可以看到,目前命令行上的问 号?被认为是文件名中的一个字符,而不再被看作通配符。
$ set –o noglob
$ ls answer?
answer?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24416.html