Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103734823
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-19 22:14:58

作者:lg   来自:

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?
阅读(243) | 评论(0) | 转发(0) |
0

上一篇:awk用法小结

下一篇:LINUX操作命令汇总

给主人留下些什么吧!~~