Introducing the Command Line CMSC 121 Introduction to UNIX Much of the material in these slides was taken from Dan Hood’s CMSC 121 Lecture Notes. Format of UNIX Commands UNIX commands can be very simple one word commands, or they can take a number of additional arguments (parameters) as part of the command. In general, a UNIX command has the following form: command options(s) filename(s) The command is the name of the utility or program that we are going to execute. The options modify the way the command works. It is typical for these options to have be a hyphen followed by a single character, such as -a. It is also a common convention under Linux to have options that are in the form of 2 hyphens followed by a word or hyphenated words, such as --color or -pretty-print. The filename is the last argument for a lot of UNIX commands. It is simply the file or files that you want the command to work on. Not all commands work on files, such as ssh, which takes the name of a host as its argument. Common UNIX Conventions In UNIX, the command is almost always entered in all lowercase characters. Typically any options come before filenames. Many times, individual options may need a word after them to designate some additional meaning to the command. Familiar Commands: scp (Secure CoPy) The scp command is a way to copy files back and forth between multiple computers. Formats for this command: scp path/local_name username@hostname:path/remote_name scp username@hostname:path/remote_name path/local_name Demo with renaming and copying files. Familiar Commands: ssh (Secure SHell) The ssh command is a way to securely connect to a remote computer. Formats for this command: If you do not specify the username, it will assume that you want to connect with the same username that you have on this local computer. ssh hostname ssh username@hostname ssh hostname -l username Since you have a single username for all computers on the OIT network, you don’t need to explicitly enter a username. But you can give a username, and will need to if your local username is different that your GL username. This might be the case if you are logging on from home and set up your username to be different from what it is on GL. Demo with connecting with different usernames. Familiar Commands: ssh (Secure SHell) You can save a couple of keystrokes if you are on one of the Linux PCs in the labs: You really only need to specify enough of a hostname as you may need. Linux will automatically attempt to fill out the hostname with “umbc.edu” for you. So if you want to log onto the lightest loaded linux server on gl, you only need to issue the following command... ssh linux.gl Or, if you don't care the flavor of UNIX, you can simply type... ssh gl Familiar Commands: passwd (change PASSWorD) The passwd command changes your UNIX password. This command is an example of a “no argument” command. Thus, the format of this command is just the command name itself. passwd passwd is an interactive command, as once we have typed it, we need to interact with it. Familiar Commands: quota (account QUOTA) The quota command shows you how much storage space you have left in your account. When we use this command, we have to specify the -v option to get the information for our account. The format of this command is: quota -v Familiar Commands: oitcleaner (account cleaning tool) The oitcleaner account cleaning tool was developed by the UMBC OIT department. This command is specific to the UMBC GL systems. This command takes no options and no filenames, so its format is: oitcleaner Man Pages The man command allows you to access the MANual pages for a UNIX command. To get additional help on any of the commands listed below, you can always type man name_of_command at the command prompt. Examples: man ssh man passwd Commands ls : lists the contents of a directory pwd : prints the current working directory cd : changes directories l : long directory listing a : lists all files, including files which are normally hidden F : distinguishes between directories and regular files h : ? Look it up using man The difference between relative and absolute paths. Special characters ., .., and ~. mkdir : creates a directory rmdir : removes a directory (assuming it is empty) If you get an error that the directory isn’t empty even though it looks empty, check for hidden files. Commands touch : creates an empty file with the specified name, or if the file already exists it modifies the timestamp. rm : removes a file. mv - moves a file, or renames a file f : force deletion r : recursive deletion f : forces overwrite, if the destination file exists cp - copies a file, leaving the original intact f : forces overwrite, if the destination file exists r : recursive copying of directories Commands cat : shows the contents of a file, all at once more : shows the contents of a file, screen by screen less : also shows the contents of a file, screen by screen head : used to show so many lines form the top of a file tail : used to show so many lines form the bottom of a file Commands lpr : prints a file alias : creates an alias for a command. Aliases can be placed in your .cshrc login script. Example: alias rm ‘rm –i’. date : shows the date and time on the current system who : used to print out a list of users on the current system hostname : prints the hostname of the current computer whoami : prints your current username The UNIX Pipe (|) The pipe (|) creates a channel from one command to another. Think of the pipe as a way of connecting the output from one command to the input of another command. The pipe can be used to link commands together to perform more complex tasks that would otherwise take multiple steps (and possibly writing information to disk). Examples: Count the number of users logged onto the current system. The who command will give us line by line output of all the current users. We could then use the wc -l to count the number of lines... who | wc –l Display long listings in a scrollable page. The lpq command will give us a list of the waiting print jobs. lpq | less Commands ps : lists the processes running on the machine. kill : terminates a process ps -u username lists only your processes. ps -a : lists all processes running on the machine. The PID column of the listing, provides the information required by the kill command. kill process_id : sends a terminate signal to the process specified by the process_id (PID). In cases where the terminate signal does not work, the command "kill -9 process_id" sends a kill signal to the process. nice : runs a process with a lower priority.