Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
311,5 KB
Nội dung
Chapter 5: The Shell The Man in the Middle In this chapter … • • • • • The command line Input, output, and redirection Process management Wildcards and expansion Builtins 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 Syntax • • • • 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 arguments Tokens • 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 Options • An argument that modifies the effect or execution of the command • Traditionally, options precede other arguments • 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 Contents list directories recursively human readable format for sizes display long listing Could also be written as: ls –Rlh public_html directory to perform this ls command upon Mechanics • 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 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 Pipes • 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 indefinitely Running Jobs in the Background • Thus far we’ve always run commands in the foreground • 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 enter Background, con’t • Once you hit enter, it will display the job number, and the process ID number (PID) • You may resume issuing commands • Once the job finishes, the job number and the word Done will appear on your screen • Remember, to check on things, use jobs Back and Forth • Recall that pressing CNTRL-Z suspends a process, and it gives it a job number • To start it again in the foreground, use: fg job_num • To start it again in the background, use: bg job_num kill Revisited • Recall we could do: kill %job_num • You can also: kill PID • Forgot the PID? Just use ps • Won’t die? Don’t forget kill -KILL Metacharacters • Special characters interpreted by the shell • Also called wildcards • Shell expands ambiguous file references into a list of files matching that criteria • Process is called globbing or expansion ? Character • Used to represent any single character • For example: foo? – Would match food, fool, foot – Would NOT match fooey, footsie • Can be anywhere in the filename Ex: b??kk??pper • On exception – doesn’t match leading periods (for hidden files) * Character • Similar to ?, but matches any number of characters • This includes zero characters • Ex: foo* – Would match food, foot, footsie, foo • Also does not match leading periods [ ] Characters • Used to match a list of possible characters • Also known as a character class • Ex: [aeiou].jpg – Matches a.jpg, e.jpg, i.jpg, etc • Can also ranges of letters / numbers – Ex: [0-9] [a-z] [A-Z] [ ] Characters con’t • You can negate a character set by placing a ! or ^ after the first bracket • Ex: [^0-9] – Does not match the numbers 0-9 Metacharacter Tips • You can combine multiple metacharacters of different types to get really specific • The shell does all the expanding, not the program or utility • Programs never see the metacharacters • To let the program see them, you must quote them or escape them Builtins • Commands that are built into the shell • Shell does not create a new process to run a builtin • Run very quickly • Shell will still metacharacter expansion for builtins • We’ll cover them in greater detail in Ch 10 ...In this chapter … • • • • • The command line Input, output, and redirection Process management Wildcards