优秀的编程知识分享平台

网站首页 > 技术文章 正文

利用set进行Shell的设置(shell编程set)

nanyue 2024-07-18 03:51:56 技术文章 18 ℃

set命令可以执行很多的Shell设置工作,有许多shell参数可以通过set -o命令来设定。例子如下:使用带有set的组合命令来显示全部可以通过 set -o命令设置的参数及这些参数的默认值:

goddog@ubuntu:~$ set -o | more

allexport off

noclobber off

vi off

请注意我加粗的noclobber参数,它的默认值是off,noclobber是不损毁的意思,如果将参数noclobber的值开启(设置为on),则意味着当使用>或>&操作符时不会损毁已经存在的文件,也就是说当使用输出重定向符号>或>&时,如果>或>&右边的文件已经存在,系统将不会执行这一输出重定向命令,以保证已经存在的文件不会遭到破坏。但是由于这个参数的默认值是off,所以输出重定向操作将覆盖原有的文件(如果文件已经存在)。

我们可以使用下列set命令重新设置noclobber参数的值:

goddog@ubuntu:~$ set -o noclobber

goddog@ubuntu:~$ set -o | grep noclob

noclobber on

但是将noclobber参数设置成on,对>>重定向符号并不产生任何影响,这是因为>>将数据附加到文件的末尾并不会造成文件中原有数据的任何丢失。

在Linux操作系统中Bash Shell 命令行默认是使用 emacs (编辑器的)语法,但是有些人可能更喜欢vi的语法。此时可以使用 set -o vi 进行重新设置,为此,应该先使用下列组合命令列出emacs和vi参数的设置:

goddog@ubuntu:~$ set -o | egrep 'emacs|vi'

emacs on

privileged off

vi off

接下来,使用set命令将Bash Shell 命令行目前使用的语法改成vi的语法:

goddog@ubuntu:~$ set -o vi

goddog@ubuntu:~$ set -o | egrep 'emacs|vi'

emacs off

privileged off

vi on

如果要重新改回到原来默认的emacs语法,命令如下:

goddog@ubuntu:~$ set -o emacs


今天就分享这么多了,谢谢欣赏!^_~

Tags:

最近发表
标签列表