Lecture Two
File System; Common Commands; The vi Editor
File System
- Unix file system is hierarchical (tree, directory within directory)
- root directory is
/
- ancestor of all files and directories on system
- directories "contain" files and/or other directories
- directories actually only contain filenames and pointers to inodes (information about the files)
- to be safe, for file and directory names use alphabetics, numerics, underscore, period, or comma
- some UNIX systems allow up to 255 characters in a filename, others only allow up to 14
- files within one directory must have different names
- hidden filenames begin with a period,
ls
won't list them, but ls -a
will
- hidden filenames are used mostly for configuration files, that you don't want to see every time you issue an
ls
command
.
represents the current working directory, ..
represents its parent
- home directory is the working directory upon log in, or after the
cd
command is issued with no arguments
Standard Directories
- standard directories & files
/home
typically contains the home directories of all users
/bin
and /usr/bin
contain standard utility programs
/sbin
and /usr/sbin
contain utilities for system administration
/etc
contains admin & configuration files, such as /etc/passwd
/var
contains files that vary as the system is running, such as temp, log, spool, and mailbox files
/dev
contains files representing peripheral devices (device drivers)
/tmp
is used by some programs for temporary files
File Types
- file types, as indicated by the first character in ls -l output:
-
indicates an ordinary file
d
indicates a directory
l
indicates a symbolic link
b
indicates a block device file, such as for a dvd reader
c
indicates a character device file, such as for a keyboard
p
indicates a pipe, used to communicate between processes on the same server
s
indicates a socket, used to communicate between processes on the same or different servers
Common Commands
touch
- creates a new file, or updates stats on an existing file
mkdir
- to create directories
mkdir -p
- to create a directory & any parent directories not already existing
rmdir
- to delete empty directories, eg. rmdir directory-list
mv
existing-file new-file - to rename or move files & directories
cp
source-file destination-file - to copy files (careful, overwrites destination with no warning)
cp -r
- to copy directories including files and subdirectories
rm
- to delete files, eg. rm file-list
rm -r
- to delete directories including files and subdirectories
rm -ir
- to delete directories including files and subdirectories, with prompt to confirm removal
cat filename
- display contents of file
more
or less
- displays file contents one page at a time
- - will go to next page
- b - will go to previous page
- /string - will search for string within document being viewed
- q - will quit
file filename
- gives info about the contents of the file
find
- to find files matching specified characteristics
find . -name file*
- lists pathname of any filenames beginning with "file", from the current directory and any subdirectories
find . -size +50k
- lists pathname of any files larger than 50 kb, from the current directory and any subdirectories
man
command - online manual (or help) for command, uses more
to display information
man -k keyword
- eg. man -k calendar
- searches through man sections for keyword
diff file1 file2
- displays differences between 2 files
echo
text or $variable (eg. $HOME)
which utility
- lists pathname that would be used to access this utility
The vi Editor
Modes
- input mode, command mode, or last-line mode (special case of command mode)
- to get to input mode:
- insert -
i
, I (before cursor, beginning of line)
- append -
a
, A (after cursor, end of line)
- open -
o
, O
(below, above)
escape [ESC]
to get to command mode
- basically, if typing doesn't appear on screen, vi is in command mode, if typing appears on screen, vi is in input mode
Cursor Movement
- cursor moved using
h, j, k, l
(left, down, up, right)
- can use repetition factor, eg.
12j
will move down 12 lines
- arrow keys may also be used, but using
h, j, k, l
is faster
^f, ^b
- scroll forward full screen, backward full screen
nG
- move to line n, or last line if n not specified
Common Commands
J
- join current and following line
x
- delete character under cursor
- can use repetition factor, eg. 3x
r
- replace character under cursor
dw, d$, dd
- delete text (word, to end of line, line) and copy to buffer
- can use repetition factor, eg. 7dw or d7w, 12dd or d12d
cw, c$, cc
- change - delete text, copy text to buffer, and leave in input mode
- can use repetition factor, eg. 5cw or c5w, 12cc or c12c
yw, y$, yy
- yank - copy text to buffer
- can use repetition factor eg. 5yw or y5w, 12yy or y12y
p, P
- paste buffer after or before cursor (below or above current line if buffer contains entire lines)
.
- repeat most recent command that made a change
u
- undo (only one level on older systems)
:wq
- write changes to disk and quit
:q!
(quit without saving changes)
Searching
/pattern
- searches for the next occurrence of pattern after the current cursor position
?pattern
- searches backwards through the file
n
- repeat last search