300 likes | 426 Views
Lecture 2. The Structure of Directories Filename Metacharacters Handling Special Characters Input / Output Redirection Building Complex Commands Shell Aliases. The Structure of Directories. Tree-like Structure The top level is called root and is represented by /
E N D
Lecture 2 The Structure of Directories Filename Metacharacters Handling Special Characters Input / Output Redirection Building Complex Commands Shell Aliases
The Structure of Directories • Tree-like Structure • The top level is called root and is represented by / • The representation of directory is represented as /aa/bb/cc • A file in /aa/bb/cc can be represented as /aa/bb/cc/file
Several Important Directories • / : root file system • /bin • Contains executable files • /etc • Configuration files • Some executable shell files
Cont. • /usr • Contains many sub-directories • /usr/inlcude and /usr/lib • /usr/home- the home directories of users • /usr/bin/ - contains more executables • /usr/local- softwares from the third-party • /sbin • Contains executables which can only be executed by the super user (root)
Cont. • /home • Like /usr/home • /dev or /devices • Contains device files • /var • Contains files the content of which will be changed frequently. For example : mails , logs and so on.
Cont. • /proc • A special file system which contains runtime information of the system • /sys • A special file system which contains the information of the system and its kernel • /mnt • Can be used to mount other file sytems
The Home directory • When you log onto the system , you will be assigned a home directory; • Working directory – The directory which you are currently in; • pwd- used to list your current working directory
Two Necessary File System during Partition • / - root file system • /swap – Used to extend memory system. The size should be double the amount of memory • Other file systems could be : • /opt; /home/ ; /var
Some Commands • mkdir -- create a directory • ls ---- list the files in a directory • df ---- display the number of the blocks of a file system • mount – mount a file system to a directory
Access Rights For A File • Three groups of Access rights • Owner • The members within a group • Others • Each group of rights is represented as rwx • r mean read • W means write • E means executable • Each kind of right can be presented by 0 or 1 • The combination of 3 kinds of rights is represented by a octet number (0 - 7).
Cont. For example: [gub@mu gub]$ ls -al sommer.pdf -rw-r--r-- 1 gub cisgrad 257688 Aug 20 15:09 sommer.pdf • The access right of the file is • rw -> 110 ->6 • r->100->4 • r->100->4 • The access right is 644 • Change the access right of a file: • chmod xxx filename
Cont. The following is required access right for a file (test1.txt): • Owner: rwx • Group: r— • Others: --- How to use chmod to change the access right of test1.txt?
The File Creating Mask • Umask uu • The required access for files is: • Default access right – uu For example: • Default : 555; umask 22 • What is the required access right?
Other commands related to the access right of a file • chown: change the owner of a file • chgrp: change the group of a file • chmod p + access right • P can be u (user), g (group) ; o(other); a(all) • Access right can be r , w x.
Wildcards / Metacharacters for filename abbreviation • When you type in a command line the shell treats some characters as special. These special characters make it easy to specify filenames. • The shell processes what you give it, using the special characters to replace your command line with one that includes a bunch of filenames. • Metacharacters: * ? [ ] ~
Metacharacters • * Matches anything: ls Test*.doc • ? Matches any single character ls Test?.doc • [abc…] Matches any of the enclosed characters: ls T[eE][sS][tT].doc • [a-z] matches any character in a range ls [a-zA-Z]* {aa,de,a}: Matches for a character or set of characters
Back Quota • ``- used for command substitution • Example: • Set d = `date` • Echo $d • Tue Jan 13 00:07:50 EST 2009
Tilde Expansion • Tilde (~) by itself expands to the full pathname of the user’s home directory • Tilde followed by pathname expands to home directory + pathname • Tilde followed by username expands to that user’s home directory
Special Characters • We've already seen that some characters mean something special when typed on the command line: • * ? [] • Turn off the special meanings by quoting/escaping • “”: disable the special meaning for all chars except $ ` (back quota) and ! (bang) • ‘ ’: disable the special meaning for everything but ! and newline • \: escapes any immediately following char
Quoting – Turn Off Special Chars • What if we don't want the shell to treat these as special. Example, we really mean *, not all the files in the current directory: echo here is a star * • To turn off special meaning - surround a string with double quotes: echo here is a star "*" echo "here is a star *"
Cont.. • If the directory name is /Program files, How can we access it? • cd ?
More Examples • % echo isn\’t it interesting\? or % echo “isn’t it interesting?” • vi my_file!.txt .txt: event not found
Programs and Standard I/O Program • Standard Output • (STDOUT) • Screen • Input to another program • A file • Standard Input • (STDIN) • Keyboard • Output from another program • A file Standard Error (STDERR)
Input/Output Redirection • When a file descriptor is assigned to something other than a terminal, it is called I/O redirection • A file (the contents of the file are fed to a program as if you typed it): wc < text_file • A pipe (the output of another program is fed as input as if you typed it) • The shell can attach things other than your screen to standard output . • A file (the output of a program is stored in file): ls > lsout (>> for append) • A pipe (the output of a program is fed as input to another program)
Pipes • A pipe is a holder for a stream of data. • A pipe can be used to hold the output of one program and feed it to the input of another. • Separate 2 commands with the “|” character. prog1 prog2 STDOUT STDIN
Redirection/Pipe Examples • wc < test1 • ls > lsout • ls >> lsout • ls | wc
Building Complex Commands • You can string together a series of unix commands to do something new • Complex Command Forms: • I/O Redirection • cmd &: launch cmd in background • cmd1; cmd2: run commands in sequence • (…): grouping commands • cmd1 `cmd2`: use cmd2 output as arguments to cmd1 (backquotes) • cmd1 && cmd2: AND, execute cmd2 only if cmd1 finishes with non-zero status, i.e. if comd1 succeeds • cmd1 || cmd2: OR, execute cmd2 only cmd1 finishes with the status of zero, i.e. if cmd1 fails
Self-Test • % wc < nums > wcNums • % ls | wc > wcLs • % echo `whoami` | grep –q john && echo “I’m Alex” • % echo `whoami` | grep -q john || echo "I'm Alex" I'm Alex
Shell Aliases • alias and unalias for maintaining frequently used commands • Display all alias: % alias h history | more l ls –l d date • Set an alias: % alias l ‘ls –l’ • Release an alias: % unalias l
Recommended Reading • Chapter 1, section 1.6 (excluding section 1.6.7) • Chapter 9, sections 9.4, 9.7, 9.8, 9.11, 9.12 • Don’t worry if any examples use syntax we haven’t seen yet (like for variable arrays). Just make sure you understand the main ideas.