CS211 Slides

CS211 Slides

Chapter 3. The Unix Filesystem Files and Directories (1) What is a file? a container for ordered data persistent (stays around) and accessible by name Unix files regular Unix files are pretty simple essentially a sequence of bytes Unix files are identified by a name in a directory this name is actually used to resolve the hard disk name/number, the cylinder number, the track number, the sector, the block number

you see none of this it allows the file to be accessed Files and Directories (2) Unix files come in other flavors as well, such as Directories a file containing pointers to other files equivalent of a folder on a Mac or Windows Links a pointer to another file used like the file it points to similar to shortcuts in Windows, but better Devices access a device (like a soundcard, or mouse, or ...) like it is a file

Figure 3-3 A Directory Hierarchy Directories (1) Current Working Directory the directory you are looking at right now the shell remembers this for you To determine the Current Working Directory, use the command pwd (Print Working Directory) Use:

mlc104$ pwd Result: print the current working directory /home/tom Directories (2) Moving about the filesystem Use the cd (Change Directory) command to move between directories and change the current directory Use: mlc104$ cd public_html Result: Makes public_html the current working directory (must be a subdirectory of current directory) Another Use: cd .. (two periods) to move up a directory Use:

mlc104$ cd .. Result: Now you are back in the directory you started from! Directories (2) Listing the contents of a directory Use the ls (LiSt directory) command to list the contents of a directory or ls F mlc104$ ls bio gradesF04 public_html Use the ls -F command to list the contents of a directory with a / after each directory mlc104 $ ls bio gradesF04/ public_html/ Figure 3-17

The mkdir Command Simple Directory Tools Create a directory with the mkdir command mkdir newdirname newdirname can be given with pathname mlc104$ pwd /home/tom mlc104$ ls bio gradesF04 public_html mlc104$ mkdir chap3 mlc104$ ls -F

bio chap3/ gradesF04/ public_html/ Figure 3-19 The rmdir Command Simple Directory Tools (2) Remove a directory with the rmdir command rmdir dirname dirname is the directory to remove and can be specified using a pathname if the directory exists and is empty it will be removed Examples:

mlc104$ ls -F bio chap3/ gradesF04/ public_html/ mlc104$ rmdir chap3/ Assuming chap3 is still empty mlc104$ ls -F bio gradesF04/ public_html/ Figure 3-23 The cp Command Simple Directory Tools (3) Copy a file from one directory to another mlc104$ ls -F bio chap3/

mlc104$ cp bio chap3 mlc104$ ls chap3 bio Copying a directory mlc104$ cp chap3 chap3bak cp: chap3: is a directory mlc104$ cp -r chap3 chap3bak mlc104$ ls chap3bak bio Cannot use just cp to copy a directory Must do a recursive copy (cp -r) to copy a directory

Figure 3-30 The mv Command Simple Directory Tools (4) Move a file from one directory to another mlc104$ ls bio foods chap3 mlc104$ ls chap3 bio mlc104$ mv foods chap3 mlc104$ ls chap3 bio foods

mlc104$ ls bio chap3 You can also move a directory the same way - it is just a special file, after all. Figure 3-3 A Directory Hierarchy Navigation The upside-down tree the Unix filesystem is organized like an upside-down tree at the top of the filesystem is the root write this as a lone slash: / this is NOT a backslash (opposite of MS-DOS)! For example, you can change to the root directory:

mlc104[21] $ cd / mlc104[22] $ ls -F TT_DB/ dev/ bin/ devices/ cdrom/ etc/ core export/ home/ kernel/ lib local/ mnt/ sbin/ net/

tmp/ opt/ usr/ platform/ var/ xfn/ System Directories Some standard directories and files in a typical Unix system

/ the root /bin BINaries (executables) /dev DEVices (peripherals) /devices where the DEVICES really live /etc startup and control files /lib LIBraries (really in /usr)

/opt OPTional software packages /proc access to PROCesses /sbin Standalone BINaries /tmp place for TeMPorary files /home/ where home directories are mounted /home/cst334 where your home dirs are Typical System Directory Contents

/usr USeR stuff /usr/bin BINaries again /usr/include include files for compilers /usr/lib LIBraries of functions etc. /usr/local local stuff

/usr/local/bin local BINaries /usr/local/lib local LIBraries /usr/openwin X11 stuff /usr/sbin sysadmin stuff /usr/tmp place for more TeMPorary files /usr/ucb UCB binaries /var VARiable stuff /var/mail the mail spool Pathnames (1)

A typical Unix file system spans many disks As a user you dont know or need to know which physical disk things are on in fact, you dont even know which machine they are attached to: disks can be remote (eg: your home directory is stored on a disk attached to a server in the machine room) Look at the df command to see different disks and space used Inside each directory may be more directories The Absolute Path to identify where a file is, string the directories together separating names with slashes: e.g. /home/cst334/trebold this is the absolute path for trebolds home directory

