Useful Linux Commands and Utilities, by Function Type
These commands are grouped by function. For alphabetical listing, see here.
- Create, View, Compare, Control the Output
- Copy, Move and Delete Files, Directories
- Change Attributes: Permissions, Ownership, Links
- Iso Copying, Mounting, and Filesystems
- Disk and Resource Usage
- The RPM command
- Tarballs or tgz
- Sundry, path and environment
- Distro-dependent utilities
- Wild Cards and Symbols
- Terminal/Console Keyboard Shortcuts
- Word processing shortcuts
Many functions such as installing software, editing files and running certain commands require you to be root, or superuser. The error "Command not found" means that either you must change to root or it is a utility that is not installed.
su: log as root while user. Will be prompted for password.
su <username>: change to that user. eg. back from root to yourself.
su - : sets the environment as if you'd actually logged in as root. Will put you in /home/root
sux : logs you in as root, so that root can connect to the X server. This will enable you to launch gui programs as root. SuSE only
sudo: changes you to root temporarily, for that command only.
Terminal Usage Tips
Tab key: autocompletes filenames in command line. If two similar filenames exist, filename will not complete. Hit tab twice to show all options, then type enough to autocomplete the rest. Handy for long filenames.
Up arrow: Scrolls back through history of previous commands. Handy if you are using one or two repetitively.
mc: launch midnight commander, a handy console file manager. (Utility - check if installed) See here for tutorial
history : prints out about the last 1000 commands
clear : clears text out of the top of a terminal. Can still be scrolled back through. A shortcut is Ctl - l
Directory Operations - Creating, Changing, Listing
mkdir : create directory
mkdir -p temp/grandparent/parent/child : create a hierarchy of directories - use the -p (parent) option
cd: change directory
cd ~ : takes you to home directory
cd - : last directory you were in.
cd .. : parent directory of the one you are in at present
cd ../../.. will take you up three parent directories
cd / : takes you to root directory
cd ../sisterdir : when you want to change to a directory at the same level, the .. takes you back to the parent, followed immediately by the sister directory.
When using cd, if you put / in front of the directory name, you have to give the full path from root. Don't put the / to change to a subdirectory from where you are at present (relative path) unless doing a sidestep and it is preceded by ..
ls : short listing of directory contents
ls -l : long listing, permissions, buildtimes, owner, points to links, etc
ls -a or ls -al shows hidden .files
ls -ltr : long listing of files, in order of time created, and reversed. This will give the most recent files at the bottom of the list
ls -lSr : sorts by size. Largest files at the bottom
ls -R : lists recursively contents of subdirectories
Create, View, Compare, Control the Output
cat filename : views contents of file. Use -n option to number lines.
cat filename > anotherfilename.txt sends output to a file that is created or overwritten
cat filename >> anotherfilename.txt appends output to selected file
cat file1.txt file2.txt > file3.txt : contents of two files can be combined
The cat command can be used as a quick text editor:
cat > friends.txt
touch : creates files or updates the modification times
wc: counts lines, words and characters in a file. -c, -w or -l options to only display one. Spaces are considered as words, though
diff oldfile.txt newfile.txt: displays line-by-line differences between two text files.
diff --brief : shows only the difference. Much easier to understand the output!
diff -r /etc /home/jane/etc |less : shows difference between two directories, useful when restoring a backup in an upgrade. Pipe to less to scroll through output at your pace.
cmp -l file1 file2: displays all differences between binary files
file <filename> : takes a guess at the type of data contained in a file
grep <text string> <filename> : find text strings in files and returns the whole line.
less : allows you to go back and forth in a file. Pipe large files to less when the output is too big to be seen on one screen. Can read contents of gzipped files, eg. less filename.gz.
To search for a particular term in less (and man pages) type /searchterm <enter> and it highlights where it appears in the file.
Press n to find the next occurence, and shift - n to find the previous.
spacebar : skips whole screen.
Type q to exit less.
more : shows the percentage that you are through the file. Move down with enter key. No backwards movement permitted.
head <filename> Gives first 10 lines of file. head -1 would give the first line only. Also see tail
tail <filename> : gives the last 10 lines of a file. Useful if there's going to be lots of scrolling as screen may not be able to keep up, as in compiling kernel. eg.tail -f /var/log/messages follows last 10 lines.
Copy, Move and Delete
cp <filename> <newfilename> : straight copy of file
cp -p : preserves attributes and permissions of the file
cp <filename> /dir/ect/ory : copy to file to another directory
Use wildcards to copy multiple files to a new location:# cp file* /tmp
command line option -i will prompt you if you are about to overwrite an existing file
cp -bi <file> <file.1> creates a backup of any file that may be overwritten. A backup has a ~ attached to its name.
cp -a : archive option. Copies directories recursively and preserves attributes and permissions
cp -Pr dir1 dir2 :-P (parent) along with the -r (recursive) command-line option, copies files within one directory to another directory, and also any directories inside.
mv file1 file2 : rename or move files and directories
mv mydir newdir: To rename a directory, specify the old directory name and new directory name
mv dir1 dir3 : If the destination directory does not exist, mv renames the directory. If the destination directory exists, then dir1 is moved inside the destination directory, dir3.
mv -i file1 file2 asks for permission to overwrite an existing file.
mv -b : creates a backup
mv -bi file1 file2
mv: replace ´file2'? y
mv file1 /tmp : moves file to another directory
mv file1 /tmp/file2 : renames file during move
rm <filename> : deletes file. You can use wildcards with the rm command rm *.txt or rm file*
rm -i <filename> : removing file interactively, asks for confirmation
rm -rf : recursive, force options to delete a directory. Dangerous as root. -f does not ask for confirmation.
rmdir temp/grandparent/parent/child : removes empty directories. If any files or directories exist below the specified directory, you must move or delete those first. Easier to use Midnight Commander!
Change Attributes: Permissions, Ownership, Links
chgrp Jane <filename> : changed ownership of file to group Jane
chown -R Jane. updates : recursively changed /home/Jane/updates subdirectory to ownership by Jane
chmod (a=all u=user g=group o=other) +/-/= (r=read w=write x=execute) simplest way of changing permissions. eg
chmod a-w <filename> : removes write permissions w for all a
chmod u+x <filename> : adds execute permissions x for user u(the user is generally the person who created the file, and therefore the owner)
- removes ,+ adds, = makes permissions exactly as specified
In the long listing, permissions are specified user/group/other as in rwxr-xr-x
421= rwx, as in chmod 755 <filename> means rwx for user, r and x for group and others
chmod 4777 : (4 = u+s) : Adding the set user id or suid bit. When you run the file, you become the user/owner : rwsrwxrwx
In front of the whole lot there are sometimes other characters:
b = block device, c = character device, - =an ordinary file, d = directory.
Directory permissions: t at the end denotes a sticky bit. Everyone has permissions but only user can alter files. 1777 1 = +t
ln -s file file2 : symbolic link. Source file first, then target. Can be used for any type of file, including executables. A symlink will reflect all changes to the source file
ln file file3 : ln on its own makes a hard link - a copy of the original file that will not reflect any change or deletion of the original file.
ln -s sourcedirectory targetdirectory : Linking directories: User can only make symbolic links, root can hard-link as well.
Help and Information
apropos <anything> : searches man pages for the specified word and prints out info
<cmdname> --help : briefer than man page, gives a summary of arguments for command. Can be scrolled with scrollbar. Returns you to command prompt.
info <cmdname> similar to man page, but has nodes and menus.
whatis : searches the whatis database for complete words, gives a one-line synopsis
makewhatis : creates the whatis directory
man <cmd> : man page. Type q to exit. Move with up/down arrows. Find particular words by typing /searchterm <enter> to highlight where it appears. Press n to find the next occurence, and shift - n to find the previous.
man -k <word> : searches headings of man pages for word
/usr/doc directory: documentation pertaining to everything is in there
Finding Files and Locating Executables
find <filename> : Searches your complete hard drive for file. Takes a while. Quicker if you know which directory to search:
find . <filename> : find files in current directory, find /etc <filename> : find files in /etc dir
Locate is much faster - searches quickly through a system database.
locate : finds files by searching a database, created with updatedb. Much quicker than find. Wildcards can be used to either expand or narrow a search. For example, to look for opera browser icons: locate *opera*png* (Check if installed: package is called findutils-locate)
updatedb : update the locate database. Must be root.
type <executablename> : shows you where the executable is run from.
[Jane@mylinuxbox log]$ type gpm
gpm is /usr/sbin/gpm
whereis <cmdname>: locates the binary, source, and manual page files for an executable.
which <executablename> : shows full path to executable. Similar to using type
Multimedia and Sound: Conversion and Console Music Players
cdda2wav -D /dev/cdrom -x -t 1+10 -B : for ripping audio to wav. Most of the following arguments will be required:
-D /dev/cdrom : device used must be specified
-x : for cdaudio quality
-t 1+10 : to specify either a single track or start and end tracks
-B : copies each track to a separate file
ffmpeg -i moviefile.flv -f mp3 musicfile.mp3: converts video files, eg. youtube flv to mp3
ffmpeg -i musicfile.ogg musicfile.mp3: converts ogg to mp3 for those annoying media players that don't play ogg files
oggenc *.wav : converts wav to similarly named ogg file (must be installed)
mpg123 <file.mp3> : console mp3 player. Needs backslashes in file names instead of spaces. Can play two songs at once! (Utility, must be installed)
mpg123 -w <filename.wav> <filename.mp3> : Outputs your mp3 into a wav file.
play <filename.wav> : wav file player
Iso Copying, Mounting, and Filesystems
md5 <filename.iso> : shows md5sum, to compare before writing a disc. Takes a while to calculate.
mkisofs /dev/cdrom/* filename.iso : copies an iso image of the cd ready to write.
mount -t iso9660 -o loop filename /media/cdrom : Mounting an iso to access the contents. -t=type iso9660=cd file type -o option loop=expecting you to mount a file /media/cdrom= mount it on a mount point not currently in use. (Iso contents can be viewed without mounting in Midnight Commander.)
mount /mnt/cdrom : to mount the device you want on the command line.
umount /mnt/dcrom: unmount (note spelling of command). Command line and gui mounting/unmounting not interchangeable.
dd if=/dev/cdrom of=/tmp/filename.iso bs=8192 : data dump - this copies the iso image of a cd. This example is copying direct from the device - make sure the cd is not mounted. Copy to a filename of your choice. You can now burn a cd with this image. The output file must have a .iso extension. The last command, block size, increases the size and makes the process faster.
Disk and Resource Usage
df -h : shows amount of disk used, in human readable format
du -s : summarise the size of the directory you are in
du -ks <dirname>: summarise in kilobytes the size of the directory named
du -ms: summarise in megabytes
du -m : shows size in megabytes of directory, as well as all subdirectories
du -m --max-depth=1 <directoryname> : As above, except summarises subdirectories to a max depth of one
free : quick method of checking memory usage
Internet and Networking
dig : will get the ip address from the user ident (irc) The ip address will be the numbers following ID IN A xxx.xxx.xx.xx
ifconfig : lists interfaces and traffic. Can be used to get your current ip address. Must be root
netstat -a : shows connections on all network connections/sockets. Pipe to less for easier reading
-l : listening sockets only
-p : shows processes listening and includes PID. Useful to kill processes hogging key ports
fuser -vn tcp <portnumber> : names the service that uses that port.
ssh2 -l <user> <domain> : usage for ssh2. Will be prompted for password for user eg ssh2 -l jane ant.co.za
ssh username@domain : ssh to another box/site.
wget -r http://www.xxxx : to copy down an entire website. -m creates a mirror and is recursive
List and Stop Processes
lsof : lists open files. eg. If cdrom is busy and won't unmount, do lsof |grep cdrom, then kill PID's using it.
grep <parametername>: filters results for a parameter or word. An output of a command can be piped to grep to list only those that match the parameter, eg. ps ax |grep <parametername>
ps : processes running
ps ax or ps -e :all users and processes without a controlling terminal (tty)
ps axf :as above, showing child processes
ps -ef : everything running. Display will be PID, tty, time (at idle) and name. Use PID in the kill command. See kill for shutting down processes by command line.
NB: To list only a particular process, pipe to grep <processname> eg. ps ax | grep esd
kill -1 or kill -HUP <PID> this interrupts the process only. Handy for something stuck.
killall <processname> : Use on Linux only. Kill without requiring the process ID
kill -9 <PID> kills the process forcibly
kill -15 <PID> : a nicer kill than -9
Shut down Machine
init0: shuts system down (starting runlevel 0)
init1: goes down to to most basic admin level, runlevel 1
init6: reboots system
shutdown -h now: shuts the system down immediately.
shutdown -r now: reboots the system immediately.
shutdown -rF now: reboots and does a filesystem check on reboot. Handy if your machine had previously shut down irregularly (power failure, freeze up.)
Installing Software and Package Management
ldd <pkgname>: shows missing libraries that files/packages depend on. Prints out library dependencies for a given executable
The RPM command
To install, query, select and build rpm packages. The man page is fairly understandable and lists all the options.
rpm -q <packagename> : to see if a specific package is installed. Need only give the name, not the whole version number.
rpm -qa : query database for all installed packages. You could pipe to grep if you are looking for a string. eg. rpm -qa | grep ssh or rpm -qa | grep "part_of_package_name".
rpm -ql : lists files of an already installed package.
rpm -qpl : query an uninstalled package to list all files in package
rpm -qf <filename>: lists the package that the file came from
rpm -qi : gives info on installed packages, including description and header
rpm -qpi : info on uninstalled packages
rpm qRp : shows dependencies on which an uninstalled package depends. Remove the -p for an already installed package.
rpm -ivh : the basic one. -i installs, but it's better to use -U or -F depending on the situation. -v: verbose - keeps you in the loop, and -h: hashes - handy to check the progress.
rpm -Fvh : freshen an already installed package, eg. update. Will upgrade already installed packages only.
rpm -Uvh : will upgrade already installed packages and install ones not already installed.
rpm -i --replacepackages <rpm-package-name> This forces the installation of a package that according to rpm is already installed. Used when the already installed package is damaged.
rpm -e [<options>] <installed-package-name> To de-install a package, rpm runs through the following procedure: Checks dependencies. Runs some preparatory procedures for the de-installation. If configuration files have been changed, makes a copy of them before removing them. Removes the package. Runs some final procedures for the de-installation.
--force and --nodeps options can persuade reluctant packages. Use nodeps with caution!
rpm -rebuilddb : updates database of installed rpm packages
Tarballs or tgz
When installing tarballs, unpack, then read the INSTALL or README file (with cat). Although most packages follow a standard format, some have their own install scripts or are run directly from that directory.
The standard format is:
tar -xzvf <filename.tgz>
cd filename (into the similarly named directory)
su (change to root)
Read the output carefully when it stops, to ensure you have no errors. It may not have completed the operation due to a missing library or dependency.
make: For installing tgz files, as per the INSTALL file. Not installed by default in opensuse. Install with YAST, as well as other packages as required, such as gcc-c++ and kernel-source.
make install: must be root
tar -xzvf <filename.tgz> : Unpacks the file separate files in its own directory
tar -cvzf <targetfile.tgz> <source files> (could be *) : packs up files into a tarball
gunzip <filename.gz> unzips files with a .gz extension
bunzip2 : same for .bz2 extensions. Must have bzip2 installed.
unzip : for .zip files.
cal : calendar for this month
cal -y : for this year
cal 1992 : you can specify any year. Try 1752 and check September!
cal 03 2011: check a specific month in another year. Handy when you don't have next year's calendar available yet.
dmesg : shows you all the boot messages.
env : displays exported environment variables, like the path and other interesting stuff
echo $PATH : shows the path that is followed to find executables
export PATH="$PATH:/opt/gnome/bin" : add a new directory eg. /opt/gnome/bin to path
exec : executes a file, usually a binary or executable
lprm : removes all from the printer queue except what is already buffered in printer
passwd : change password. Follow instructions. As root: passwd <username> does not require old password to be entered, can be changed directly.
drakconf : mandriva / pclinuxos system configuration tool
ksnapshot : kde utility for screenshots. Easy to launch through `run command' window: alt F2
qtconfig : to configure appearance of QT applications, eg.fonts, styles.
SuSEconfig : run in terminal window after manually installing rpm's on an opensuse system. Updates menus, database etc.
yast : console opensuse system configuration tool.
yast2 : launches GUI version from command line.
zypper: openSUSE or Ark Linux command line package management utility for installing, patching or upgrading via repositories. Less controllable than YAST unless you are well acquainted with usage. See man page or google. zypper -up upgrades all packages from enabled repositories.
Wild Cards and various symbols
* wildcard symbol. Match any string of characters, eg rm *.c would delete all files in the current directory whose names end with `.c'.
| : pipe - the vertical bar - send the output of one command to another program, eg. less, grep. eg. cat <longfile> | less or rpm -qa | grep qt
> : send the output of a file to another file, eg cat xxx > xxx.txt
>> : appends the output, otherwise an existing file will get overwritten eg. cat xxyy >> xxx.txt
& : runs a job in the background
.. (double dot) parent directory of where you are. Can be used with other stuff, like cd.
. (single dot) current directory.
~ (tilde, that squiggly thing) home directory
./executablename : (dot-slash) to run an executable in the current directory (it won't be in the path.)
Terminal/Console Keyboard Shortcuts
Ctl - c : kills the process running.
Ctl - \ : force kills program, causes core dump, works when Ctl-c doesn't.
Ctl - z : puts a job into suspension
Ctl -d : exits you from program /closes that shell/ end of text
Ctl - o : use to flip back and forth between mc and console
Ctl - l : clears screen
Ctl - a : takes cursor to front of command line, bash only
Ctl - Esc : launches ksysguard - system activity monitor - graphical utility to kill a process.
Ctl - Alt -Backspace : get out of X (or back to login window in runlevel 5)
Ctl - Alt -Del : shutdown and reboot
Ctl - Alt - F1 to F6 : takes you into consoles
Ctl - Alt - F7 : back into graphical mode
Ctl - F1/F2/F3/F4 - to change you to each desktop, a KDE feature only
Ctrl-Alt-Esc : Kill window. Gives you a skull-and crossbones - click on window to kill. Only works if one window has frozen, not the whole system.
Alt - F2: pops up 'run command' window
Alt - F1 : pops up kde menu
Alt-Tab : Change between windows on the current KDE desktop.
Alt-F3 : Popup the window operation menu.
Alt-F4 : Close active window.
Shift - pg up/down is how you scroll in the console
spacebar : skips whole screen in less
Word processing shortcuts
home : takes you to beginning of line
end : to end of line
Ctl c : copy
Ctl x : cut
Ctl v : paste
Ctl z : undo
Ctl a : select whole doc
Ctl s : save your doc
Shift pgdn : highlights whole page down
Shift end : highlights text to end of line