{{short description|External instruction to a computer program}} {{redirect distinguish|System command|system call}} {{other uses|Command (disambiguation)#Computing{{!}}Command § Computing}} In computing, a '''command''' is a high-level instruction received via an external interface that directs the behavior of a computer program. Commonly, commands are sent to a program via a command-line interface, a script, a network protocol, or as an event triggered in a graphical user interface.<ref>{{cite book |author1=Kernighan, Brian W. |author2=Pike, Rob |title=The UNIX Programming Environment |year=1984 |publisher=Prentice Hall |isbn=978-0-13-937681-8}}</ref>

Many commands support arguments to specify input and to modify default behavior. Terminology and syntax varies but there are notable common approaches. Typically, an '''option''' or a '''flag''' is a name (without whitespace) with a prefix such as dash or slash that modifies default behavior. An option might have a required value that follows it. Typically, flag refers to an option that does not have a following value. A '''parameter''' is an argument that specifies input to the command and its meaning is based on its position in the command line relative to other parameters; generally ignoring options. A parameter can specify anything, but often it specifies a file by name or path.<ref>{{cite book |author=Sobell, Mark G. |title=A Practical Guide to Linux Commands, Editors, and Shell Programming |year=2014 |edition=3rd |publisher=Prentice Hall |isbn=978-0-13-308504-4}}</ref>

The term ''command'' is sometimes also used for internal program instructions, but often other terms are more appropriate such as statement, expression, function, or conditional.<ref>Maurizio Gabbrielli, Simone Martini (2010). Programming Languages - Principles and Paradigms. Springer London, ''6.3.2 Conditional Commands'', p. 140</ref><ref>{{cite book |author=Lutz, Mark |title=Learning Python |year=2013 |edition=5th |publisher=O’Reilly Media |isbn=978-1-449-35573-9}}</ref> For example, printing a message in Bash is via the ''command'' printf, while in Python it is via the ''function'' print().<ref>{{cite web | url = https://docs.python.org/3/library/functions.html#print | access-date = 23 October 2023 | title = Built-in Functions - print | publisher = python.org }}</ref> Further, some aspects of adjacent technology are conflated with commands. For example, conditional logic in Bash and Python is called an ''expression''<ref>{{cite web | url = https://docs.python.org/3/reference/expressions.html | access-date = 23 October 2023 | title = Conditional expressions | publisher = python.org }}</ref><ref>{{cite web | url = https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html | access-date = 23 October 2023 | title = Bash Conditional expressions | publisher = gnu.org }}</ref> and ''statements'' in Java.<ref>{{cite web | url = https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html | access-date = 23 October 2023 | title = The if-then and if-then-else Statements | publisher = oracle.com }}</ref><ref>{{cite book |author1=Horstmann, Cay S. |author2=Cornell, Gary |title=Core Java: Volume I – Fundamentals |year=2018 |edition=11th |publisher=Prentice Hall |isbn=978-0-13-516630-7}}</ref>

==Examples==

A notable context in which commands are prevalent is the operating system shell. Commonly, the shell dispatches a command to a program that has a file name matching the first parameter. In a Unix shell (such as bash and many related variants), the match must be exact including case.<ref>{{cite web |publisher=Free Software Foundation |title=Bash Reference Manual |url=https://www.gnu.org/software/bash/manual/bash.html |year=2023}}</ref> The following bash command changes the working directory to ''/home/pete'' by invoking the program ''cd'': <syntaxhighlight lang="bash"> cd /home/pete </syntaxhighlight>

The following bash command writes "Hello World" via program echo to standard output {{endash}} typically the terminal. Quotes around the two words indicate that the phrase is treated as a single parameter.

<syntaxhighlight lang="bash"> echo "Hello World" </syntaxhighlight>

The following demonstrates how the default behavior of a command is modified with a switch. The switch {{code|-e}} causes the command to treat characters prefixed with a backslash as the associated control character. In this case {{code|\t}} results in a tab character.

<syntaxhighlight lang="bash"> echo -e "Hello\tWorld" </syntaxhighlight>

In shells such as command prompt, DOS, and OS/2 some commands are built-in: not implemented as a separate program.<ref>{{cite web |publisher=Microsoft |title=Windows Command Line Reference |url=https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands |year=2023}}</ref> But, if a command is not built-in, then the shell dispatches to a program that has an executable extension (such as ''.exe'') and base name matching the first parameter ignoring case. The following command prompt command displays the content of file ''readme.txt'' via the built-in command ''type''.<ref>{{cite web | url = https://ss64.com/nt/type.html | access-date = 14 March 2019 | title = Type - Display a text file - Windows CMD | publisher = SS64.com }}</ref>

<syntaxhighlight lang="batch"> type readme.txt </syntaxhighlight>

The following command prompt command lists the contents of the current directory via built-in command ''dir''. The switch ''/Q'' modifies default behavior to include owner information.<ref>{{cite web | url = https://ss64.com/nt/dir.html | access-date = 14 March 2019 | title = DIR - list files and folders - Windows CMD | publisher = SS64.com }}</ref>

<syntaxhighlight lang="batch"> dir /Q </syntaxhighlight>

== See also == * Formal grammar * Gesture recognition * List of POSIX commands * List of DOS commands

== References == {{Reflist}}

== External links == {{Wikibooks|Guide to Windows commands}} *[http://foldoc.org/command command] from FOLDOC *[https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands Windows Commands | Microsoft Docs]

{{Unix commands}} {{Windows commands}}

Category:User interfaces Category:Computing terminology Category:Computing commands