- I was wondering where I can find and
learn some general idea about the
command line interface used in Linux
and bash? -
As to now, I have found pieces of
such information only from
experience, such as- For cat, without any further
arguments, it accepts stdin input.
But you may explicitly specify STDIN
using the special name-
, and both
ways are equivalent.cat
can also
accept a filename ascat filename
.
So is-
meant to fill in an
argument supposed for filename? Is
this usage of-
also common for
other commands? - In
chardet <<<somestring
,<<<
means a string is used as stdin,
the same asecho somestring |
. Is this usage of
chardet<<<
also common? - In
cut -c 1-3,20,25- employees
, is
the way1-3,20,25-
to specify a
range of numbers for an argument
also common in other commands?
- For cat, without any further
- Last but not least, are these
general ideas common to just within
bash, or within Linux and Unix, or
within software using getopt as
command line parser?
Command Line Interface – General Specification
command lineshellUtilities
Best Answer
I recommend reading a book on unix or Linux shell and command line usage, in order to learn basic usage and get a feeling for some advanced features. Then you can turn to reference documentation.
The usage of specific commands is described in their manual.
man cat
will show the manual of thecat
command on your system. Manual pages are usually references, not tutorials, though they often contain examples. On Linux,cat --help
shows a terse usage message (meant for quick perusal when you already know the fundamentals and want to find an option for a specific task).The POSIX standard specifies a minimum set of commands, options and shell features that every unix system is supposed to support. Most current systems by and large support POSIX:2004 (also known as Single UNIX version 3 and the Open Group Base Specifications issue 6). GNU software (the utilities found on Linux) often have many extensions to this minimum set.
There are common conventions for command-line arguments. POSIX specifies utility conventions that most utilities follow, in particular:
-
followed by a single letter;-ab
is shorthand for-a -b
.--
signifies the end of options. For example, inrm -- -a
,-a
is not an option but an operand, i.e. a file to act upon, so this commands removes the file called-a
.-
stands for standard input, where an input file is expected. It stands for standard output where an output file is expected.GNU utilities and others also support “long options” of the form
--name
. Some utilities go against the general convention and take multi-letter options with a single leading dash:-name
.Redirection is a shell feature, so you'll find it in your shell's manual.
<<<
to use a string as standard input is a ksh extension, also supported by bash and zsh. As long as the shell supports it, it can be used on any command.