lists everything from the root down to the directory you want to specify Pathnames (2) When you first log in, you are in your HOME directory To see what this is: mlc104$ pwd /home/cst334/trebold Your home directory is also stored in the environment variable HOME mlc104$ echo My home is $HOME My home is /home/cst334/trebold You can Go Home by typing mlc104$ cd $HOME Pathnames (3)

Some shorthand In some shells (including tcsh, csh, and bash), $HOME can be abbreviated as ~ (tilde) Example: mlc104$ cd ~/bin change to the bin directory under your home directory (equivalent to $HOME/bin) this is where you usually store your own commands or executables To quickly go home: mlc104$ cd with no parameters, cd changes to your home directory ~user refers to the home directory of user

For me, ~trebold is the same as ~ ~stude5555 refers to Joe Students home directory /home/stude5555) Pathnames (4) Relative pathnames You can also specify pathnames relative to the current working directory This is called a relative pathname For example mlc104[28] $ pwd /home/cst334

mlc104$ ls bio chap3 mlc104[30] $ cd chap3 mlc104[31] $ pwd /home/tom/chap3 For most commands which require a file name, you can specify a pathname (relative or absolute) Pathnames (5) Every directory contains two special directories: . and .. . : another name for the current directory e.g. cp chap3/bio . .. : another name for the immediate parent directory of the current directory use this to cd to your parent:

mlc104$ pwd /home/mpc80/mpc80a01 mlc104[33] $ cd .. mlc104[34] $ pwd /home/mpc80/ mlc104[35] $ cd ../.. mlc104[36] $ pwd / Pathnames (6) You can locate a file or directory by this way: look at the first character of the pathname / start from the root . start from the current directory

.. start from the parent directory ~ start from a home directory otherwise start from the current directory going down to the subdirectories in the pathname, until you complete the whole pathname. if you start in ~tom, the following are equivalent: /home/tom/chap3/foods ~/chap3/foods chap3/foods Searching Directories What if you need to locate a file, or set of files, in a large directory structure? Using cd and ls would be very tedious!

The command find is used to search through directories to locate files. Wildcards can be used, if the exact file name is unknown, or to find multiple files at once. Can also find files based on size, owner, creation time, type, permissions, and so on. Can also automatically execute commands on each file found. Do a man find for details and examples! Searching Files for Words and Phrases

What if you need to locate a certain word or phrase in a file, or set of files, in a large directory structure? The command grep is used to search through directories to locate files containing certain words (grep=Global Regular Exression Print). Wildcards can be used, if the exact file name is unknown, or to find multiple files at once. Do a man grep or check book for details and examples! System/Control Files

What files do I already have? Startup files for bash and tcsh (.bash_profile, .bashrc) Contain commands run after you type your password, but before you get a prompt Assume youve not used your account before mlc104$ ls mlc104$ Why cant I see any files? Files beginning with a dot are usually control files in Unix and not generally displayed Use the a option to see all files mlc104$ ls -a ./ ../ .bash_profile .bashrc Interactive Copy (-i)

OK, let us study some new commands, and variations of some familiar ones list all files including those beginning a with . mlc104$ ls -a ./ ../ .bash_profile .bashrc mlc104$ cp .bashrc my_new_file mlc104$ ls -a ./ ../ .bash_profile .bashrc my_new_file mlc104$ cp -i .bash_profile my_new_file

cp: overwrite my_new_file (yes/no)? y The i option says to ask when this overwrites existing files. Interactive Remove (-i) mlc104[57] $ rm -i my_new_file rm: remove my_new_file (yes/no)? y mlc104[58] $ ls a ./ ../ .bash_profile .bashrc -i also verifies on the rm command

Unix Filenames (1) Almost any character is valid in a file name all the punctuation and digits the one exception is the / (slash) character the following are not encouraged ? * [ ] ( ) &:;! the following are not encouraged as the first character - ~ control characters are also allowed, but are not encouraged UPPER and lower case letters are different A.txt and a.txt are different files

Unix Filenames (2) No enforced extensions The following are all legal Unix file names a a. .a a.b.c Remember files beginning with dot are hidden ls cannot see them, use ls -a

. and .. are reserved for current and parent directories Unix Filenames (3) Even though Unix doesn't enforce extensions, . and an extension are still used for clarity .jpg for JPEG images .tex for LaTeX files .sh for shell scripts .txt for text files .mp3 for MP3s some applications may enforce their own extensions Compilers look for these extensions by default

.c means a C program file .C or .cpp or .cc for C++ program files .h for C or C++ header files .o means an object file Unix Filenames (4) Executable files usually have no extensions cannot execute file a.exe by just typing a telling executable files from data files can be difficult file command Use: file filename Result: print the type of the file Example: mlc104$ file ~/.bashrc

.bashrc: executable bash script Filenames and pathnames have limits on lengths 1024 characters typically these are pretty long (much better than MS-DOS days and the 8.3 filenames) Fixing Filename Mistakes It is very easy to get the wrong stuff into filenames Say you accidentally typed mlc104$ cp myfile -i Creates a file with name -i

What if you type mlc104$ rm -i The shell thinks -i is an option, not a file Getting rid of these files can be painful There is an easy way to fix this... You simply type mlc104$ rm -- -i Many commands use -- to say there are no more options Unix Quoting (1) Double Quotes: "...." Putting text in double quotes "..." stops interpretation of some shell special characters (whitespace mostly)

Examples: mlc104[12] $ echo Here are some words Here are some words mlc104[13] $ echo "Here are some words" Here are some words mlc104[14] $ mkdir "A directory name with spaces! " mlc104[15] $ ls A* A directory name with spaces!/ Unix Quoting (2)

Single Quotes '...' Stops interpretation of even more specials Stop variable expansion ($HOME, etc.) Backquotes `...` (execute a command and return result ...well get to this later) Note difference: single quote ( ' ), backquote ( ` ) Examples: mlc104$ echo "Welcome $HOME" Welcome /gaul/s1/student/1999/csnow mlc104$ echo Welcome $HOME Welcome $HOME Unix Quoting (3) Backslash \ quotes the next character

Lets one escape all of the shell special characters mlc104$ mkdir Dir\ name\ with\ spaces\*\* mlc104$ ls Dir\ * Dir name with spaces**/ Use backslash to escape a newline character mlc104$ echo "This is a long line and\ we want to continue on the next This is a long line and we want to continue on the next Use backslash to escape other shell special chars Like quote characters mlc104$ echo \"Bartlett\'s Familiar Quotations\" "Bartlett's Familiar Quotations"

Recently Viewed Presentations

  • Living Things - Ms. D. Science C.G.P.A.

    Living Things - Ms. D. Science C.G.P.A.

    Domain Eukarya is divided into four kingdoms: protists fungi Plants animals unicellular multicellular Pg. 600 The protist kingdom is sometimes called the "odds and ends" kingdom. It includes: any eukaryote that cannot be classified as an animal, plant, or fungus.
  • The Endocrine System

    The Endocrine System

    The pituitary gland is referred to as the master gland because it produces hormones which control the production of hormones in other endocrine glands. These hormones are called tropic hormones. The pituitary gland produces a hormone called the thyroid stimulating...
  • Cataloging Unique Collections with RDA and Non-MARC Standards

    Cataloging Unique Collections with RDA and Non-MARC Standards

    Times New Roman Lucida Sans Unicode Cambria Calibri Arial Tahoma Office Theme PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation One-to-one Principle PowerPoint Presentation PowerPoint Presentation PowerPoint Presentation ...
  • 投影片 1 - Royal College of Emergency Medicine

    投影片 1 - Royal College of Emergency Medicine

    Dr CT Lui TMH A&E Aug 2012 If the investigation confirmed your ECG diagnosis, state 5 treatments. Calcium gluconate Dextrose-insulin infusion NaHCO3 Nebulised ventolin K resins Dialysis If the patient developed respiratory distress and he need to be intubated.
  • FEMALE REPRODUCTUVE SYSTEM Female reproductive organs Figure 81-1

    FEMALE REPRODUCTUVE SYSTEM Female reproductive organs Figure 81-1

    The fertilized ovum needs 3-4 days to enter the uterine cavity from fallopian tube and another 4-5 days for implantation. During this intervals uterine secretions (uterine milk) provide nutrition for the early dividingovum. Once the ovum implants, trophoblastic cells of...
  • Academic Terms - socialcircleschools.com

    Academic Terms - socialcircleschools.com

    First Person Narative. A story told from the perspective of one or several characters, each of whom typically uses the word "I." This means that readers "see" or experience events in the story through the narrator's eyes.
  • Negotiations and Distributive Negotiations

    Negotiations and Distributive Negotiations

    When we talk about value creation, we are really talking about the total value obtained by both parties, not just what one party gets. As you can see in distributive negotiations, the value has been created.
  • Florida Assessments for Instruction in Reading aligned to

    Florida Assessments for Instruction in Reading aligned to

    "The download links for the K-2 AIR may be accessed by: School Level 1, 2, and 3 Users. Reading and Resource Level Users. Assessment Team Members. To access the AIR download links, Users must: Sign In to the PMRN via...