Interacting with a UNIX computer: Navigating through the directory tree Convenience of the current directory • We working with some file(s), it would be nice that we can access the file with the least number of key strokes possible • Fact in UNIX: • All applications in UNIX can access a file by its name when the file is in the current directory (That's because the filename itself is the relative path to the file - which will be explained later) Convenience of the current directory (cont.) • In order to take take advantage of this convenience, we must change the current directory to the directory that contains the desired file(s) We will learn how to do this right now... Task: Changing the current (working) directory / Navigate the directory tree • The command (= application) that is used to change the current directory to another directory is: cd NEW-Current-DIRECTORY-PATH cd is an abbreviation of the words change directory The New-Current-DIRECTORY-PATH can be an absolute directory path or a relative directory path Task: Changing the current (working) directory / Navigate the directory tree (cont.) • Example of the "cd" command: cd /home/cheung/cs170 (absolute path) Task: Changing the current (working) directory / Navigate the directory tree (cont.) • Example of the "cd" command: cd cs170 (relative path) Lab exercise • Perform these tasks now: • List the content of your current directory • Make sure the directory cs170 is in the listing If the directory cs170 is not in the listing, tell the Teaching Assistant !!! • Change the current working directory of the terminal window to your cs170 directory (do this only if you see cs170 in the listing) Concept: Arguments of a command • In the command below: cd /home/cheung/cs170 The first word cd is the name of the command (is also the name of the computer application that will be run) The second "word" /home/cheung/cs170 is the argument of the command Concept: Arguments of a command (cont.) • Number of arguments: • Some commands have 1 argument (E.g.: cd) • Other commands have no (0) argument (E.g.: pwd) • Yet other commands have multiple (2 or more) argument Concept: Arguments of a command (cont.) • Purpose of arguments: • Arguments provide information to the command (application) • It allows the command (application) to be more flexible (can do more) Concept: Default argument • Some commands (applications) have an assumed argument when it is not given any argument • Default arguments of the commands that you have learned so far: Command (application) Default argument ls the current directory cd the home directory Concept: Default argument (cont.) • Example: default argument for ls When ls is not given any argument, it will list the content of the current directory Concept: Default argument (cont.) • Example: default argument for cd When cd is not given any argument, it will change the working directory of the home directory Concept: Special directories • There are a number of special directories in UNIX that have special notations • Special directories: Symbol / ~ . .. Directory represented by the symbol The root directory The home directory of the user The current (working) directory The parent directory of the current directory The parent directory is the directory that is immediately above the current directory in the directory tree. The parent directory of the root directory / is itself (/) Concept: Special directories (cont.) • Examples – Suppose the home directory is /home/cheung and – current (working) directory is /home/cheung/cs170 then Command ls / ls ~ ls . ls .. ls ../.. ls ../../.. ls ../../../.. Directory represented by the symbol root directory /home/cheung (= home directory of the user) /home/cheung/cs170 (= current (working) directory) /home/cheung (= the parent directory of the /home/cheung/cs170) /home / / (because the parent directory of the root directory / is itself Exercise: Practice "ls" and "cd" • Practice with the applet on the webpage: • http://192.168.1.3/~cheung/teaching/web/170/Syllabus/02/ UNIX-dirs.html Exercise: Practice "ls" and "cd" • ls Exercise: (The current directory = /home/bob) • List the content of the current directory • List the content of bob's "photos" directory using a absolute path • List the content of bob's "photos" directory using a relative path • List the content of sally's home directory using a absolute path • List the content of sally's home directory using a relative path Exercise: Practice "ls" and "cd“ (cont.) 1. 2. 3. 4. 5. ls ls /home/bob/photos ls photos ls /home/sally ls ../sally Exercise: Practice "ls" and "cd“ (cont.) • cd Exercise: (You starts with current directory = /home/bob) • Starting in bob's home directory, use a absolute path to change the current directory to sally's home directory Now list the content of the current directory • From sally's home directory, use a relative path to change the current directory to bob's home directory Now list the content of the current directory • From bob's home directory, use a relative path to change the current directory to sally's "music" directory Now list the content of the current directory • From sally's "music" directory, use a relative path to change the current directory to bob's "photos" directory Now list the content of the current directory Exercise: Practice "ls" and "cd“ (cont.) 1. 2. 3. 4. cd /home/sally ls cd ../bob ls cd ../sally/music ls cd ../../bob/photos ls Task: Create a directory • The command (= application) that is used to create a new directory: mkdir DIRECTORY-PATH You can use an absolute or a relative directory path. Task: Create a directory (cont.) • Example: create a sub-directory named hw1 inside /home/cheung/cs170 Output of the ls command Browsing the directory with a File Explorer Task: Create a directory (cont.) Before the mkdir command, the cs170 directory contains: myFile1 and myFiles2 After the mkdir command, the cs170 directory also contains: hw1 Concept: command options • Many of the UNIX commands (applications) have options that can modify the behavior of the command (application) • Options for a UNIX command are always specified in the following manner: • Options are usually single character items • Options are specified immediately after the command name • You can specify more than one options • The arguments for the command are given after the list of options • Options are preceded by the "−" symbol Concept: command options (cont.) • Example: what a UNIX command looks like command -a -b -c arg1 arg2 arg3 arg4 The options of the command are: "-a -b -c" (3 options) The arguments of the command are: "arg1 arg2 arg3 arg4" (4 arguments) Some commonly used options of the ls command • Some useful options of the ls command: Option -t -r -l -F Effect of the option List files ordered by the time of creation (latest first) List files in the reverse order Long listing - give detailed information on files and directories Append "/" to a directory name and "*" to the name of an executable application Some commonly used options of the ls command • Example: Output of the ls command Browsing the directory with a File Explorer You can see that the output format is changed by the various options specified to the ls command The cd command has no options • The cd command does not have any options.... Finding out the options and arguments of a command • To find out how to use a command, you can access the manual page for a command by running the man application. • Example: ls man ls Finding out the options and arguments of a command (cont.) • You will see: User Commands NAME ls(1) ls - list contents of directory SYNOPSIS /usr/bin/ls [-aAbcCdeEfFghHilLmnopqrRstuvVx1@][file]... DESCRIPTION For each file that is a directory, ls lists the contents of the directory. For each file that is an ordinary file, ls repeats its name and any other information requested. The output is sorted alphabetically by default. When no argument is given, the current directory (.) is listed. When several arguments are given, the arguments are first sorted appropriately, but file arguments appear before directories and their contents. Finding out the options and arguments of a command • The synopsis shows you how to use the application (what options and arguments you can specify). You need to remember that the format of every UNIX command is: command-name -options arguments Finding out the options and arguments of a command Now let's read the synopsis: /usr/bin/ls [-aAbcCdeEfFghHilLmnopqrRstuvVx1@] [file]... meaning: 1. The absolute path of the ls application is /usr/bin/ls 2. The list -aAbcCdeEfFghHilLmnopqrRstuvVx1@ are the options 3. The word file is the argument. Finding out the options and arguments of a command The [] around [file] means that you may specify the "file" as an argument (and you may leave it out) The ... after "[file]" means that you may repeat the argument again (with another name for file) or you may stop. Some possible forms that you can run ls as: ls or: ls A or: ls -l A or: ls -l -t A or: ls A B or: ls -l A B Task: Delete a directory • The command (= application) that is used to delete a directory is: rmdir DIRECTORY-PATH You can use an absolute or a relative directory path. Task: Delete a directory (cont.) • Example: delete the sub-directory named hw1 inside /home/cheung/cs170 (I made a mistake in the first attempt, I tried to remove the directory /home/cheung/hw1 which did not exists. I forgot the cs170 part) Task: Delete a directory (cont.) • Mistakes are less likely by using a relative path: Task: Delete a directory (cont.) • Note: • The UNIX system will not allow you to delete a directory if the directory is not empty So if you have created some files inside the hw1 directory, you cannot delete it. You will need to delete all files (and sub-directories) from a directory before you can delete that directory. • Later, you will learn how to delete files from a directory. Task: Rename a directory • The command (= application) that is used to rename a directory is: mv Old-Name New-Name mv is the acronym for move Task: Rename a directory (cont.) • Extremely important note: • The directory New-Name must not exist Otherwise, you will perform a entirely different operation !!! (Explained below) It is advisable to use a relative directory path to rename a directory (you will know why very soon) Task: Rename a directory (cont.) • Example: rename the sub-directory named hw1 inside /home/cheung/cs170 to proj1 (I used the −F option to let you see which names are files and which are directories) Task: Move a directory to somewhere else • Suppose you want to create a directory handouts inside /home/cheung/cs170/proj1 But instead, you created the directory inside /home/cheung/cs170 (inside a wrong folder (directory)) • Graphically: Task: Move a directory to somewhere else (cont.) • Solution: • move the directory handouts into the folder (directory) proj1 Task: Move a directory to somewhere else (cont.) • The command (= application) that is used to move a directory X into some directory D is: mv X D (This has the same effect by using a file browser and do this: drag the item X into the folder D ) Task: Move a directory to somewhere else (cont.) • Extremely important note: • The directory D must already exist Otherwise, you will perform a rename operation !!! (You would have renamed the directory X to D) Task: Move a directory to somewhere else (cont.) • Example: move the directory named handouts inside /home/cheung/cs170/proj1 Command line vs. Drag and drop • Drag and drop is easy to learn But it takes a long time go to one place and drag the thing into another folder. • Using a command line is hyper fast, but: only after you have become familiar with the Computer System Command line vs. Drag and drop (cont.) • Bottom line • If you want to become a Computer Expert, you have to learn to do things fast (or else, your career working with a computer will be painfully slow and unproductive) • You will need to learn command line interaction with a computer if you want to be a Computer Expert