True and false (commands)
true and false are shell commands that exit immediately with exit status 0 or 1, respectively. As a script sets its process exit status to the value of the last command it runs, these commands can be used to set the exit status of a script run. All Unix shells interpret an exit status of zero as success and non-zero as failure, so sets success and sets failure.The commands are available in Unix-like operating systems.
Use
The commands are usually employed in conditional statements and loops of shell scripts. For example, the following script repeatedly executes until interrupted:while true
do
echo hello
done
The commands can be used to ignore the success or failure of a sequence of other commands, as in the example:
Setting a user's login shell to, in [Passwd (file)|], effectively denies them access to an interactive shell, but their account may still be valid for other services, such as FTP.
The programs accept no command-line arguments except that the GNU version accepts the typical
--help and --version options.Null command
The true command is sometimes substituted with the very similar null command, written as a single colon. The null command is built into the shell, and may therefore be more efficient if true is an external program. We can rewrite the upper example using: instead of true:while :
do
echo hello
done
The null command may take parameters, which are ignored. It is also used as a no-op dummy command for side-effects such as assigning default values to shell variables through the
$ parameter expansion form. For example, from bashbug, the bug-reporting script for Bash:: $
: $
: $
Null smileys
Eithertrue or : can be used as a replacement for cat /dev/null, so we have 3 "null smileys":Such usage is similar to the IEFBR14's standard usage.
Manual pages
- : Do nothing, successfully – GNU Coreutils reference
- : Do nothing, unsuccessfully – GNU Coreutils reference
- : Return true value – FreeBSD manual page
- : Return false value – FreeBSD manual page