30
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

Command line essentials

Embed Size (px)

DESCRIPTION

A very quick introductory course on the GNU/Linux command line. Part of our standard training courses for offshore software developers at Zeropoint.IT.

Citation preview

Page 1: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

Command line essentials

Bart Van Loon

1st February 2012

1 / 30 Bart Van Loon Command line essentials

Page 2: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

1 Introduction

2 Working on the command linebash

bash promptsome bash features

3 Manuals

4 Essential command line tools

2 / 30 Bart Van Loon Command line essentials

Page 3: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

Some ancient history

When computers were big, incomprehensible beasts, like

you could “talk” to it using punched cards, paper tape or aterminal.

3 / 30 Bart Van Loon Command line essentials

Page 4: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 5: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

Some ancient history

These terminals gave you an interface for text entry and displaythrough various standard “streams”.

5 / 30 Bart Van Loon Command line essentials

Page 6: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

A little less ancient now

Today, most UNIX-like operating systems such as Linux andFreeBSD have virtual terminals to provide several text terminals ona 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

Page 7: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

Modern times

In today’s graphical world, we have terminal emulators, like

I xterm

I gnome-terminal

I rxvt

I . . .

7 / 30 Bart Van Loon Command line essentials

Page 8: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

Modern times

These terminal emulators run text-based applications. The mostfundamental types of such applications are shells, like

I bash

I tcsh

I zsh

I . . .

A shell gives you a command line interface (CLI).

8 / 30 Bart Van Loon Command line essentials

Page 9: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

Working on the command line

Let’s assume you are running bash.

I bash is program, namely a shell meant for interactive use

I bash is also a powerful scripting language

9 / 30 Bart Van Loon Command line essentials

Page 10: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

bash in interactive mode

When it starts, it runs one or more scripts:I When started as an interactive login shell:

/etc/profile

~/.bash profile, ~/.bash login, or ~/.profile

I When exited as a login shell:

~/.bash logout

I When started as an interactive shell (but not a login shell):

~/.bashrc

10 / 30 Bart Van Loon Command line essentials

Page 11: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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

Page 12: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

Your bash prompt

You can change the look of this prompt! Why would you do so?

I it looks cool;

I it’s useful to keep track of system information;

I different machines/users can get different colours;

I have information about work environment available at all time;

I to quickly spot the prompt when you use scrollback;

I . . .

12 / 30 Bart Van Loon Command line essentials

Page 13: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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

Page 14: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

Your bash prompt

Try the following command (put it on one line with spaces inbetween):

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

Page 15: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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

Page 16: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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

Page 17: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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

Page 18: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

Piping

18 / 30 Bart Van Loon Command line essentials

Page 19: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

bashbash promptsome bash features

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 theprevious command

19 / 30 Bart Van Loon Command line essentials

Page 20: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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 inquestion:

I mysql [options] db name

mysql can take some options but has to have a name of adatabase as argument

I xpdf [options] [PDF-file [page | +dest]]

xpdf can take some options and a PDF-file as arguments. Ifyou pass a PDF-file as argument you can also give it a page ora destination, preceded by a +-symbol.

Now check the synopsis of the ssh command.

20 / 30 Bart Van Loon Command line essentials

Page 21: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 22: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 23: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 24: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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 selectnon-matching lines

-n : prefix each line of output with the 1-based linenumber within its input file

24 / 30 Bart Van Loon Command line essentials

Page 25: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 26: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 27: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 28: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 29: Command line essentials

IntroductionWorking on the command line

ManualsEssential 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

Page 30: Command line essentials

IntroductionWorking on the command line

ManualsEssential command line tools

References

I http://en.wikipedia.org/wiki/Computer_terminal

I http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29

I http://tldp.org/HOWTO/Bash-Prompt-HOWTO

I http://en.wikipedia.org/wiki/Redirection_%28computing%29

30 / 30 Bart Van Loon Command line essentials