Unit - 5 UNIX / Linux - File System Basics: Directory Structure
Unit - 5 UNIX / Linux - File System Basics: Directory Structure
Directory Structure
Unix uses a hierarchical file system structure, much like an upside-down tree, with root (/) at
the base of the file system and all other directories spreading from there.
A Unix filesystem is a collection of files and directories that has the following properties −
It has a root directory (/) that contains other files and directories.
Each file or directory is uniquely identified by its name, the directory in which it
resides, and a unique identifier, typically called an inode.
By convention, the root directory has an inode number of 2 and
the lost+found directory has an inode number of 3. Inode numbers 0 and 1 are not
used. File inode numbers can be seen by specifying the -i option to ls command.
It is self-contained. There are no dependencies between one filesystem and another.
The directories have specific purposes and generally hold the same types of information for
easily locating files. Following are the directories that exist on the major versions of Unix −
1
/
This is the root directory which should contain only the directories needed at the top level of
the file structure
2
/bin
This is where the executable files are located. These files are available to all users
3
/dev
These are device drivers
4
/etc
Supervisor directory commands, configuration files, disk configuration files, valid user lists,
groups, ethernet, hosts, where to send critical messages
5
/lib
Contains shared library files and sometimes other kernel-related files
6
/boot
Contains files for booting the system
7
/home
Contains the home directory for users and other accounts
8
/mnt
Used to mount other temporary file systems, such as cdrom and floppy for the CD-
ROM drive and floppy diskette drive, respectively
9
/proc
Contains all processes marked as a file by process number or other information that is
dynamic to the system
10
/tmp
Holds temporary files used between system boots
11
/usr
Used for miscellaneous purposes, and can be used by many users. Includes administrative
commands, shared files, library files, and others
12
/var
Typically contains variable-length files such as log and print files and any other type of file
that may contain a variable amount of data
13
/sbin
Contains binary (executable) files, usually for system administration. For
example, fdisk and ifconfig utilities
14
/kernel
Contains kernel files
1
cat filename
Displays a filename
2
cd dirname
Moves you to the identified directory
3
cp file1 file2
Copies one file/directory to the specified location
4
file filename
Identifies the file type (binary, text, etc)
5
find filename dir
Finds a file/directory
6
head filename
Shows the beginning of a file
7
less filename
Browses through a file from the end or the beginning
8
ls dirname
Shows the contents of the directory specified
9
mkdir dirname
Creates the specified directory
10
more filename
Browses through a file from the beginning to the end
11
mv file1 file2
Moves the location of, or renames a file/directory
12
pwd
Shows the current directory the user is in
13
rm filename
Removes a file
14
rmdir dirname
Removes a directory
15
tail filename
Shows the end of a file
16
touch filename
Creates a blank file or modifies an existing file or its attributes
17
whereis filename
Shows the location of a file
18
which filename
Shows the location of a file if it is in your PATH
You can use Manpage Help to check complete syntax for each command mentioned here.
The df Command
The first way to manage your partition space is with the df (disk free) command. The
command df -k (disk free) displays the disk space usage in kilobytes, as shown below −
$df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vzfs 10485760 7836644 2649116 75% /
/devices 0 0 0 0% /devices
$
Some of the directories, such as /devices, shows 0 in the kbytes, used, and avail columns as
well as 0% for capacity. These are special (or virtual) file systems, and although they reside
on the disk under /, by themselves they do not consume disk space.
The df -k output is generally the same on all Unix systems. Here's what it usually includes −
1
Filesystem
The physical file system name
2
kbytes
Total kilobytes of space available on the storage medium
3
used
Total kilobytes of space used (by files)
4
avail
Total kilobytes available for use
5
capacity
Percentage of total space used by files
6
Mounted on
What the file system is mounted on
You can use the -h (human readable) option to display the output in a format that shows
the size in easier-to-understand notation.
The du Command
The du (disk usage) command enables you to specify directories to show disk space usage
on a particular directory.
This command is helpful if you want to determine how much space a particular directory is
taking. The following command displays number of blocks consumed by each directory. A
single block may take either 512 Bytes or 1 Kilo Byte depending on your system.
$du /etc
10 /etc/cron.d
126 /etc/default
6 /etc/dfs
...
$
The -h option makes the output easier to comprehend −
$du -h /etc
5k /etc/cron.d
63k /etc/default
3k /etc/dfs
...
$
1
quota
Displays disk usage and limits for a user of group
2
edquota
This is a quota editor. Users or Groups quota can be edited using this command
3
quotacheck
Scans a filesystem for disk usage, creates, checks and repairs quota files
4
setquota
This is a command line quota editor
5
quotaon
This announces to the system that disk quotas should be enabled on one or more filesystems
6
quotaoff
This announces to the system that disk quotas should be disabled for one or more filesystems
7
repquota
This prints a summary of the disc usage and quotas for the specified file systems
Listing Files
To list the files and directories stored in the current directory, use the following command −
$ls
Here is the sample output of the above command −
$ls
1
-
Regular file, such as an ASCII text file, binary executable, or hard link.
2
b
Block special file. Block input/output device file such as a physical hard drive.
3
c
Character special file. Raw input/output device file such as a physical hard drive.
4
d
Directory file that contains a listing of other files and directories.
5
l
Symbolic link file. Links on any regular file.
6
p
Named pipe. A mechanism for interprocess communications.
7
s
Socket used for interprocess communication.
Metacharacters
Metacharacters have a special meaning in Unix. For example, * and ? are metacharacters.
We use * to match 0 or more characters, a question mark (?) matches with a single
character.
For Example −
$ls ch*.doc
Displays all the files, the names of which start with ch and end with .doc −
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc c
Here, * works as meta character which matches with any character. If you want to display all
the files ending with just .doc, then you can use the following command −
$ls *.doc
Hidden Files
An invisible file is one, the first character of which is the dot or the period character (.).
Unix programs (including the shell) use most of these files to store configuration
information.
Some common examples of the hidden files include the files −
.profile − The Bourne shell ( sh) initialization script
.kshrc − The Korn shell ( ksh) initialization script
.cshrc − The C shell ( csh) initialization script
.rhosts − The remote shell configuration file
To list the invisible files, specify the -a option to ls −
$ ls -a
Creating Files
You can use the vi editor to create ordinary files on any Unix system. You simply need to
give the following command −
$ vi filename
The above command will open a file with the given filename. Now, press the key i to come
into the edit mode. Once you are in the edit mode, you can start writing your content in the
file as in the following program −
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
Once you are done with the program, follow these steps −
Press the key esc to come out of the edit mode.
Press two keys Shift + ZZ together to come out of the file completely.
You will now have a file created with filename in the current directory.
$ vi filename
$
Editing Files
You can edit an existing file using the vi editor. We will discuss in short how to open an
existing file −
$ vi filename
Once the file is opened, you can come in the edit mode by pressing the key i and then you
can proceed by editing the file. If you want to move here and there inside a file, then first
you need to come out of the edit mode by pressing the key Esc. After this, you can use the
following keys to move inside a file −
l key to move to the right side.
h key to move to the left side.
k key to move upside in the file.
j key to move downside in the file.
So using the above keys, you can position your cursor wherever you want to edit. Once you
are positioned, then you can use the i key to come in the edit mode. Once you are done with
the editing in your file, press Esc and finally two keys Shift + ZZ together to come out of
the file completely.
Copying Files
To make a copy of a file use the cp command. The basic syntax of the command is −
$ cp source_file destination_file
Following is the example to create a copy of the existing file filename.
$ cp filename copyfile
$
You will now find one more file copyfile in your current directory. This file will exactly be
the same as the original file filename.
Renaming Files
To change the name of a file, use the mv command. Following is the basic syntax −
$ mv old_file new_file
The following program will rename the existing file filename to newfile.
$ mv filename newfile
$
The mv command will move the existing file completely into the new file. In this case, you
will find only newfile in your current directory.
Deleting Files
To delete an existing file, use the rm command. Following is the basic syntax −
$ rm filename
Caution − A file may contain useful information. It is always recommended to be careful
while using this Delete command. It is better to use the -i option along with rm command.
Following is the example which shows how to completely remove the existing file filename.
$ rm filename
$
You can remove multiple files at a time with the command given below −
$ rm filename1 filename2 filename3
$
Home Directory
The directory in which you find yourself when you first login is called your home directory.
You will be doing much of your work in your home directory and subdirectories that you'll
be creating to organize your files.
You can go in your home directory anytime using the following command −
$cd ~
$
Here ~ indicates the home directory. Suppose you have to go in any other user's home
directory, use the following command −
$cd ~username
$
To go in your last directory, you can use the following command −
$cd -
$
Absolute/Relative Pathnames
Directories are arranged in a hierarchy with root (/) at the top. The position of any file within
the hierarchy is described by its pathname.
Elements of a pathname are separated by a /. A pathname is absolute, if it is described in
relation to root, thus absolute pathnames always begin with a /.
Following are some examples of absolute filenames.
/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3
A pathname can also be relative to your current working directory. Relative pathnames
never begin with /. Relative to user amrood's home directory, some pathnames might look
like this −
chem/notes
personal/res
To determine where you are within the filesystem hierarchy at any time, enter the
command pwd to print the current working directory −
$pwd
/user0/home/amrood
Listing Directories
To list the files in a directory, you can use the following syntax −
$ls dirname
Following is the example to list all the files contained in /usr/local directory −
$ls /usr/local
Creating Directories
We will now understand how to create directories. Directories are created by the following
command −
$mkdir dirname
Here, directory is the absolute or relative pathname of the directory you want to create. For
example, the command −
$mkdir mydir
$
Creates the directory mydir in the current directory. Here is another example −
$mkdir /tmp/test-dir
$
This command creates the directory test-dir in the /tmp directory. The mkdir command
produces no output if it successfully creates the requested directory.
If you give more than one directory on the command line, mkdir creates each of the
directories. For example, −
$mkdir docs pub
$
Creates the directories docs and pub under the current directory.
Removing Directories
Directories can be deleted using the rmdir command as follows −
$rmdir dirname
$
Note − To remove a directory, make sure it is empty which means there should not be any
file or sub-directory inside this directory.
You can remove multiple directories at a time as follows −
$rmdir dirname1 dirname2 dirname3
$
The above command removes the directories dirname1, dirname2, and dirname3, if they are
empty. The rmdir command produces no output if it is successful.
Changing Directories
You can use the cd command to do more than just change to a home directory. You can use
it to change to any directory by specifying a valid absolute or relative path. The syntax is as
given below −
$cd dirname
$
Here, dirname is the name of the directory that you want to change to. For example, the
command −
$cd /usr/local/bin
$
Changes to the directory /usr/local/bin. From this directory, you can cd to the
directory /usr/home/amrood using the following relative path −
$cd ../../home/amrood
$
Renaming Directories
The mv (move) command can also be used to rename a directory. The syntax is as follows −
$mv olddir newdir
$
You can rename a directory mydir to yourdir as follows −
$mv mydir yourdir
$
Changing Permissions
To change the file or the directory permissions, you use the chmod (change mode)
command. There are two ways to use chmod — the symbolic mode and the absolute mode.
Using chmod in Symbolic Mode
The easiest way for a beginner to modify file or directory permissions is to use the symbolic
mode. With symbolic permissions you can add, delete, or specify the permission set you
want by using the operators in the following table.
1
+
Adds the designated permission(s) to a file or directory.
2
-
Removes the designated permission(s) from a file or directory.
3
=
Sets the designated permission(s).
Here's an example using testfile. Running ls -1 on the testfile shows that the file's
permissions are as follows −
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Then each example chmod command from the preceding table is run on the testfile,
followed by ls –l, so you can see the permission changes −
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Here's how you can combine these commands on a single line −
$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
0 No permission ---
Here's an example using the testfile. Running ls -1 on the testfile shows that the file's
permissions are as follows −
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Then each example chmod command from the preceding table is run on the testfile,
followed by ls –l, so you can see the permission changes −
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
Changing Ownership
The chown command changes the ownership of a file. The basic syntax is as follows −
$ chown user filelist
The value of the user can be either the name of a user on the system or the user id (uid) of
a user on the system.
The following example will help you understand the concept −
$ chown amrood testfile
$
Changes the owner of the given file to the user amrood.
NOTE − The super user, root, has the unrestricted capability to change the ownership of any
file but normal users can change the ownership of only those files that they own.
/etc/profile
profile
The process is as follows −
The shell checks to see whether the file /etc/profile exists.
If it exists, the shell reads it. Otherwise, this file is skipped. No error message
is displayed.
The shell checks to see whether the file .profile exists in your home directory.
Your home directory is the directory that you start out in after you log in.
If it exists, the shell reads it; otherwise, the shell skips it. No error message is
displayed.
As soon as both of these files have been read, the shell displays a prompt −
$
This is the prompt where you can enter commands in order to have them executed.
Note − The shell initialization process detailed here applies to all Bourne type
shells, but some additional files are used by bash and ksh.
1
\t
Current time, expressed as HH:MM:SS
2
\d
Current date, expressed as Weekday Month Date
3
\n
Newline
4
\s
Current shell environment
5
\W
Working directory
6
\w
Full path of the working directory
7
\u
Current user’s username
8
\h
Hostname of the current machine
9
\#
Command number of the current command. Increases when a new command is entered
10
\$
If the effective UID is 0 (that is, if you are logged in as root), end the prompt with the #
character; otherwise, use the $ sign
You can make the change yourself every time you log in, or you can have the
change made automatically in PS1 by adding it to your .profile file.
When you issue a command that is incomplete, the shell will display a secondary
prompt and wait for you to complete the command and hit Enter again.
The default secondary prompt is > (the greater than sign), but can be changed by
re-defining the PS2 shell variable −
Following is the example which uses the default secondary prompt −
$ echo "this is a
> test"
this is a
test
$
The example given below re-defines PS2 with a customized prompt −
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$
Environment Variables
Following is the partial list of important environment variables. These variables are
set and accessed as mentioned below −
1
DISPLAY
Contains the identifier for the display that X11 programs should use by default.
2
HOME
Indicates the home directory of the current user: the default argument for the
cd built-in command.
3
IFS
Indicates the Internal Field Separator that is used by the parser for word
splitting after expansion.
4
LANG
LANG expands to the default system locale; LC_ALL can be used to override
this. For example, if its value is pt_BR, then the language is set to (Brazilian)
Portuguese and the locale to Brazil.
5
LD_LIBRARY_PATH
A Unix system with a dynamic linker, contains a colonseparated list of directories
that the dynamic linker should search for shared objects when building a
process image after exec, before searching in any other directories.
6
PATH
Indicates the search path for commands. It is a colon-separated list of directories
in which the shell looks for commands.
7
PWD
Indicates the current working directory as set by the cd command.
8
RANDOM
Generates a random integer between 0 and 32,767 each time it is referenced.
9
SHLVL
Increments by one each time an instance of bash is started. This variable is
useful for determining whether the built-in exit command ends the current
session.
10
TERM
Refers to the display type.
11
TZ
Refers to Time zone. It can take values like GMT, AST, etc.
12
UID
Expands to the numeric user ID of the current user, initialized at the shell
startup.
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$
Starting a Process
When you start a process (run a command), there are two ways you can run it −
Foreground Processes
Background Processes
Foreground Processes
By default, every process that you start runs in the foreground. It gets its input from
the keyboard and sends its output to the screen.
You can see this happen with the ls command. If you wish to list all the files in your
current directory, you can use the following command −
$ls ch*.doc
This would display all the files, the names of which start with ch and end
with .doc −
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc
The process runs in the foreground, the output is directed to my screen, and if
the ls command wants any input (which it does not), it waits for it from the
keyboard.
While a program is running in the foreground and is time-consuming, no other
commands can be run (start any other processes) because the prompt would not be
available until the program finishes processing and comes out.
Background Processes
A background process runs without being connected to your keyboard. If the
background process requires any keyboard input, it waits.
The advantage of running a process in the background is that you can run other
commands; you do not have to wait until it completes to start another!
The simplest way to start a background process is to add an ampersand (&) at the
end of the command.
$ls ch*.doc &
This displays all those files the names of which start with ch and end with .doc −
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc
Here, if the ls command wants any input (which it does not), it goes into a stop state
until we move it into the foreground and give it the data from the keyboard.
That first line contains information about the background process - the job number
and the process ID. You need to know the job number to manipulate it between the
background and the foreground.
Press the Enter key and you will see the following −
[1] + Done ls ch*.doc &
$
The first line tells you that the ls command background process finishes
successfully. The second is a prompt for another command.
1
UID
User ID that this process belongs to (the person running it)
2
PID
Process ID
3
PPID
Parent process ID (the ID of the process that started it)
4
C
CPU utilization of process
5
STIME
Process start time
6
TTY
Terminal type associated with the process
7
TIME
CPU time taken by the process
8
CMD
The command that started this process
There are other options which can be used along with ps command −
1
-a
Shows information about all users
2
-x
Shows information about processes without terminals
3
-u
Shows additional information like -f option
4
-e
Displays extended information
Stopping Processes
Ending a process can be done in several different ways. Often, from a console-
based command, sending a CTRL + C keystroke (the default interrupt character)
will exit the command. This works when the process is running in the foreground
mode.
If a process is running in the background, you should get its Job ID using
the ps command. After that, you can use the kill command to kill the process as
follows −
$ps -f
UID PID PPID C STIME TTY TIME CMD
amrood 6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood 6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood 3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood 6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated
Here, the kill command terminates the first_one process. If a process ignores a
regular kill command, you can use kill -9 followed by the process ID as follows −
$kill -9 6738
Terminated
Parent and Child Processes
Each unix process has two ID numbers assigned to it: The Process ID (pid) and the
Parent process ID (ppid). Each user process in the system has a parent process.
Most of the commands that you run have the shell as their parent. Check the ps -
f example where this command listed both the process ID and the parent process
ID.
Daemon Processes
Daemons are system-related background processes that often run with the
permissions of root and services requests from other processes.
A daemon has no controlling terminal. It cannot open /dev/tty. If you do a "ps -
ef" and look at the tty field, all daemons will have a ? for the tty.
To be precise, a daemon is a process that runs in the background, usually waiting
for something to happen that it is capable of working with. For example, a printer
daemon waiting for print commands.
If you have a program that calls for lengthy processing, then it’s worth to make it a
daemon and run it in the background.
1
vi filename
Creates a new file if it already does not exist, otherwise opens an existing file.
2
vi -R filename
Opens an existing file in the read-only mode.
3
view filename
Opens an existing file in the read-only mode.
Following is an example to create a new file testfile if it already does not exist in the
current working directory −
$vi testfile
The above command will generate the following output −
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
You will notice a tilde (~) on each line following the cursor. A tilde represents an
unused line. If a line does not begin with a tilde and appears to be blank, there is a
space, tab, newline, or some other non-viewable character present.
You now have one open file to start working on. Before proceeding further, let us
understand a few important concepts.
Operation Modes
While working with the vi editor, we usually come across the following two modes −
Command mode − This mode enables you to perform administrative tasks
such as saving the files, executing the commands, moving the cursor, cutting
(yanking) and pasting the lines or words, as well as finding and replacing. In
this mode, whatever you type is interpreted as a command.
Insert mode − This mode enables you to insert text into the file. Everything
that's typed in this mode is interpreted as input and placed in the file.
vi always starts in the command mode. To enter text, you must be in the insert
mode for which simply type i. To come out of the insert mode, press the Esc key,
which will take you back to the command mode.
Hint − If you are not sure which mode you are in, press the Esc key twice; this will
take you to the command mode. You open a file using the vi editor. Start by typing
some characters and then come to the command mode to understand the
difference.
Getting Out of vi
The command to quit out of vi is :q. Once in the command mode, type colon, and
'q', followed by return. If your file has been modified in any way, the editor will warn
you of this, and not let you quit. To ignore this message, the command to quit out of
vi without saving is :q!. This lets you exit vi without saving any of the changes.
The command to save the contents of the editor is :w. You can combine the above
command with the quit command, or use :wq and return.
The easiest way to save your changes and exit vi is with the ZZ command. When
you are in the command mode, type ZZ. The ZZ command works the same way as
the :wq command.
If you want to specify/state any particular name for the file, you can do so by
specifying it after the :w. For example, if you wanted to save the file you were
working on as another filename called filename2, you would type :w filename2 and
return.
1
k
Moves the cursor up one line
2
j
Moves the cursor down one line
3
h
Moves the cursor to the left one character position
4
l
Moves the cursor to the right one character position
Editing Files
To edit the file, you need to be in the insert mode. There are many ways to enter the
insert mode from the command mode −
1
I
Inserts text before the current cursor location
2
I
Inserts text at the beginning of the current line
3
a
Inserts text after the current cursor location
4
A
Inserts text at the end of the current line
5
o
Creates a new line for text entry below the cursor location
6
O
Creates a new line for text entry above the cursor location
Deleting Characters
Here is a list of important commands, which can be used to delete characters and
lines in an open file −
2
X
Deletes the character before the cursor location
3
Dw
Deletes from the current cursor location to the next word
4
d^
Deletes from the current cursor position to the beginning of the line
5
d$
Deletes from the current cursor position to the end of the line
6
D
Deletes from the cursor position to the end of the current line
7
Dd
Deletes the line the cursor is on
Change Commands
You also have the capability to change characters, words, or lines in vi without
deleting them. Here are the relevant commands −
1
Cc
Removes the contents of the line, leaving you in insert mode.
2
Cw
Changes the word the cursor is on from the cursor to the lowercase w end of the
word.
3
R
Replaces the character under the cursor. vi returns to the command mode after the
replacement is entered.
4
R
Overwrites multiple characters beginning with the character currently under the
cursor. You must use Esc to stop the overwriting.
5
s
Replaces the current character with the character you type. Afterward, you are left in
the insert mode.
6
S
Deletes the line the cursor is on and replaces it with the new text. After the new text is
entered, vi remains in the insert mode.
1
yy
Copies the current line.
2
yw
Copies the current word from the character the lowercase w cursor is on, until the end of t
3
p
Puts the copied text after the cursor.
4
P
Puts the yanked text before the cursor.
Advanced Commands
There are some advanced commands that simplify day-to-day editing and allow for
more efficient use of vi −
Given below is the list advanced commands.
1
^
Searches at the beginning of the line (Use at the beginning of a search expression).
2
.
Matches a single character.
3
*
Matches zero or more of the previous character.
4
$
End of the line (Use at the end of the search expression).
5
[
Starts a set of matching or non-matching expressions.
6
<
This is put in an expression escaped with the backslash to find the ending or the beginning
7
>
This helps see the '<' character description above.
The character search searches within one line to find a character entered after the
command. The f and F commands search for a character on the current line
only. f searches forwards and F searches backwards and the cursor moves to the
position of the found character.
The t and T commands search for a character on the current line only, but for t, the
cursor moves to the position before the character, and T searches the line
backwards to the position after the character.
Set Commands
You can change the look and feel of your vi screen using the
following :set commands. Once you are in the command mode, type :set followed
by any of the following commands.
1
:set ic
Ignores the case when searching
2
:set ai
Sets autoindent
3
:set noai
Unsets autoindent
4
:set nu
Displays lines with line numbers on the left side
5
:set sw
Sets the width of a software tabstop. For example, you would set a shift width of 4 with th
:set sw = 4
6
:set ws
If wrapscan is set, and the word is not found at the bottom of the file, it will try search
beginning
7
:set wm
If this option has a value greater than zero, the editor will automatically "word wrap". For
the wrap margin to two characters, you would type this: :set wm = 2
8
:set ro
Changes file type to "read only"
9
:set term
Prints terminal type
10
:set bf
Discards control characters from input
Running Commands
The vi has the capability to run commands from within the editor. To run a
command, you only need to go to the command mode and type :! command.
For example, if you want to check whether a file exists before you try to save your
file with that filename, you can type :! ls and you will see the output of ls on the
screen.
You can press any key (or the command's escape sequence) to return to your vi
session.
Replacing Text
The substitution command (:s/) enables you to quickly replace words or groups of
words within your files. Following is the syntax to replace text −
:s/search/replace/g
The g stands for globally. The result of this command is that all occurrences on the
cursor's line are changed.
Important Points to Note
The following points will add to your success with vi −
You must be in command mode to use the commands. (Press Esc twice at
any time to ensure that you are in command mode.)
You must be careful with the commands. These are case-sensitive.