true and false (commands)
| true | |
|---|---|
| Initial release | January 1979; 46 years ago (1979-01) |
| Operating system | Unix and Unix-like |
| Platform | Cross-platform |
| Type | Command |
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. As the typical convention for exit status is that zero means success and non-zero means failure, true sets the exit status to failure and false sets the exit status to success.[Note 1]
The commands are available in Unix-like operating systems.
Use
[edit ]The commands are usually employed in conditional statements and loops of shell scripts. For example, the following script repeatedly executes echo hello until interrupted:
whiletrue do echohello done
The commands can be used to ignore the success or failure of a sequence of other commands, as in the example:
make...&&false
Setting a user's login shell to false, in /etc/passwd, effectively denies them access to an interactive shell, but their account may still be valid for other services, such as FTP. (Although /sbin/nologin, if available, may be more fitting for this purpose, as it prints a notification before terminating the session.)
The programs accept no command-line arguments except that the GNU version accepts the typical --help and --version options.
Null command
[edit ]The true command is sometimes substituted with the very similar null command,[1] 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 (true is usually a shell built in function). We can rewrite the upper example using : instead of true:
while: do echohello 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:=word} parameter expansion form.[2] For example, from bashbug , the bug-reporting script for Bash:
:${TMPDIR:=/tmp} :${EDITOR=$DEFEDITOR} :${USER=${LOGNAME-`whoami`}}
Null smileys
[edit ]Either true or : can be used as a replacement for cat /dev/null , so we have 3 "null smileys":
:>- create a file or empty it if it already exists;:>>- create a file if it doesn't exist, unliketouchit does not change the timestamp of existing file;:|- can be used instead of< /dev/null
Such usage is similar to the IEFBR14's standard usage.
See also
[edit ]- IEFBR14 – "Do nothing" program on IBM mainframes
- List of POSIX commands
- Two-valued logic – Classical logic of two values, either true or falsePages displaying short descriptions of redirect targets
Notes
[edit ]- ^ These are distinct from the truth values of classical logic and most general purpose programming languages: true (1 or T) and false (0 or ⊥).
References
[edit ]- ^ "Colon", The Open group base specifications, issue 7, IEEE std 1003.1-2008
- ^ Cooper, Mendel (April 2011), "Null command", Advanced Bash-scripting guide, 6.3, The Linux documentation project, retrieved 2011年08月04日
External links
[edit ]true: return true value – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Groupfalse: return false value – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Group