Quick UNIX Tutorial CS 4315 A Berrached CMS
Quick UNIX Tutorial CS 4315 A. Berrached: : CMS: : UHD 1
Outline • • Getting help while on the system The shell Working with files & directories Wild card characters Security I/O redirection pipes process and job control commands CS 4315 A. Berrached: : CMS: : UHD 2
Logging in the first time • Change your password passwd • To logout or exit Note: all Unix commands are case sensitive CS 4315 A. Berrached: : CMS: : UHD 4
Getting Help from the System • All Unix commands are described online in a collection of files called “man pages” man command • For help on some topic man -k keyword • For more information on using the man pages man CS 4315 A. Berrached: : CMS: : UHD 5
General command format Command -options arguments • options/flags generally identify some optional capabilities • some parts of a command are optional. These are indicated in the man pages with [ ] • case sensitive CS 4315 A. Berrached: : CMS: : UHD 8
The shell • The Unix process that interprets your commands is called the “shell” • When you login, the login process, after it verifies the user’s username and password, creates a shell process. • The shell process displays a prompt on the screen and waits. • When the user enters a command, the shell examines it, interprets it and either executes it or calls another program to do so. • After the command is executed, the shell displays the command prompt and waits again. CS 4315 A. Berrached: : CMS: : UHD 9
The shell • There are several Unix shells • The Bourne shell(sh) and the C shell(csh) are the most popular. The TC shell (tcsh) is variation of the C shell. Bourne Again Shell (bash) is the default on gator • To display the shell you’re using echo $SHELL --> /bin/tcsh • To change to another shell chsh CS 4315 A. Berrached: : CMS: : UHD 10
Files and Directories • Home directory: – The actual path of your home directory may be something like: /home/student/username – Note the forward slashes CS 4315 A. Berrached: : CMS: : UHD 11
Listing contents of a directory Ls (list files and directories) ls – The ls command lists the contents of your current working directory. • > ls Mail courses g. cc junk ddm ga exam 2. cc misc CS 4315 jets. com News cs 4315 proj 3 vhdl adsrc mail public_html bin resch A. Berrached: : CMS: : UHD 12
Listing contents of a directory · To generate a detailed listing ls -l • to display type of file ls -F • May combine flags ls -l. F · To generate listing of a specific directory ls -l. F pathname where pathname is the path of intended directory. CS 4315 A. Berrached: : CMS: : UHD 13
Aliases alias CS 4315 dir = 'ls -l. F' A. Berrached: : CMS: : UHD 14
Configuration Files • ls lists all files except those starting with a dot: ". " • Generally, files that start with a dot are supposed to be program configuration files • to list all files and directories in current directory, including hidden files ls -a CS 4315 A. Berrached: : CMS: : UHD 15
. files • In your home directory there are two hidden files “. login” and ". cshrc". . login: login configuration file. bash_profile: the bash initialization file • In every directory there are “. ” and “. . ” “. ”: points to the current working directory “. . ”: points to the parent directory of the current working directory. CS 4315 A. Berrached: : CMS: : UHD 16
Wildcards • The characters * will match against one or more characters in a file or directory name. ls proj* • The character ? Will match against any single character • [ ]: the brackets enclose a set of characters any one of which may match a single character in that position. e. g cat proj[125] cat CS 4315 proj[1 -7] A. Berrached: : CMS: : UHD 17
Wildcards • ~: a tilde at the beginning of a word expands to the name of your home directory. e. g: ls ~ cat ~/proj 1. cc • if you append ~ to a user name, it refers to that user’s home directory. e. g: ls ~smith lists all files in home directory of user smith CS 4315 A. Berrached: : CMS: : UHD 18
Making Directories mkdir (make directory) mkdir name • creates a subdirectory in current working directory mkdir somepath/name • creates a subdirectory in directory somepath CS 4315 A. Berrached: : CMS: : UHD 19
Changing to a different directory cd (change directory) cd pathname • change current working directory to pathname. • cd by itself will make your home directory the current working directory. • cd. . : cd to parent of current directory • cd ~ : cd to home directory CS 4315 A. Berrached: : CMS: : UHD 20
Pathnames • pwd (print working directory) > pwd /home/student/smith CS 4315 A. Berrached: : CMS: : UHD 21
Copying files cp (copy) cp file 1 file 2 • makes a copy of file 1 and calls it file 2. File 1 and file 2 are both in current working directory. cp pathname 1/file 1 pathname 2 • copies file 1 to pathname 2 e. g cp ~/tutorial/science. txt. CS 4315 A. Berrached: : CMS: : UHD 22
Moving files mv (move) mv file 1 file 2 • moves (or renames) file 1 to file 2 • use the -i option to prevent an existing file from being destroyed mv -i file 1 file 2 • if file 2 already exist, mv will ask if you really want to overwrite it. CS 4315 A. Berrached: : CMS: : UHD 23
Removing files and directories rm (remove) rm file 1 [file 2]… • Use the -i option for interactive remove: rm -i proj*. * CS 4315 A. Berrached: : CMS: : UHD 24
Removing files and directories rmdir (remove directory) rmdir path • will not remove your current working directory • will not remove a directory that is not empty • To remove a directory and any files and subdirectories it contains use -r (recursively) rmdir -r path rmdir -ir path CS 4315 A. Berrached: : CMS: : UHD 25
Displaying the contents of a file on the screen cat (concatenate) cat myfile displays the contents of myfile on monitor cat file 1 file 2 file 3 more displays a file on the screen one page at a time. Use space bar to display to next page. Head -- displays first 10 lines tail -- displays last 10 lines CS 4315 A. Berrached: : CMS: : UHD 26
Searching the contents of a file • Searching using more For example, to search myfile for the word science, type more myfile then type / science Type n to search for the next occurrence of the word CS 4315 A. Berrached: : CMS: : UHD 27
Searching the contents of a file • Searching using grep > grep music myfile • To ignore upper/lower case distinctions, use the -i option > grep -i music myfile • To search for a phrase or pattern, you must enclose it in single quotes. For example to search for the phrase operating systems, type > grep -i 'operating systems' myfile > grep -i 'operating systems' * CS 4315 A. Berrached: : CMS: : UHD 28
Searching the contents of a file Some of the other options of grep are: -v display those lines that do NOT match -n precede each matching line with the line number -c print only the total count of matched lines CS 4315 A. Berrached: : CMS: : UHD 29
Other Useful Commands wc (word count) • To do a word count on myfile, type wc -w myfile • To find out how many lines the file has, type wc -l myfile • To do both wc myfile CS 4315 A. Berrached: : CMS: : UHD 30
Other Useful Commands • who lists on the screen all the users currently logged to the system • finger username lists information about a user • sort takes it is input from the standard input (keyboard) and sorts the lines in alphabetical order. CS 4315 A. Berrached: : CMS: : UHD 31
Redirecting Input and Output • In general, Unix commands use the standard input (keyboard) and output (screen). • < : redirect input • > and >> : redirect output Example: who > namelist who >> namelist sort < namelist > newnamelist sort < namelist > namelist CS 4315 A. Berrached: : CMS: : UHD 32
Redirecting Input and Output • Another example: search for the word mysort in all the c source files in the current directory and write the output to file 1. • grep mysort *. c > file 1 CS 4315 A. Berrached: : CMS: : UHD 33
Using redirection to concatenate files • Examples: cat file 1 > file 2 copies file 1 into file 2 • To concatenate files: cat file 1 file 2 > file 3 • or cat file 2 >> file 1 CS 4315 A. Berrached: : CMS: : UHD 34
Pipes • A pipe is a way to use the output from one command as the input to another command without having to create intermediary files. • Example: want to see who is logged in, and you want the result displayed alphabetically: who > namelist sort namelist • Using a pipe: who | sort CS 4315 A. Berrached: : CMS: : UHD 35
Pipes • Example: want to get a count of the users logged in to the system: who | wc -l • If you want to display the output of any command one screen at a time: command | more example: ls -al. F | more CS 4315 A. Berrached: : CMS: : UHD 36
Protecting files and directories • The ls -l command display detailed listing of a file, including its protection mode: drwxrwxrwx -rwxrwxrwx owner size directoryname …. . owner size filename … • the first character (d or -) indicates whether it is a file or directory name. • The following 9 character indicate the protection mode. CS 4315 A. Berrached: : CMS: : UHD 37
Protecting files and directories rwx rwx • Each group of three characters describes the access permission: read , write and execute • the first three settings pertain to the access permission of the owner of the file or directory, the middle three pertain to the group to which the owner belongs, and the last three pertain to everyone else. CS 4315 A. Berrached: : CMS: : UHD 38
Access rights on files. • r (or -), indicates read permission, that is, the presence or absence of permission to read and copy the file · w (or -), indicates write permission; that is, the permission to change a file · x (or -), indicates execution permission; that is, the permission to execute a file, where appropriate example: CS 4315 -rwxrw-r-A. Berrached: : CMS: : UHD 39
Access rights on directories. · r: allows users to list files in the directory; · w: means that users may delete files from the directory or move files into it. · Never give write permission to others to your home directory or any of its subdirectories. · x: means the right to access files in the directory. This implies that you may read files in the directory if you have read permission on the individual files. example: CS 4315 drwxrw-r-A. Berrached: : CMS: : UHD 40
Changing file access permission chmod (changing protection mode) • Consider each group of three to be a 3 -bit number example: you want to set permission to rwx r-- --111 100 000 7 chmod CS 4315 4 0 740 filename A. Berrached: : CMS: : UHD 41
chmod codes Users Access code – – • r – read • w – write • x- execute u – owner g – group o – others a - all Examples: chmod g+w filename chmod o-r filename chmod a-x filename CS 4315 A. Berrached: : CMS: : UHD 42
Process & job control • A process is an executing program with a unique ID (PID). • To display information about your processes with their PID and status: ps • to display a list of all processes on the system with full listing ps -Af CS 4315 A. Berrached: : CMS: : UHD 43
Process & job control commands • A process may be in the foreground, in the background, or be suspended. In general the shell does not return the UNIX prompt until the current process has finished executing. • To run a program in the background, append a & at the end of the command prog 1 & [1] 6259 • system returns the job number and PID CS 4315 A. Berrached: : CMS: : UHD 44
Process & job control commands • To suspend a running process CTRL Z • example: % prog CTRL Z • To background a running process CTRL Z bg • To bring a process to forground fg %job CS 4315 A. Berrached: : CMS: : UHD 45
Process & job control commands • to kill a background process kill PID • to suspend a running background process stop PID CS 4315 A. Berrached: : CMS: : UHD 46
Process & job control commands • Background process can not use the standard I/O. ==> Need to redirect I/O e. g: grep mysort *. c & output will be lost grep mysort *. c > file 1 & CS 4315 A. Berrached: : CMS: : UHD 47
Kill Command • kill –s STOP PID • kill –s CONT PID • kill –s TERM PID CS 4315 --- suspend --- resume --- terminate A. Berrached: : CMS: : UHD 50
Compiling C programs cc [options] file … • by the default, the resulting executable is a. out cc prog. c cc -o prog. c • names the resulting executable prog instead of a. out • Compile a C++ program g++ prog. cpp CS 4315 A. Berrached: : CMS: : UHD 52
Editing files Available editors: • vi • emacs • pico Check references on web CS 4315 A. Berrached: : CMS: : UHD 53
vi commands a – append i – insert x – erase Esc – return to command mode Shift : - enter file command mode w – write q – quit w! – force write q! – force quit CS 4315 A. Berrached: : CMS: : UHD 54
File transfer • WS_FTP - a GUI ftp program • ftp on command prompt – ftp gator. uhd. edu – After login: • put – transfer a single file from the current folder on local machine to the current directory on Gator • mput – upload multiple files • get – transfer a single file from the current directory on Gator to the local machine • mget – download multiple files • cd – change the current directory on Gator • lcd – change the current folder on the local machine • bye – quit ftp CS 431 A. Berrached: : CMS: : UHD 55
Example: Writing a C program on Unix • Write a program that counts the number of non white-space characters in a text file. Program takes as command argument the name of the input file and displays the output on the standard output. CS 4315 A. Berrached: : CMS: : UHD 56
// Character Count: Basic Algorithm #include <stdio. h> #define BLANK ' ' #define NEWLINE 'n' int main(int argc, char *argv[]) { FILE *infile; char c; int char_count=0; // count the number of charecters in infile while ( (c = getc(infile)) != EOF) if ((c != BLANK) && (c != NEWLINE) ) ++char_count; printf("%d charactersn", char_count); return 0; } CS 4315 A. Berrached: : CMS: : UHD 57
Testing the # of command arguments if (argc != 2) { fprintf(stderr, " %s: expects 1 argument but was given %dn", argv[0], argc-1); fprintf(stderr, "Usage: %s inputfile n", argv[0]); exit(1); } int printf( char *format, arg 1, arg 2, …. ) int fprintf( FILE * stream, char *format, arg 1, arg 2, …. ) CS 4315 A. Berrached: : CMS: : UHD 58
Format specifiers used by printf • • %c – character %[n]s – string. n is the width of the field %[n]d – integer %[n. m] – floating point number – n – the width of the field – m – the number of digits in the fractional part CS 4315 A. Berrached: : CMS: : UHD 59
Opening input file if ( (infile = fopen(argv[1], "r")) == NULL) { fprintf(stderr, "%s: cannot open %s n", argv[0], argv[1]); exit(1); } File *fopen(char *filename, char *mode); CS 4315 A. Berrached: : CMS: : UHD 60
file modes "r" : open text file for reading " w" : for writing "a" : for appending "r+" : reading and writing "w+": for reading and writing (discard existing file) "a+": open text file for appending CS 4315 A. Berrached: : CMS: : UHD 61
Count and return # of chars // count the number of charecters in infile while ( (c = getc(infile)) != EOF) if ((c != BLANK) && (c != NEWLINE) ) ++char_count; printf(" %d charactersn ", char_count); return 0; } CS 4315 A. Berrached: : CMS: : UHD 62
The End of Quick Unix Tutorial CS 4315 A. Berrached: : CMS: : UHD 63
- Slides: 57