Command Shell Options
This week I will explain how to toggle specific features to control the
way BASH executes certain commands.
The 'set' command turns features on and off. It takes two arguments: a
flag indicating whether a feature is turned on or off, and the feature
itself. The first argument has two forms: -o and +o which indicate off
and on, respectively. For example, to avoid exiting from an active shell
due to an extra CTL-D keypress, you can turn the 'ignoreeof' feature as
follows:
$ set +o ignoreeof
From now on, pressing Ctl-D doesn't log the user out of the command
shell. What is it good for? As you probably know, Ctl-D is used for
logging out of a shell but it also indicates the end of an input stream
in many utilities. For example, the 'cat' utility treats Ctl-D as an end
of a user's input. When using 'cat' or similar applications, you may
inadvertently log yourself out of the command shell by entering an extra
Ctl-D. Turning on the ignoreeof feature causes the shell to ignore
redundant Ctl-D keypresses. In this case, you should use the 'logout'
command to logout.
Noclobber
The noclobber feature protects existing files from being overwritten
accidentally by redirected output. Suppose you decide to redirect the
standard output to a file. If the output filename is identical to an
existing filename, the system will overwrite the latter. To avoid this,
activate the noclobber option before redirecting output:
$ set +o noclobber
$ cat vocabulary > mylist
mylist: file exists
$
Note that you can override the noclobber option without having to turn
it off. This is useful when you want to redirect output to an existing
file, thereby overwriting it deliberately. To do so, place an
exclamation point after the redirection sign:
$ set +o noclobber
$ cat vocabulary >! mylist
Noglob
Setting the noglob feature disables special characters in the user
input. Thus, instead of letting the shell process these special
characters, they are treated as ordinary characters. Turning on the
noglob feature is useful when you have files whose names contain special
characters such as *, ?, ~, [, ], and ?. To list a file called
inventory* with the 'ls' command, first turn on the noglob feature:
$ set +o noglob
Now list it:
$ ls inventory*
inventory*
Without noclobber turned on, the above 'ls' command would display all
the files in the current directory whose names begin with inventory.
» posted by ITworld staff
ITworld
Sign up for ITworld's Daily newsletter
Follow ITworld on Twitter @IT_world
Esther Schindler
If the comments are ugly, the code is ugly
claird
SVG a graphics format for 21st century
pasmith
Take Chrome OS for a test spin
Sandra Henry-Stocker
Solaris Tip: Have Your Files Changed Since Installation?
jfruh
Android fragments vs. the iPhone monolith
mikelgan
What Gizmodo missed about the Pro WX Wireless USB disk drive
Sidekick: The Good News & the Bad News
Either way you look at it Microsoft Data Center management did not follow standards or best practices in this failure. In which case it makes me wonder more about the outsourcing of corporate data much less personal data.
- mburton325
Join the conversation here
Quick, practical advice for IT pros. Made fresh daily.
Want to cash in on your IT savvy? Send your tip to tips@itworld.com. If we post it, we'll send you a $25 Amazon e-gift card.













