I don't want to expand the special character "*" . I want to find a file exactly named "*.txt".I can do that by escaping but there is a good feature in bash that is its options to disable globbing as follows.
The following command executes a script in POSIX-compatible mode:
sriram:~$ bash --posix script.sh
For changing the current environment temporarily, or for use in a script, we would rather use set. Use - (dash) for enabling an option, + for disabling:
sriram:~$ set -o noclobber
sriram:~$ touch test
sriram:~$ date > test
bash: test: cannot overwrite existing file
sriram:~$ set +o noclobber
sriram:~$ date > test
The above example demonstrates the noclobber option, which prevents existing files from being overwritten by redirection operations. The same goes for one-character options, for instance -u, which will treat unset variables as an error when set, and exits a non-interactive shell upon encountering such errors:
sriram:~$ echo $VAR
sriram:~$ set -u
sriram:~$ echo $VAR
bash: VAR: unbound variable
This option is also useful for detecting incorrect content assignment to variables: the same error will also occur, for instance, when assigning a character string to a variable that was declared explicitly as one holding only integer values.
One last example follows, demonstrating the noglob option, which prevents special characters from being expanded:
sriram:~$ set -o noglob
sriram:~$ touch *
sriram:~$ ls -l *
-rw-rw-r-- 1 sriram sriram 0 Feb 27 13:37 *
No comments:
Post a Comment