A very quick introductory course on the GNU/Linux command line. Part of our standard training courses for offshore software developers at Zeropoint.IT.
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Command line essentials
1. Introduction
Working on the command line
Manuals
Essential command line tools
Command line essentials
Bart Van Loon
1st February 2012
1 / 30 Bart Van Loon Command line essentials
2. Introduction
Working on the command line
Manuals
Essential command line tools
1 Introduction
2 Working on the command line
bash
bash prompt
some bash features
3 Manuals
4 Essential command line tools
2 / 30 Bart Van Loon Command line essentials
3. Introduction
Working on the command line
Manuals
Essential command line tools
Some ancient history
When computers were big, incomprehensible beasts, like
you could “talk” to it using punched cards, paper tape or a
terminal.
3 / 30 Bart Van Loon Command line essentials
4. Introduction
Working on the command line
Manuals
Essential command line tools
Some ancient history
This is such a computer terminal:
The famous DEC VT100 (1978).
4 / 30 Bart Van Loon Command line essentials
5. Introduction
Working on the command line
Manuals
Essential command line tools
Some ancient history
These terminals gave you an interface for text entry and display
through various standard “streams”.
5 / 30 Bart Van Loon Command line essentials
6. Introduction
Working on the command line
Manuals
Essential command line tools
A little less ancient now
Today, most UNIX-like operating systems such as Linux and
FreeBSD have virtual terminals to provide several text terminals on
a single computer to let you interface with the computer itself.
If you’re in X now, try to press ctrl-alt-F1, ctrl-alt-F2, . . .
6 / 30 Bart Van Loon Command line essentials
7. Introduction
Working on the command line
Manuals
Essential command line tools
Modern times
In today’s graphical world, we have terminal emulators, like
xterm
gnome-terminal
rxvt
...
7 / 30 Bart Van Loon Command line essentials
8. Introduction
Working on the command line
Manuals
Essential command line tools
Modern times
These terminal emulators run text-based applications. The most
fundamental types of such applications are shells, like
bash
tcsh
zsh
...
A shell gives you a command line interface (CLI).
8 / 30 Bart Van Loon Command line essentials
9. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Working on the command line
Let’s assume you are running bash.
bash is program, namely a shell meant for interactive use
bash is also a powerful scripting language
9 / 30 Bart Van Loon Command line essentials
10. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
bash in interactive mode
When it starts, it runs one or more scripts:
When started as an interactive login shell:
/etc/profile
~/.bash profile, ~/.bash login, or ~/.profile
When exited as a login shell:
~/.bash logout
When started as an interactive shell (but not a login shell):
~/.bashrc
10 / 30 Bart Van Loon Command line essentials
11. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Your bash prompt
Let’s start with what you see:
bbbart@tuxitree:~$
bbbart : my username
tuxitree : computer’s hostname
˜ : present working directory (˜ is the home directory)
$ : this means I am not root
11 / 30 Bart Van Loon Command line essentials
12. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Your bash prompt
You can change the look of this prompt! Why would you do so?
it looks cool;
it’s useful to keep track of system information;
different machines/users can get different colours;
have information about work environment available at all time;
to quickly spot the prompt when you use scrollback;
...
12 / 30 Bart Van Loon Command line essentials
13. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Your bash prompt
Your prompt configuration is stored in the variable PS1.
$ echo $PS1
u@h:w$
u : user’s username
h : computer’s hostname
w : present working directory
$ : $ when user is not root, # when user is root
13 / 30 Bart Van Loon Command line essentials
14. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Your bash prompt
Try the following command (put it on one line with spaces in
between):
PS1=’[e[1;32m]u@H:[e[m]
[e[1;37m]w[e[m]n[e[1;33m]hist:!
[e[0;33m] [e[1;31m]jobs:j $[e[m] ’
Now go an find the prompt that suits you best!
14 / 30 Bart Van Loon Command line essentials
15. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Keyboard shortcuts
Some useful keyboard shortcuts:
tab : autocomplete from the cursor position
ctrl-a : move cursor to the line start
ctrl-c : send the SIGINT signal to the current task
ctrl-d : send an EOF marker (if the line is empty)
ctrl-e : move cursor to the line end
ctrl-k : clear the line after the cursor
ctrl-l : clear the screen content
ctrl-u : clear the line before the cursor
ctrl-z : send the SIGTSTP signal to the current task
15 / 30 Bart Van Loon Command line essentials
16. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Stream redirecting
Remember the streams to interact with a terminal (stdin,
stdout, stderr). You can redirect them!
> : redirect stdout
2> : redirect stderr
< : redirect stdin
Special one:
>> : redirect stdout, but append to the output
16 / 30 Bart Van Loon Command line essentials
17. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Piping
You can also “pipe” streams to link commands:
$ program1 | program2
is the same as
$ program1 > tempfile
$ program2 < tempfile
$ rm tempfile
17 / 30 Bart Van Loon Command line essentials
18. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Piping
18 / 30 Bart Van Loon Command line essentials
19. Introduction
bash
Working on the command line
bash prompt
Manuals
some bash features
Essential command line tools
Learn from history
DRY is also a principle on the shell:
↑ and ↓ : navigate through your history
ctrl-r : search the command history
history : print your recent history
!<n> : repeat command number <n>
!! : repeat the last command
!$ : special variable that contains the last word of the
previous command
19 / 30 Bart Van Loon Command line essentials
20. Introduction
Working on the command line
Manuals
Essential command line tools
Before we begin. . .
The most important command you’ll ever learn, is man:
man : format and display the manual pages
Most manual pages contain a synopsis of the command in
question:
mysql [options] db name
mysql can take some options but has to have a name of a
database as argument
xpdf [options] [PDF-file [page | +dest]]
xpdf can take some options and a PDF-file as arguments. If
you pass a PDF-file as argument you can also give it a page or
a destination, preceded by a +-symbol.
Now check the synopsis of the ssh command.
20 / 30 Bart Van Loon Command line essentials
21. Introduction
Working on the command line
Manuals
Essential command line tools
Essential command line tools
“The right tool for the right job”
cut : remove sections from each line of files
du : estimate file space usage
grep : print lines matching a pattern
head : output the first part of files
nice : run a program with modified scheduling priority
sort : sort lines of text files
tail : output the last part of files
wc : print newline, word, and byte counts
21 / 30 Bart Van Loon Command line essentials
22. Introduction
Working on the command line
Manuals
Essential command line tools
cut
Name : cut
Description : remove sections from each line of files
Synopsis : cut OPTION... [FILE]...
Useful options:
-d DELIM : use DELIM instead of TAB for field delimiter
-f LIST : select only these fields
A LIST is made up or ranges separated by commas. A range is N,
N-, N-M or -M.
22 / 30 Bart Van Loon Command line essentials
23. Introduction
Working on the command line
Manuals
Essential command line tools
du
Name : du
Description : estimate file space usage
Synopsis : du [OPTION]... [FILE]...
Useful options:
-c : produce a grand total
-s : display only a total for each argument
-h : print sizes in human readable format
23 / 30 Bart Van Loon Command line essentials
24. Introduction
Working on the command line
Manuals
Essential command line tools
grep
Name : grep
Description : print lines matching a pattern
Synopsis : grep [OPTIONS] PATTERN [FILE...]
Useful options:
-i : ignore case distinctions in the PATTERN
-v : invert the sense of matching, to select
non-matching lines
-n : prefix each line of output with the 1-based line
number within its input file
24 / 30 Bart Van Loon Command line essentials
25. Introduction
Working on the command line
Manuals
Essential command line tools
head
Name : head
Description : output the first part of files
Synopsis : head [OPTION]... [FILE]...
Useful options:
-n K : print the first K lines instead of the first 10
25 / 30 Bart Van Loon Command line essentials
26. Introduction
Working on the command line
Manuals
Essential command line tools
nice
Name : nice
Description : run a program with modified scheduling priority
Synopsis : nice [OPTION] [COMMAND [ARG]...]
Useful options:
-n N : add integer N to the niceness (default 10)
26 / 30 Bart Van Loon Command line essentials
27. Introduction
Working on the command line
Manuals
Essential command line tools
sort
Name : sort
Description : sort lines of text files
Synopsis : sort [OPTION]... [FILE]...
Useful options:
-h : compare human readable numbers
-n : compare according to string numerical value
-r : reverse the result of comparisons
-u : output only the first of an equal run
27 / 30 Bart Van Loon Command line essentials
28. Introduction
Working on the command line
Manuals
Essential command line tools
tail
Name : tail
Description : output the last part of files
Synopsis : tail [OPTION]... [FILE]...
Useful options:
-f : output appended data as the file grows
-n K : print the last K lines instead of the last 10
28 / 30 Bart Van Loon Command line essentials
29. Introduction
Working on the command line
Manuals
Essential command line tools
wc
Name : wc
Description : print newline, word, and byte counts for each file
Synopsis : wc [OPTION]... [FILE]...
Useful options:
-l : print the newline counts
29 / 30 Bart Van Loon Command line essentials
30. Introduction
Working on the command line
Manuals
Essential command line tools
References
http://en.wikipedia.org/wiki/Computer_terminal
http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29
http://tldp.org/HOWTO/Bash-Prompt-HOWTO
http://en.wikipedia.org/wiki/Redirection_%28computing%29
30 / 30 Bart Van Loon Command line essentials