ULI101 More Linux Commands Introduction to UNIX/Linux and the Internet Seneca College of Applied Technology
File related commands grep - print lines matching a pattern head - output the first part of files tail - output the last part of files sort - sort lines of text files diff - find differences between two files file - determine file type
Utility commands who – show who is logged in date – print or set the system date and time which – show the full path of (shell) commands quota – display disk usage and limits finger – user information lookup program mail – send and receive mail
Print commands lpr – print files lpq – show print queue status lprm – cancel print jobs
Print lines matching a pattern grep Print lines matching a pattern grep takes a pattern, read standard input or a list of files, and outputs the lines containing matches for the pattern. Example: grep foo * Print lines in any of the files in the current directory that contain the pattern “foo”.
grep examples grep -r foo . grep -lr foo . Print all the lines in all the files in the current directory and all its subdirectories that contains the pattern “foo”. grep -lr foo . Similar as above but only print the names of the files that contains the pattern “foo”
Contents of the sample file [uli@seneca misc]$ cat bar The name of this file is called bar. This file has only five line. This line contains the word foo and bar. Do you like to play football or basket ball? This is the end of the file. [uli@seneca misc]$ nl bar 1 The name of this file is called bar. 2 This file has only five line. 3 This line contains the word foo and bar. 4 Do you like to play football or basket ball? 5 This is the end of the file.
More grep examples Print all the lines in the file “bar” that contains the pattern “foo” [uli@seneca misc]$ grep foo bar This line contains the word foo and bar. Do you like to play football or basket ball? Same as above but prefix each line of output with the line number within the file “bar” [uli@seneca misc]$ grep -n foo bar 3:This line contains the word foo and bar. 4:Do you like to play football or basket ball?
More grep examples Print all the lines in the file “bar” that contains the word “foo” [uli@seneca misc]$ grep -w foo bar This line contains the word foo and bar. Print all the lines in the file “bar” that does not contain the pattern “foo” [uli@seneca misc]$ grep -v foo bar The name of this file is called bar. This file has only five line. This is the end of the file.
grep options Major options for grep “-l” display name of the file that has matching line “-r” search all the files in the current directory and all its subdirectory for the given pattern “-n” prefix each output with line number “-w” search for matching word “-v” output lines that do not contain the given pattern
head & tail head bar head -5 bar tail bar tail -5 bar Display the first 10 line of the file “bar” head -5 bar Display the first 5 lines of the file “bar” tail bar Display the last 10 lines of the file “bar” tail -5 bar Display the last 5 lines of the file “bar”
sort Sort line of text file [root] sort numbers 101 984 2314 5678 101 984 2314 5678 345 2231 4842 6543 98 11001 [root] sort -n numbers Sort line of text file [root] cat numbers 2314 5678 345 2231 101 984 4842 6543 98 11001 String order Numeric order
More sort examples [root] cat numbers 2314 5678 345 2231 101 984 2314 5678 345 2231 101 984 4842 6543 98 11001 [root] sort numbers 101 984 2314 5678 345 2231 4842 6543 98 11001 [root] sort -k2 numbers Sort by the 2nd field Sort by the 1st field
More sort examples [root] cat numbers 2314 5678 345 2231 101 984 2314 5678 345 2231 101 984 4842 6543 98 11001 [root] sort numbers 101 984 2314 5678 345 2231 4842 6543 98 11001 [root] sort -r numbers Sort in reverse order
diff Display the differences between two files Syntax: diff [options] file1 file2 useful options: “-y” or “--side-by-side” use the side by side output format “-W n” or “--width=n” use an output width of columns n in side by side format
diff default output When using “diff” without any options, it produces a series of lines containing Add (a) Delete (d), and Change (c) instructions Each of these lines is followed by the lines from the file that you need to add, delete, or change to make the files the same.
diff examples $cat file1 $cat file2 blue blue red yellow white black orange $cat file2 blue yellow black red orange Steps to convert file1 to file2: $diff file1 file2 2,3d1 < red < white 4a3,4 > black > red 1. Delete line 2 through 3 from file1 2. Append lines 3 through 4 from file2 after line 4 in file1
diff examples $cat file1 $diff -y -W 30 file1 file2 blue blue blue red white yellow orange $diff -y -W 30 file1 file2 blue blue red < white < yellow yellow > black > red orange orange $cat file2 blue yellow black red orange
diff examples $cat file1 $cat file2 blue blue red yellow white black orange $cat file2 blue yellow black red orange $diff --side-by-side --width=30 file1 file2
file Display the classification of a file Syntax: file [option] file-list option: -L reports on the files that symbolic links point to option: -f file reads the names of the files to be examined from file option: -i Causes the file command to output mime type strings
file examples [uli@seneca notes]$ file * introunix.html: exported SGML document text links.sxi: Zip archive data, at least v2.0 to extract misc-commands.sxi: Zip archive data, at least v2.0 to extract template.sxi: Zip archive data, at least v2.0 to extract ULI01LabLing02.ppt: Microsoft Office Document ULI01LabLing-fast.ppt: Microsoft Office Document [ray@localhost notes]$ file -i * introunix.html: text/html; charset=iso-8859-1 links.sxi: application/x-zip misc-commands.sxi: application/x-zip template.sxi: application/x-zip ULI01LabLing02.ppt: application/msword ULI01LabLing-fast.ppt: application/msword
More file examples [ray@localhost week8]$ ls -l mydir lrwxrwxrwx 1 ray ray 7 Oct 29 15:41 mydir -> courses [ray@localhost week8]$ file mydir mydir: symbolic link to courses [ray@localhost week8]$ file -L mydir mydir: directory
Recap grep head tail sort diff file
who Show who is logged on Phobos: /home/rchan>$ who rchan pts/0 Oct 30 02:08 (toronto-hse-ppp3) sslui pts/1 Oct 30 01:11 (CPE00112f0fe590-) Phobos: /home/rchan>$ who -H Name Line Time Hostname Phobos: /home/rchan>$ who -qH Name Hostname rchan (toronto-hse-ppp3) sslui (CPE00112f0fe590-) Total users: 2
date Display the system time and date [ray@localhost week8]$ date Sun Oct 30 01:48:10 EST 2005 [ray@localhost week8]$ date +"%D" 10/30/05 [ray@localhost week8]$ date +"%T" 01:54:05 [ray@localhost week8]$ date +"%D %T" 10/30/05 01:54:13 Refer to the man page for more formatting codes
which Shows the full path of (shell) commands [ray@localhost week8]$ which mkdir /bin/mkdir [ray@localhost week8]$ which type /usr/bin/which: no type in (/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin :/home/ray/bin)
quota Display disk usage and limits Phobos: /home/rchan>$ quota Disk quotas for user rchan (uid 1628): Filesystem blocks quota limit grace files quota limit grace /home_sharedfs 8296 10000 12001 97 10000 12001 /public_sharedfs 4 5000 5001 2 5000 5001 /mail_sharedfs 4 5000 5001 1 5000 5001
finger User information lookup program Phobos: /home/rchan>$ finger rchan Login name: rchan In real life: Raymond Chan Directory: /home/rchan Shell: /usr/bin/ksh On since Oct 30 02:08:55 on pts/0 from toronto-hse-ppp3 (messages off) No Plan.
mail Send and receive mail To read your mail on phobos, type the “mail” command by itself: Phobos: /home/rchan>$ mail Mail [5.2 UCB] [AIX 4.1] Type ? for help. "/var/spool/mail/rchan": 1 message 1 new >N 1 rchan Wed Oct 26 00:24 10/340 "Mail testing"
Sending mail To send a file called “letter” through email on phobos to the user “rchan”: Phobos: /home/rchan>$ mail -s “subject” rchan < letter
Recap who date which quota finger mail
lpr, lpq, lprm lpr – submit file for printing lpr [ -P printer-name ] [ -# copies ] file-name [ -P printer-name] : send files to the named printer [ -# copies ] :sets the number of copies to print between 1 and 100 file-name : name of file to be printed
Show printer queue status lpq - show printer queue status lpq [ -P printer-name] [ -a ] [ -l] [ -P printer-name] : show status on the named printer [ -a ] : reports jobs on all printers [ -l ] : display more verbose (long) format
Cancel Print Jobs lprm – cancel print jobs lprm [ - ] [ -P printer-name] [ job ID(s)] [ - ] : all print jobs [ -P printer-name] : print jobs on the named printer [ job ID(s) ]: jobs to be cancel
Recap
Reference Man Pages A practical Guide to Linux by Mark G. Sobell
Questions and Answers How do you print all the lines in all the files in the current directory and all its subdirectories that contains the <title> tag? How do you print all the lines in the file called “index.html” that contains the word “seneca”? How do you print the last line of the file called “task.html”? How do you print the classification of each file in the currently directory?
Questions and Answers What does the command “who” do? What does the command “who -q” do? How do you find out your disk usage and limits on phobos? How do you read your mail on Phobos? How do you cancel a print job?