Manipulating files in UNIX Common operations of files • Common operations: • Create a file • Print a file • Delete a file • Rename a file • Move a file from one directory into another directory We will learn to do these operations and more.... Identifying a file • We need to identify a file before we can perform an operation (like delete) on the file. • A file can be identified using: • An absolute (file) path, or • An relative (file) path Absolute file path • Absolute file path: • An absolute file path tells the computer how to find a file starting from the root directory • An absolute file path of a particular file x consists of a list of directory names starting from the root directory "/" to the directory containing the file x and then followed by the name of the file (x) • The list of names is separated by the "/" symbol Absolute file path (cont.) The path for the indicated file (myFile2) is: • /home/cheung/cs170/myFile2 Relative file path • Relative file path: • An relative file path tells the computer how to find a file starting from the current directory • An relative file path of a particular file x consists of a list of directory names starting from the current directory to the directory containing the file x and then followed by the name of the file (x) • The list of names is separated by the "/" symbol Relative file path (cont.) • Example 1: If the current directory is /home/cheung, then the path for the indicated file (myFile2) is: • cs170/myFile2 Relative file path (cont.) If the current directory is /home/cheung/cs170, then the path for the indicated file (myFile2) is: • myFile2 Relative file path (cont.) • Advice: • When working on files, always change the working directory to the one that contains the files. • It will save you a lot of key strokes (typing) Common operations on files • Common operations on files: • Create a file • Print a file to the terminal • Print a file to the printer • Delete a file • Rename a file • Move a file from one directory (folder) to another directory (folder) Create a file • An electronic file is created using a computer application (program) called an editor (An editor in computer lingo is a program !!!) • Some commonly used editors that you have used on a PC: • Microsoft Word • Notepad • We will learn to use gedit (GNU editor) in another webnote. Print the content of a file out to the terminal • The command (= application) that is used to print the content of a file is: cat FILE-PATH (cat is an abbreviation of the word catenate) Print the content of a file out to the terminal (cont.) Example: Catenating multiple files • The cat command can catenate an arbitrary number of files to the terminal Example: catenate myFile1 and myFile2 to the terminal: Redirecting the input and output to a file • In UNIX, the output that an application prints to the terminal, can be stored to a file Also, the input that an application reads from the keyboard, can be read from a file. This feature is called: • Input/Output redirection (or IO redirection for short) Redirecting the input and output to a file (cont.) • Redirecting the output to a file: • The output of any UNIX command can be sent to a file by adding " > FileName" to the command • In other words: • any UNIX command > FileName Redirecting the input and output to a file (cont.) • Example: redirecting the output of "ls" into a file: Redirecting the input and output to a file (cont.) • Example: redirecting the output of cat myFile1 myFile2 to a file (named myFile3) Redirecting the input and output to a file (cont.) You can see that myFile3 contains the catenation of the files myFile1 and myFile2 So the cat command can be used to catenate multiple files together !!! (Hence the name cat) • We will learn about input re-direction at a later lecture Print a file to the printer • Use this command to print a file to the default printer: lpr File-Path • When you print a file from a computer in the MathCS lab, the default printer is the printer located inside the area where the Lab assistant(s) sits Print a file to the printer (cont.) • Example: lpr myFile1 will print the file named myFile1 in the current directory to the printer Delete a file • The command (application) used to delete a file is: rm FilePath The word rm is an acronym for remove All files with names matching the File-Path will be removed Delete a file (cont.) • Example rm myFile1 (will delete the file named "myFile1" in the current directory) rm /home/cheung/cs170/myFile1 (will delete the file "myFile1" in the directory/home/cheung/cs170) Delete a file (cont.) Important note: • Make sure that your current directory is the correct one when you use a relative path with all UNIX commands !!! Recovering deleted files in UNIX • Very important: • When you delete a file (with rm, the file is really deleted in UNIX What I mean is: the file is not moved into a trash directory (That's what happens in Microsoft Windows) • In other words: your file is gone forever Recovering deleted files in UNIX • Restoring a file with a backup version: • Every night, all files in a UNIX system is saved (backup) • If you deleted a file, you can recover an older version of the file as of yesterday • In other words: any work you do after the backup was made, will be lost.... • Send an email to: help@mathcs.emory.edu if you need to recover a file using a backup copy. Rename a file • The command (application) used to rename a file with name old-File-Path to the name new-File-Path is: mv old-File-Path new-File-Path Rename a file (cont.) Important: • The new-File-Path file must not exist; otherwise, 2 things can happen: 1. If the new-File-Path exists and it is the name of a file, then the mv will report an error (and will not rename the file) 2. If the new-File-Path exists and it is the name of a directory, then the mv will move the file old-FilePath into the directory new-File-Path Rename a file (cont.) • Example: mv myFile2 decl-of-indep will rename the file named myFile2 to the new name declof-indep Rename a file (cont.) • Illustrated: Notice that after the file is renamed, the content of the file remains unchanged ! Move a file from one directory (folder) to another directory (folder) • The command (application) used to mv a file with name file-Path into the directory dir-Path is: mv file-Path dirPath Move a file from one directory (folder) to another directory (folder) (cont.) • Important: • This is in fact the same command for renaming a file • The difference is: dir-Path must be the path of an existing directory. (If dir-Path, the command will perform a rename operation !!!) Move a file from one directory (folder) to another directory (folder) (cont.) • Illustrated: mv command with nonexisting directory mv command with existing directory