Differences between current version and revision by previous author of CommandLine.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 13 | Last edited on Sunday, November 21, 2004 2:57:18 pm | by AristotlePagaltzis | |
Older page: | version 10 | Last edited on Tuesday, October 21, 2003 9:21:23 am | by JohnMcPherson | Revert |
@@ -1,16 +1,20 @@
-Unix's sheer power is revealed through
the Command Line
.
+ Linux supports
the notion of a command line or a shell for the same reason that only children read books with only pictures in them
.
-!!The command line is powerful
-Most people think of the CommandLine as a pain. Certainly under MicrosoftCorporation's OperatingSystem's its very limited and not very useful. However to a seasoned Unix user
, you can very quickly do almost anything. ThinkGeek has a T-Shirt that says "Go away
or I'll replace you with a very small shell script". This
is a play on
the fact that you can do anything at the command line, including emulating irritating users. The Unix command line has hundreds of programs, and hundreds of ways of stringing them together. cat(1), grep(1), cut(1), awk(1), sed(1), find(1), wc(1), sort(1), uniq(1), test(1), ls(1), cd(1), ps(1), kill(1) are basically all the major commands that users use, and yet that is
enough to write pretty much any program. See TwoLetterCommands for
a longer list
of standard utilities
.
+ Language
, be it English
or something else,
is the only tool flexible
enough to accomplish
a sufficiently broad range
of tasks
.
+ <br> --''Bill Garrett''
-Almost every program has at least one
CommandLine counterpart (eg: mozilla has wget(1), curl(1), w3c(1)
....)
+A
CommandLine is a program interface which the user interacts with by entering commands as written text
. The program then parses these commands and acts accordingly
. Such an interface is usually highly scriptable - even if not intentionally so, but by virtue of redirection
. When it is designed with scripting in mind, it is usually particularly powerful
.
-!!The command line is arcane
-Well
, yes
, to people that aren't used to it I guess it is
. Thats what we
are trying
to help solve
in this wiki by making information that you need readily available. Most people that have learnt
the Unix
CommandLine are able
to do things on
the command line far faster than people can do it otherwise
.
+In Unix
, nearly all tasks can and should be done on the CommandLine. Most people think of this as a pain
, but there are many features
to make working on the CommandLine more convenient and therefor efficient
. Unix [Shell]s
are lightyears ahead in terms of usability compared
to the CommandLine interpreters MicrosoftCorporation has delivered with their OperatingSystem~s
in the past, although some of the more basic (and vital) conveniences such as TabCompletion have finally found their way into MicrosoftCorporation's
CommandLine interpreters. (You're 30 years late, guys, but hey, welcome
to the party anyway
.)
-apropos(1) and man(1) are your friends on the command line. Be prepared to do lots of reading (and selective ignoring) at first:
Unix commands often have dozens of options
that are seldom needed. The man(1) command itself has 24 options! You don't have to memorize it all. If you've just read though
the man pages a few times, when you get into a situation where you need a particular command you will think "Ah! That's in the man pages somewhere!" and go to look it up
.
+Do also note that a
Unix system typically exposes its entire innards via means
that are easily accessible from
the [Shell] - much unlike any flavour of MicrosoftWindows
.
-See also
[Shell] and [CLI]
.
+As well, there is a large variety of small reusable tools to take care of common tasks (see TwoLetterCommands for a non-exhaustive list); taken together, these provide the means to write ''any'' program as a shell script, should you be so inclined. Doing so may not be not advisable for non-trivial tasks - the
[Shell]'s syntax lacks sufficiently powerful constructs to express complex algorithms succintly. However, it ''is'' possible
.
-----
-One of the best examples I
can think
of is when you have a large set of files, and
you want to do something to only those files that have
some characteristic.
(Eg
rename/move/delete them). You use find(1) for this. The Windows "
Find Files"
dialog can give
you a list
of files that contain
a certain string
, and
that's all
. This also limits
you to documents containing plain text
.
+In fact, just about anything you do manually, possibly using a [GUI] application, can be done automatically with some counterpart for the CommandLine. (Web related tasks can be automated using wget(1), curl(1), w3m(1), or others, to name an example.)
+
+Of course, all this power comes at a price: to the unitiated, the CommandLine is arcane and scary.
One way to address that is providing sources
of information. This wiki is one of them; but you
can get help right on the CommandLine using apropos(1) and man(1) as well. Be prepared to do lots
of reading (and selective ignoring) at first: Unix commands often have dozens of options that are rarely used. The man(1) command itself has 24 options, yet you will almost never use any of them. Don't memorize them - just pick the parts you need and come back to the manpage again if you're missing something. This way you will acquire the common basics soon enough.
+
+An example for the CommandLine's power
is when you have a large set of files, which
you want to selectively perform
some action on
(eg
rename/move/delete some of
them). You can
use find(1) for this. (There are more ways, but find(1) is by far the most common.) This is a far cry from the ''
Find Files''
dialog in MicrosoftWindows, with which
you can only select files based on
a partial match
of their name without resorting to inspecting the
files' contents (and even then the options are limited). The resulting is just about useless for any other action than mass deletion, mass opening of files, or moving them all into a single directory. More complex actions, like directory structure preserving moves, simple rule based renaming, or anything else, is not supported by
that interface -- you have to do the work manually.
+
+This is
a perfect example
, actually: [GUI]s can only be used to communicate intentions
that their designer had already thought of. It has been said that [GUI]s are much like picture books; and there
's a reason people stop using those back in grade one
. To express non-trivial concepts or intents
you need an actual lingual interface. And that is what the CommandLine is
.