Tải bản đầy đủ

linux crash course chapter 05 3

Chapter 5:
The Shell
The Man in the Middle

In this chapter …

The command line
Input, output, and redirection
Process management
Wildcards and expansion

Let us recall …
• Shell is an interpreter

• Sits between the user and the kernel
• We’ll be using bash as our point of reference

The Command Line
• It is what allows us to talk to the shell
• A command line is a string of commands and
arguments ending with Enter
• Shell takes the command line, interprets it,
then instructs the kernel


command [arg1] [arg2] … [argn]
Spaces separate command and arguments
Arguments can be optional
Some arguments are called Options, and are
proceeded by one or more hyphens (aka
switches or flags)

Do I Need Arguments?
• Some commands work without any
arguments specified (ex., ps)
• Others need one or more
• If a command expects at least one argument,
often it will display a usage message if you
execute the command without any

• Each space-delimited word in a command
line is called a token and are numbered from
left to right starting at zero

• That means the command is token 0, first arg
is token 1, etc.
• Token can be a filename, a string, a number

• An argument that modifies the effect or
execution of the command
• Traditionally, options precede other
• Most utilities use a single hyphen; some
(such as several GNU utilities) also use
double hyphens
• Sometimes you can combine options
together with a a single preceding hyphen

Command Line Example
ls -R -l -h public_html
list directories

human readable
format for sizes
display long

Could also be written as:
ls –Rlh public_html

directory to
perform this
ls command

• Once enter is pressed, command line is
parsed by the shell
• Reads the first token and tries to find the
executable or builtin associated with it
• Passes remaining tokens to the called
program, doing expansion and manipulation
as necessary

Where’s the program?
• If not given absolute pathname, shell
searches PATH variable for location of first
• Can’t assume PATH includes your current
working directory
• If it can’t locate it, shell returns command not
• If no execute permissions, returns access

• Shell begins a new process and hands
control over to called program
• Shell then goes to sleep, and waits for called
program to finish running and return control
• Program also passes its exit status to shell

• Streams contain data (usually text)
• Three standard streams
– Input
– Output
– Error

• Each stream can be associated with any
number of things (remember, everything is a

Standard Input
• Contains information to be passed to a
program (a utility, a shell, etc)
• Most commonly is the keyboard
• Also commonly a file
• Because everything is treated as a file,
programs never know exactly where input
truly comes from

Standard Output
• Contains output from a program
• Again, program never sure where it’s
sending output to
• Most commonly the screen
• Could also go to a printer, a file, or directly
into standard input (to another program)

Standard Error

Another output stream
Contains error messages
Usually also goes to screen
You can redirect both standard out and
standard error to different places

Fun with cat
• cat displays the contents of files
• Try calling cat with no argument
• It takes input from standard input (instead of
a file)
• Will echo back every line you type
• Hit CTRL-D (EOF) to quit

• Temporarily changes where standard
streams point to
• After doing a redirection, streams return to
• There are ways to permanently change
streams – beyond our scope

Redirecting Output
• Syntax: command [arguments] > output
• Output is usually a file, but can be anything
(for example, a printer)
• The greater-than sign instructs the shell to
redirect standard out to whatever is to the
• If output exists, it will be overwritten – be

Redirecting Output con’t
• To prevent overwriting, we can set the
noclobber variable
• You can override noclobber using >|
• To append to the end of a file, use >>
• You can’t redirect output to a file you’re using
as input – the shell allocates the file for the
output stream before calling the program

Redirecting Errors
• Syntax: command [args] 2> errors
• You’re redirecting the second output stream
(standard error)
• Standard output can also be written 1>
• You can redirect both streams:
– find whizzbang > results 2> /dev/null

Redirecting Input
• Syntax: command [arguments] < input
• Input usually is a file
• Not all that useful if the command supports a
filename for one of the arguments
• Can be handy if the command prompts for
input … you can automate the process with a
file filled with the answers

• Redirects the output of one program to be
the input of another
• Reduces the need for intermediary steps
• Handy for when you have several quick
steps to perform upon some data
• Great for getting output and quickly filtering it
(ie. command | grep search_string)

Getting Crazy
• tee allows you to send output to two
different locations at once
• It sends output to a file, while still passing the
output onto standard output
• Cascading tee commands can go on

Running Jobs in the Background
• Thus far we’ve always run commands in the
• Have to wait until it finishes before you can
access the command line again
• To run in the background, place a & at the
end of your command line before hitting

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay