Unix Filesystem January 26 th, 2004 Class Meeting 2 * Notes adapted by Christian Allgood from previous work by other members of the CS faculty at Virginia Tech
Unix Filesystem! The filesystem is your interface to:! physical storage (disks) on your machine! storage on other machines! output devices! Everything in Unix is a file (programs, textfiles, peripheral devices, terminals)! There are no drive letters in Unix the filesystem is a logical view of the storage devices
Working Directory! Working Directory the current directory in which you are located! pwd (print working directory) command outputs the absolute path (more later) of your working directory! Unless you specify another directory, commands will assume that you want to operate on the working directory
Home Directory! Directory for users to store personal files! At login, your working directory will be set to your home directory! The path (more later) to your home directory can be referred to by the ~ (tilde) symbol! The home directory of user1 is represented by ~user1
Unix File Hierarchy! Root Directory: /! Directories may contain plain files or other directories! Result is a tree structure for the filesystem! Unix does not recognize any special filename extensions / bin home etc user1 textfile user2 cs2204 lab1txt lab2txt
Unix Paths! Separate directories by /! Absolute Path! start at root and follow the tree! Example:! /home/user1/textfile! ~users1/textfile! ~/textfile / bin home etc user1 user2 textfile lab1txt cs2204 lab2txt
Unix Paths (cont)! Relative Path! start at working directory!.. level above!. working directory / bin home etc user1 user2 textfile cs2204 lab1txt lab2txt
Some Standard Directories! / - root directory! /bin standard commands and utilities! /dev block and character device directory! /etc host-specific configuration files and directories! /home users directory! /lib library directory! /sbin system commands and utilities (needed to boot)! /tmp temporary files! /usr most user utilities and applications! /var files that vary as the system runs (logs, spools)
Changing Directories! cd changes the working directory! cd <directory_path>! can use absolute or relative path names! cd without any arguments is the same as: cd ~! Examples:! cd /home/user1! cd../../user1
Output of ls -lf lrwxrwxrwx 1 callgood Grads 20 Jan 24 20:16 home -> /home/grads/callgood/ -rw-r--r-- 1 callgood Grads 392419 Sep 22 10:07 atoll.jpg drwxr--r-- 2 callgood Grads 64 Jan 24 18:33 cs2204/ permissions user group modified date filename file type size! We ll keep coming back to this slide
Types of Files! Plain ( - )! Most files, binary or text! Directory ( d )! Directory is actually a file! Points to another set of files! Link ( l )! Pointer to another file or directory! Special! b block device (disks, CD-ROM)! c character device (keyboard, joystick)
Manipulating Files! touch <file>! create a new file or change last modified date! mv <file1> <file2>! rename file1 as file2! mv <file1> <dir>! move file1 into the dir directory! mv <file1> <dir/file2>! move file1 into dir and rename as file2! cp <file1> [<file2> <dir> <dir/file2>]! copy file with new name, into directory, or both! rm [-i] <file(s)>! remove file or list of files
Creating and Removing Directories! mkdir <directory_name>! create a subdirectory of the current directory! rmdir <directory_name>! remove directory! only works for empty directories! rm -r <directory_name>! remove directory and all of its contents, including subdirectories
Creating Links! ln -s <existing_file> <link_name>! creates a symbolic link! link_name will be a pointer to existing_file which may be in another directory or even on another physical machine
File Ownership! Each file has a single owner! chown command can be used to change the owner; usually only root user can use this command! Users can also belong to various groups! Groups may have different permissions than everyone else
File Permissions! Permissions are used to allow or disallow access to files or directories! Three types of permission:! Read ( r )! Write ( w )! Execute ( x )! Permission exists on three levels:! User ( u )! Group ( g )! World ( o )
File Permissions (cont)! chmod <mode> <file(s)>! chmod 700 textfile r w x user r w x group r w x world! chmod g+rw textfile ugo +/- rwx
File Modification Date! Last time a file was changed! Useful when...! there are many copies of a file! many users are working on a file! touch command can be used to update the modification date to the current date (or to create a file if it doesn t exist)
Looking at File Contents! cat <filename(s)>! short for concatenate! output the contents of the file all at once! more <filename(s)>! output the contents of the file one screen at a time! allows forward and backward search
Getting Help on Unix Commands! man <command_name>! shows all of the documentation for a command (more-style output)! apropos <keyword>! shows you all of the commands with the specified keyword in their description