An Introduction to the
Linux Command Shell
For Beginners
1.0 Introduction
The purpose of this document is to provide the reader with a fast and simple introduction to using
the Linux command shell and some of its basic utilities. It is assumed that the reader has zero or
very limited exposure to the Linux command prompt. This document is designed to accompany an
instructor-led tutorial on this subject, and therefore some details have been left out. Explanations,
practical examples, and references to DOS commands are made, where appropriate.
1.1 What is a command shell?
A program that interprets commands
in programs called
Allows a user to execute commands by typing them manually at a terminal, or automaticallyshell scripts.
commands.
A shell is not an operating system. It is a way to interface with the operating system and run1.2 What is BASH?
BASH = Bourne Again SHell
originally written by Steve Bourne for UNIX systems.
Bash is a shell written as a free replacement to the standard Bourne Shell (/bin/sh)
program with and use from the command line.
It has all of the features of the original Bourne Shell, plus additions that make it easier to
Since it is Free Software, it has been adopted as the default shell on most Linux systems.1.3 How is BASH different from the DOS command prompt?
that typing “
Case Sensitivity: In Linux/UNIX, commands and filenames are case sensitive, meaningEXIT” instead of the proper “exit” is a mistake.
while the backslash “
“
about these special characters in a minute!
“\” vs. “/”: In DOS, the forward-slash “/” is the command argument delimiter,\” is a directory separator. In Linux/UNIX, the/” is the directory separator, and the “\” is an escape character. More
that all files followed a format that allowed up to 8 characters in the
filename, followed by a period (“dot”), followed by an option extension,
up to 3 characters long (e.g.
no such thing as a file extension. Periods can be placed at any part of the
filename, and “extensions” may be interpreted differently by all
programs, or not at all.
Filenames: The DOS world uses the “eight dot three” filename convention, meaningFILENAME.TXT). In UNIX/Linux, there is1.4 Special Characters
Before we continue to learn about Linux shell commands, it is important to know that there are
many symbols and characters that the shell interprets in special ways. This means that certain
typed characters: a) cannot be used in certain situations, b) may be used to perform special
operations, or, c) must be “escaped” if you want to use them in a normal way.
Character Description
\
with a backslash first.
Example:
Escape character. If you want to reference a special character, you must “escape” ittouch /tmp/filename\*/
Example:
Directory separator, used to separate a string of directory names./usr/src/linux.
Current directory. Can also “hide” files when it is the first character in a filename...
Parent directory~
User's home directory*
Example:
Represents 0 or more characters in a filename, or by itself, all files in a directory.pic*2002 can represent the files pic2002, picJanuary2002,picFeb292002
, etc.?
Example:
Represents a single character in a filename.hello?.txt can represent hello1.txt, helloz.txt, but nothello22.txt
[ ]
Example:
Can be used to represent a range of values, e.g. [0-9], [A-Z], etc.hello[0-2].txt represents the names hello0.txt,hello1.txt
, and hello2.txt|
Example:
“Pipe”. Redirect the output of one command into another command.ls | more>
Example:
Redirect output of a command into a new file. If the file already exists, over-write it.ls > myfiles.txt>>
Example:
Redirect the output of a command onto the end of an existing file.echo .Mary 555-1234. >> phonenumbers.txt<
Example:
Redirect a file as input to a program.more < phonenumbers.txt;
Example:
Command separator. Allows you to execute multiple commands on a single line.cd /var/log ; less messages&&
finished without errors.
Example:
Command separator as above, but only runs the second command if the first onecd /var/logs && less messages&
Example:
Execute a command in the background, and immediately get your shell back.find / -name core > /tmp/corefiles.txt &1.5 Executing Commands
The Command
PATH:
type the name of the program to execute it.
Example: Typing “
Most common commands are located in your shell's “PATH”, meaning that you can justls” will execute the “ ls” command.
Your shell's “PATH” variable includes the most common program locations, such as/bin
, /usr/bin, /usr/X11R6/bin, and others.
location of the command.
Examples:
./program
To execute commands that are not in your current PATH, you have to give the complete/home/bob/myprogram(Execute a program in the current directory)~/bin/program
(Execute program from a personal bin directory)Command Syntax
different things. Typical command syntax can look something like this:
Commands can be run by themselves, or you can pass in additional arguments to make them docommand [-argument] [-argument] [--argument] [file]
Examples: ls List files in current directoryls -l
Lists files in “long” formatls -l --color
As above, with colourized outputcat filename
Show contents of a filecat -n filename
Show contents of a file, with line numbers2.0 Getting Help
When you're stuck and need help with a Linux command, help is usually only a few keystrokes
away! Help on most Linux commands is typically built right into the commands themselves,
available through online help programs (“man pages” and “info pages”), and of course online.
2.1 Using a Command's Built-In Help
Many commands have simple “help” screens that can be invoked with special command flags.
These flags usually look like “
Example:
-h” or “--help”.grep --help2.2 Online Manuals: “Man Pages”
The best source of information for most commands can be found in the online manual pages,
known as “man pages” for short. To read a command's man page, type “
Examples:
man command”.man ls Get help on the “ls” command.man man
To search for a particular word within a man page, type “
type the “Q” key.
Sometimes, you might not remember the name of Linux command and you need to search for it.
For example, if you want to know how to change a file's permissions, you can search the man page
descriptions for the word “permission” like this:
A manual about how to use the manual!/word”. To quit from a man page, justman -k permission
If you look at the output of this command, you will find a line that looks something like:
chmod (1) - change file access permissions
Now you know that “
show you the
chmod” is the command you were looking for. Typing “man chmod” willchmod command's manual page!2.3 Info Pages
Some programs, particularly those released by the Free Software Foundation, use info pages as
their main source of online documentation. Info pages are similar to man page, but instead of
being displayed on one long scrolling screen, they are presented in shorter segments with links to
other pieces of information. Info pages are accessed with the “
Linux distributions, “
For example:
info” command, or on somepinfo” (a nicer info browser).info df Loads the “df” info page.3.0 Navigating the Linux Filesystem
The Linux filesystem is a tree-like hierarchy hierarchy of directories and files. At the base of the
filesystem is the “
user). Unlike DOS or Windows filesystems that have multiple “roots”, one for each disk drive, the
Linux filesystem mounts all disks somewhere underneath the
describes many of the most common Linux directories.
/” directory, otherwise known as the “root” (not to be confused with the root/ filesystem. The following table3.1 The Linux Directory Layout
Directory Description
The nameless base of the filesystem. All other directories, files, drives, and
devices are attached to this root. Commonly (but incorrectly) referred to as
the “slash” or “/” directory. The “/” is just a directory separator, not a
directory itself.
/bin
Essential command binaries (programs) are stored here (bash, ls, mount,tar
, etc.)/boot
Static files of the boot loader./dev
they are kept under this directory.
Device files. In Linux, hardware devices are acceessd just like other files, and/etc
Host-specific system configuration files./home
Location of users' personal home directories (e.g. /home/susan)./lib
Essential shared libraries and kernel modules./proc
Process information pseudo-filesystem. An interface to kernel data structures./root
The root (superuser) home directory./sbin
Essential system binaries (fdisk, fsck, init, etc)./tmp
Temporary files. All users have permission to place temporary files here./usr
documentation, and much more).
The base directory for most shareable, read-only data (programs, libraries,/usr/bin
Most user programs are kept here (cc, find, du, etc.)./usr/include
Header files for compiling C programs./usr/lib
Libraries for most binary programs./usr/local
where files are stored on the network. Locally-installed files go in
“Locally” installed files. This directory only really matters in environments/usr/local/bin
software packages installed from source, or software not officially shipped
with the distribution.
, /usr/local/lib, etc.). Also often used for/usr/sbin
Non-vital system binaries (lpd, useradd, etc.)/usr/share
man pages, etc.).
Architecture-independent data (icons, backgrounds, documentation, terminfo,/usr/src
Program source code. E.g. The Linux Kernel, source RPMs, etc./usr/X11R6
The X Window System./var
Variable data: mail and printer spools, log files, lock files, etc.3.2 Commands for Navigating the Linux Filesystems
The first thing you usually want to do when learning about the Linux filesystem is take some time
to look around and see what's there! These next few commands will: a) Tell you where you are,
b) take you somewhere else, and c) show you what's there. The following table describes the basic
operation of the
you might already be familiar with.
pwd, cd, and ls commands, and compares them to certain DOS commands thatLinux Command DOS Command Description
pwd
location in the directory tree.
cd “Print Working Directory”. Shows the currentcd
returns you to your home directory.
cd, chdir “Change Directory”. When typed all by itself, itcd directory
Example:
cd directory Change into the specified directory name.cd /usr/src/linuxcd ~
used as a shortcut to your “home”, or other
directories relative to your home.
“~” is an alias for your home directory. It can becd ..
cd.. Move up one directory. For example, if you are in/home/vic
up in
and you type “cd ..”, you will end/home.cd -
back to your previous location!
Return to previous directory. An easy way to getls
format.
dir /w List all files in the current directory, in columnls directory
Example:
dir directory List the files in the specified directory.ls /var/logls -l
also shows you additional info about the file, such
as ownership, permissions, date, and size.
dir List files in “long” format, one file per line. Thisls -a
are those files that begin with a “.”, e.g. The
dir /a List all files, including “hidden” files. Hidden files.bash_history
file in your home directory.ls -ld
directory
A “long” list of “directory”, but instead of showing
the directory contents, show the directory's detailed
information. For example, compare the output of
the following two commands:
ls -l /usr/bin
ls -ld /usr/bin
ls /usr/bin/d*
in the
dir d*.* List all files whose names begin with the letter “d”/usr/bin directory.4.0 Piping and Re-Direction
Before we move on to learning even more commands, let's side-track to the topics of piping and
re-direction. The basic UNIX philosophy, therefore by extension the Linux philosophy, is to have
many small programs and utilities that do a particular job very well. It is the responsibility of the
programmer or user to combine these utilities to make more useful command sequences.
4.1 Piping Commands Together
The pipe character, “
command is “piped” into the next program, and if there is a second pipe, the output is sent to the
third program, etc. For example:
|”, is used to chain two or more commands together. The output of the firstls -la /usr/bin | less
In this example, we run the command “
of the files in
output to a program called “l
ls -la /usr/bin”, which gives us a long listing of all/usr/bin. Because the output of this command is typically very long, we pipe theess”, which displays the output for us one screen at a time.4.2 Redirecting Program Output to Files
There are times when it is useful to save the output of a command to a file, instead of displaying it
to the screen. For example, if we want to create a file that lists all of the MP3 files in a directory,
we can do something like this, using the “
>” redirection character:ls -l /home/vic/MP3/*.mp3 > mp3files.txt
A similar command can be written so that instead of creating a new file called
we can append to the end of the original file:
mp3files.txt,ls -l /home/vic/extraMP3s/*.mp3 >> mp3files.txt
5.0 Other Linux Commands
The following sections describe many other commands that you will find on most Linux systems.
I can't possibly cover the details of all of these commands in this document, so don't forget that you
can check the “man pages” for additional information. Not all of the listed commands will be
available on all Linux or UNIX distributions.
5.1 Working With Files and Directories
These commands can be used to: find out information about files, display files, and manipulate
them in other ways (copy, move, delete).
Linux
Command
DOS
Command
Description
file
For example, “
executable file.
Find out what kind of file it is.file /bin/ls” tells us that it is a Linuxcat
example:
created in the previous section.
type Display the contents of a text file on the screen. Forcat mp3files.txt would display the file wehead
Example:
Display the first few lines of a text file.head /etc/servicestail
Example:
Display the last few lines of a text file.tail /etc/servicestail -f
appended data as the file grows (very useful for following
log files!).
Example:
Display the last few lines of a text file, and then outputtail -f /var/log/messagescp
Example:
copy Copies a file from one location to another.cp mp3files.txt /tmp(copies the mp3files.txt file to the /tmp directory)
mv
ren, move
rename,Moves a file to a new location, or renames it.
For example:
mv mp3files.txt /tmp(copy the file to /tmp, and delete it from the original
location)
rm
del Delete a file. Example: rm /tmp/mp3files.txtmkdir
md Make Directory. Example: mkdir /tmp/myfiles/rmdir
rd, rmdir Remove Directory. Example: rmdir /tmp/myfiles/5.2 Finding Things
The following commands are used to find files. “
approximately where they are, but sometimes you need more powerful tools such as these:
ls” is good for finding files if you already knowLinux
Command
Description
which
you want to know exactly where the “grep” command is located on the
filesystem, you can type “
like:
Shows the full path of shell commands found in your path. For example, ifwhich grep”. The output should be something/bin/grepwhereis
information is available). For example, to find out where “
page are, type: “
Locates the program, source code, and manual page for a command (if allls” and its manwhereis ls” The output will look something like:ls: /bin/ls /usr/share/man/man1/ls.1.gz
locate
can find all files and directories that contain the name “mozilla” by typing:
A quick way to search for files anywhere on the filesystem. For example, youlocate mozilla
find
search for files matching certain patterns, as well as many other types of
searches. A simple example is:
A very powerful command, but sometimes tricky to use. It can be used tofind . -name \*mp3
This example starts searching in the current directory “.” and all subdirectories,
looking for files with “mp3” at the end of their names.
5.3 Informational Commands
The following commands are used to find out some information about the user or the system.
Linux Command Explanation
ps
Lists currently running process (programs).w
Show who is logged on and what they are doing.id
Print your user-id and group id'sdf
Report filesystem disk space usage (“Disk Free” is how I remember it)du
for the current directory.
Disk Usage in a particular directory. “du -s” provides a summarytop
activity on your computer in real-time. Type “Q” to quit.
Displays CPU processes in a full-screen GUI. A great way to see thefree
Displays amount of free and used memory in the system.cat /proc/cpuinfo
Displays information about your CPU.cat /proc/meminfo
Display lots of information about current memory usage.uname -a
etc.)
Prints system information to the screen (kernel version, machine type,5.4 Other Utilities
Here are some other commands that are useful to know.
Linux Command Description
clear
Clear the screenecho
example: echo “Hello World”
Display text on the screen. Mostly useful when writing shell scripts. Formore
Display a file, or program output one page at a time. Examples:more mp3files.txt
ls -la | more
less
backwards as well as forwards.
An improved replacement for the “more” command. Allows you to scrollgrep
which TCP network port is used by the “nfs” service, you can do this:
Search for a pattern in a file or program output. For example, to find outgrep .nfs. /etc/services
This looks for any line that contains the string “nfs” in the file “/etc/services”
and displays only those lines.
lpr
Print a file or program output. Examples:lpr mp3files.txt
- Print the mp3files.txt filels -la | lpr
- Print the output of the “ls -la” command.sort
Sort a file or program output. Example: sort mp3files.txtsu
The default account to switch to is the root/superuser account. Examples:
“Switch User”. Allows you to switch to another user's account temporarily.su
- Switch the root accountsu -
- Switch to root, and log in with root's environmentsu larry
- Switch to Larry's account5.5 Shortcuts to Make it all Easier!
When you start using the Bash shell more often, you will appreciate these shortcuts that can save
you very much typing time.
Shortcut Description
Up/Down Arrow Keys Scroll through your most recent commands. You can
scroll back to an old command, hit
command without having to re-type it.
“
ENTER, and execute thehistory” command Show your complete command history.T
recognizes, you can have it automatically completed for
you if you press the
characters of your favourite Linux command, then hit
AB Completion If you type a partial command or filename that the shellTAB key. Try typing the first fewTABa couple of times to see what happens.
Complete recent commands with “!” Try this: Type “
of a recent command and press
!” followed by the first couple of lettersENTER! For example, type:find /usr/bin -type f -name m\*
...and now type:
!fi
Search your command history with
CTRL-R
Press
command. It will search the commands for you, and once
you find the command you want, just press
Scrolling the screen with
PageUp
CTRL-R and then type any portion of a recentENTER.Shift-and Page DownScroll back and forward through your terminal.
No comments:
Post a Comment