Chapter 3: Command Line Utilities Doin’ stuff
In this chapter … Special characters Redirection More utilities than you shake a stick at
Typing Commands Beware of special characters Characters that have special meaning to the shell Shell expands, modifies and interprets special characters before issuing the command
Special Characters & ; | * ? ‘ “ ` [ ] ( ) $ { } ^ # / \ % ! ~ + Plus whitespace (tabs, spaces, newlines) Do not use these in filenames unless you have to To use them, either put in single quotes, or proceed with a backslash –ls ‘filename with special chars!!’ –ls \[cat\]
Special Characters con’t All special characters have special meaning to the shell We’ll explore these in great detail in upcoming chapters
Utilities Linux & Unix come with thousands of utilities Some used explicitly, others implicitly Some text-based, some GUI, some both
Some tips before we start Tab completion –When typing a filename or command name, you can type the first few letters then hit TAB to auto- complete the command Pipe (|) symbol –Used to chain commands together –The output of one command becomes the input of another –We’ll revisit this in detail later
ls: LiSt files Used to list files contained in a directory Can narrow the search using pattern matching Examples –ls displays ‘all’ the files in the directory –ls cats displays the file cats in the directory –ls ca* displays files starting with ‘ca’
cat: catenate a file Displays the contents of one or more files Beware – don’t try with binary files Examples –cat myfile displays contents of myfile –cat file1 file2 displays contents of file1 followed by contents of file2
rm: ReMoves a file Similar to del in DOS Use the –i option to invoke interactive mode, which prompts you if you’re sure Examples: –rm myfile deletes myfile –rm –i myfile prompts you before deleting
more and less: pagers more and less are similar in that they both break up long files into page long chunks Press h to display possible commands Examples –less myfile displays myfile one page at a time
hostname: Where am I? hostname will display the name of the system you are currently logged onto Usually a fully qualified domain name (FQDN) Example: –hostname displays: ares.bcs.solano.cc.ca.us
cp: CoPies files Usage: cp sourcefile destinationfile Creates a copy, leaves sourcefile intact If destinationfile exists, it will be overwritten –Unless you use –i option Example: –cp myfile myfile.backup
mv: MoVe files / change name Usage: mv existingfile newfile Just like cp, can overwrite with –i option Renames a file, which can also move it to another directory Examples: –mv myfile foshizzle –mv /dir1/myfile /dir2/myfile
lpr: Line PRinter Places files into the print queue Usage: lpr [-Pprintername] files You can check the status of queue with lpq You can delete a job with lprm Sorry, we don’t have a printer
grep: global regular expression print Used to search for strings in files/output Usage: grep expression filename Returns lines with expression in filename Example: –grep ‘automagically’ myfile
head: display beginning Displays beginning of file head -X filename displays first X lines Check out pg 727/691 for more options
tail: duh Displays the end of a file tail -X myfile displays the last X lines Check out pg 843/783 for more options
sort: displays sorted info sort displays data in a sorted manner, without altering the original file Lots of options – sort alphabetically, numerically, with or without repeats, reverse order, etc Check out pg 817/762
uniq: removes duplicates uniq displays data, omitting successive repeat entries Have to sort file first – otherwise it might not find all duplicates Does not alter original file
file: what kind of file is this? Usage: file filename Tells you what kind of file you’re working with and what kind of data is in it Examples include program, shell builtin, ASCII text, compressed data, etc
echo: display text Displays (echoes) text back to the terminal screen Can print out contents of shell variables Useful in shell scripts In other words, seems dumb now but we’ll use it a lot down the road
date: displays time and date Command options can change formatting Privileged accounts can use date to change date and time Can be useful for scripting
script: captures session Captures all input and output on the terminal and saves to a file A good way to document your work, or capture errors for analysis Type script to start capture, exit to quit By default stores everything in the file typescript
Text Converters unix2dos and dos2unix Unix and DOS use different end of line characters Use these utilities when moving text files back and forth between Windows and Linux systems Weird script error? Try dos2unix
Compressing files bzip2 files gzip files compress files Each use their own algorithms and have their uses
Uncompressing files bunzip2 compressed-file gunzip compressed-file ucompress compressed-file
tar: Tape ARchive Packs and unpacks files from archives *Does not compress, only assembles* Tons of options, allowing you to add or remove files from archive, and also apply compression using third party support
which: locates utilties Will display the location of a utility which ls displays location of ls command you’re using In case of there being multiple locations, which only displays the first (i.e., the one you will be using)
whereis: locates utilities Similar to which, but displays the utilities in a standard set of locations The first one listed may not be the one you will issue when you enter the command All depends on your PATH (chapter 4)
Sidenote which and whereis do not list shell builtins Shell builtins are functions that are internal to the shell itself – no binary executable To see if you’re using a builtin, use type
apropos: what do I use? Not sure what utility you’re looking for? Try apropos keyword Displays utilities and libraries related to your keyword Found one, but not sure? whatis utility to show what it does, or check man page
locate: search for files System maintains a database of files Your system administrator should configure a job to regularly update this database Searches for any kind of file – not just utilities Some systems use slocate (secure) Latest distros use mlocate via locate
who: Who’s online? Displays what users are logged on Also displays when they logged on, and with what device (terminal or console, etc) Also try who am i
finger: reach out and touch … finger by itself displays users logged on like who, but also shows idle time and office location finger username shows info about that user, like home directory, last logon, their shell, if they have unread mail, and.plan and.project files
w: What’s up? w is similar to who by showing who’s logged on Also shows system uptime, and memory and CPU load averages Good overall status of the system
write: send a message write username opens up a text-based chat with the user Type message Wait for response CTRL-D to exit write
mesg: Enable/disable write Usage: mesg y|n Turns off whether users can write you or not Useful if you don’t want to be bugged
mail: system mail Our system is a closed system You can send mail to other users on the system No public mail