2.01 - Fordham University

Download Report

Transcript 2.01 - Fordham University

Unix Overview
CISC2200, Fall 09
1
Using Unix/Linux System
Apply for an account


User name and password
Log on and off



through PuTTy, or other telnet/ssh client
Linux server: storm.cis.fordham.edu
After log in, you are in the home directory


2
associated with each account
Your first encounter: shell


Graphical user interface vs. command line interface
Shell: interactive command interpreter



3
On starts up, it displays a prompt character, and waits for user
to type in a command line
On input of a command line, shell extracts command name
and arguments, searches for the program, and runs it.
When program finishes, shell reads next command line….
Linux commands
Command name and arguments:




Some arguments are file names: cp src dest
Some arguments are flags/options: head -20 file
Note that “head 20 file” will print initial 10 lines of file “20”,
and file “file”
Wild cards: *, ?, []




4
rm *.o: remove all .o files
?: match any one character
[abc]: a or b or c
Check/Change Login Shell
Many variations: shell, csh, bash, tcsh, ksh
To check the shell you are using





echo $shell
echo $SHELL
echo $0
login shell: default shell for a user, specified in /etc/passwd
To change login shell



5
chsh <your_user_name>
Some useful tips

Bash stores the commands history



Repeat a previous command


“!<command_no>” or “!<any prefix of previous command>
(the most recent match)
Search for a command



Use UP/DOWN arrow to browse them
Use “history” to show past commands
Type Ctrl-r, and then a string
Bash will search previous commands for a match
File name autocompletion: “tab” key
Shell: how does it work


Shell: interactive command interpreter
Start a shell session within another one



Just enter command “bash”
Use ctrl-d or type exit to terminate a session
How does it find the program ?


Environment variable PATH stores a list of paths to search for
programs: “set | grep PATH” or “echo $PATH”, “set” to show
all variable settings
Builtin commands: history, set, echo, etc.
Customize your shell environment

Modify your shell's startup file (in home dir)




sh, ksh: .profile
bash: .profile, .bashrc, .bash_login .bash_profile
csh: .cshrc, .login tcsh: .tcshrc, .login
Note that these all start with dot
Set environment variables

Values of environment variables

In sh, ksh, bash:
PATH=$HOME/bin:$PATH
PS1="You rang? "
export PATH PS1
can also do export PS1="Yes? “

In csh, tcsh:
setenv PATH $HOME/bin:$PATH
set prompt="You rang? "
Create customized command shorthand

Aliases

In sh, ksh, bash:



alias ls='ls –F’
alias rm=‘rm –I’: so that you have to confirm the removal
In csh, tcsh

alias ls 'ls –F’
File Systems
11
Hierarchical file system
• File: a sequence of 0 or more bytes containing
arbitrary information
– Directories are stored as file
/ (root)
de
v
cdrom tty24
bi
n
home
staff
zhang
12
et
c
lib
passwd
Home directory & Pathname

Absolute pathname, path, specify location of a file or
a directory in the complete file structure


/home/staff/zhang is pathname for my home directory
To make life easier:

Working directory (or current directory) concept


To change your current directory:


To check your current directory: pwd
cd <path name of target directory>
Relative pathname: path names specified relative to
current directory
13
“..”: refers to parent dir
“.”: current directory
“/”: root and seperator in file names
“~”: home directory
Getting around in the file system

To list files/directories:


To create a subdirectory:


ls
mkdir <path name of directory>
To remove a directory:

14
rmdir <path name of directory>
File manipulating commands

mv: move a file or directory, or rename a file/directory


cp: copy file or directory


mv src_path dest_path
cp –r src_dir dest_dir
rm: remove a file or a directory


rm <filename>
rm –r <dir_name>: remove recursively everything under the
directory
A close look at ls

Simply type “ls” will list names of files under current
directory
[zhang@storm Demo]$ ls
CCodes README SampleCodes ShellScriptes
 By default, files are listed in alphabetic order
 Files with names starting with “.” is not listed

ls <pathname>

If <pathname> is a directory name, list files under the
directory
Change ls behavior using flags

To list “hidden” files
[zhang@storm Demo]$ ls -a
. .. CCodes .HiddenFile README SampleCodes ShellScriptes

To list files in the order of modification time (most recent
first)
[zhang@storm Demo]$ ls -t
README ShellScriptes CCodes SampleCodes
Long listing

To get more information about each file
[zhang@storm Demo]$ ls -al
Total disc space taken in blocks (1024 Byte)
total 32
drwxr-xr-x 5 zhang staff 4096 2008-01-16 16:01 .
drwxr-xr-x 41 zhang staff 4096 2008-01-16 16:01 ..
drwxr-xr-x 2 zhang staff 4096 2008-01-16 15:55 CCodes
-rw-r--r-- 1 zhang staff 38 2008-01-16 16:01 .HiddenFile
-rw-r--r-- 1 zhang staff 53 2008-01-16 15:57 README
drwxr-xr-x 2 zhang staff 4096 2008-01-16 15:55 SampleCodes
drwxr-xr-x 4 zhang staff 4096 2008-01-16 15:56 ShellScriptes
d means
directory
User name of the owner and its group
Who has permission to read/write the file
File permissions

Each file is associated with permission info.


Differentiate three type of users: owner user, user from same
group as owner, others
Three type of access




Read (r): use “cat” to open a file to read, use “ls” to list
files/directories under a directory
Write (w): modify the contents of the file
Execute (x): run the file, or “cd” to the directory
Trying to snoop into other’s directory
[zhang@storm ~]$ ls ../roche/
ls: cannot open directory ../roche/: Permission denied
What’s in a file ?

So far, we learnt that files are organized in a hierarchical
directory structure


Contents of file:




Each file has a name, resides under a directory, is associated
with some admin info (permission, owner)
Text (ASCII) file (such as your C/C++ source code)
Executable file (commands)
A link to other files, …
To check the type of file: “file <filename>”
Display a text file


cat: concatenate input files
more, less: display a file in screen by screen



Go forward using PgDn, Return key
less: can go forward or backward
head, tail: display the first/last 10 lines of a file

head -20 <filename>: display first 20 lines
Some useful file related utilities

Counting # of lines, words and characters in files


To search files for lines that match a pattern




wc
grep “global warming” articles
grep “traditional medicine” articles
-v option: lines that don’t match the pattern
Where did I define/access a variable named
gNumOfOperations ?

grep gNumOfOperations *.[ch]
Sort command


Sort the input into alphabetical order line by line
Many options to control sorting order




-r: reverse the normal order
-n: sort in numeric order
-nr: sort in reverse numeric order
+n: sort starting at n+1-th field
Compare file contents

Suppose you carefully maintain diff. versions of your
projects (so that you can undo some changes), and want
to check what’s the difference.


cmp file1 file2: finds the first place where two files differ (in
terms of line and character)
diff file1 file2: reports all lines that are different
Standard Input/Output
25
Standard input/output/error
• For each program, three special files are
automatically created/opened
• By default, all three are set to the terminals
• In C++, cin, cout, cerr
• In C, extern FILE *stderr, *stdin, *stdout;
1
0
2
Simple example

A very simple C program
#include <stdio.h>
main() {
char yourName[256];
printf ("Your name ?\n");
if (fgets (yourName,256,stdin)==NULL)
fprintf (stderr,"No input");
else
printf("hello, %s\n", yourName);
}
Examples

Many Linux prog. reads input from keyboard and writes
output to the screen


Command “sort”: read lines from terminal (until Ctrl-D), sorts
them and writes to the screen
Very flexible when combined with redirection and pipes
28
Redirect input/output/error

Redirect output to a file:




Redirect error output:



cat tmpfile1 tmpfile2 > newfile
cat tmpfile1 > newfile
cat tmpfile2 >> newfile: append output to the file given
cat tmpfile 2>error_out.txt
Redirect input: cat < tmpfile1 > newfile
Note: syntax is different under different shells
29
More on redirection

To capture both output and error to same file:




./a.out < tt > dd 2> dd : does not work. Error output is not
captured.
./a.out < tt > dd 2>&1
./a.out < tt 2>dd >&2
To discard output, redirect it to /dev/null


/dev/null: a special virtual file, “a black hole”
./a.out > /dev/null 2>&1
Combining commands together

How many files are there under current directory ?
ls > tmp
wc –l < tmp
rm tmp


Sort current online user by alphabetic order
Is some user login to the system now ? (using grep)
Pipe: getting rid of temporary file


Pipe: connect the output of one program to the input of
another program
Any prog. that reads from standard input can read from
pipe, similarly for the standard output


who am i | ./a.out | wc
knows nothing about redirection and pipe
Rule of composition


Pipe: one of the fundamental contributions of UNIX
system
Design programs to be connected with other
programs



Read/write simple, textual, stream-oriented formats
Read from standard input and write to standard output
Filter: program that takes a simple text stream on
input and process it into another simple text stream
on output
Command Pipeline: how ?

Pipe




an inter-process communication mechanism provided by
kernel
Has a reading end and a writing end
Any data write to writing end can be read back from the
reading end
Read/write pipe is no different from read/write files
Writing end
Reading end
The Power of Pipe

Who is using the most CPU ?

ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Command Pipeline: how ?*

Shell set things up

create a pipe, “start” two programs simultaneously, with their
input/output redirected to the reading/ending end of pipe
Process related commands
37
The workings of shell*


For each command line, shell creates new child process
to run the command
Sequential commands: e.g. date; who


Pipelined commands: e.g. ls –l | wc


Two commands are run in sequence
Two programs are load/execute simultaneously
Shell waits for the completion, and then display prompt to
get next command …
Run program in background

To start some time-consuming job, and go on to do
something else




wc ch * > wc.out &
Shell starts a process to run the command, and does not wait
for its completion (i.e., reads and parses next command)
Shell builtin command: wait
Kill a process: kill <processid>
ps command

To report a snapshot of current processes: ps


By default: report processes belonging to current user and
associated with same terminal as invoker.
Example:
[zhang@storm ~]$ ps
PID TTY
TIME CMD
15002 pts/2 00:00:00 bash
15535 pts/2 00:00:00 ps

List all processes: ps -e
BSD style output of ps
Learn more about the command, using man ps
[zhang@storm ~]$ ps axu
USER
PID %CPU %MEM VSZ RSS TTY
STAT START TIME COMMAND
root
1
0.0 0.0 2112 672 ?
Ss Jan17 0:11 init [3]
root
2
0.0 0.0
0
0?
S< Jan17 0:00 [kthreadd]
root
3
0.0 0.0
0
0?
S< Jan17 0:00 [migration/0]
root
4
0.0 0.0
0
0?
S< Jan17 0:00 [ksoftirqd/0]
root
5
0.0 0.0
0
0?
S< Jan17 0:00 [watchdog/0]
root
6
0.0 0.0
0
0?
S< Jan17 0:00 [migration/1]
root
7
0.0 0.0
0
0?
S< Jan17 0:00 [ksoftirqd/1]
root
8
0.0 0.0
0
0?
S< Jan17 0:00 [watchdog/1]
root
9
0.0 0.0
0
0?
S< Jan17 0:00 [migration/2]
Some useful commands

To let process keep running even after you log off (no
hangup)



To run your program with low priority


Nohup <command> &
Output will be saved in nohup.out
nice <command> &
To start program at specified time (e.g. midnight)

at 2am < file_containing_programs
Other useful commands
43
Getting help

To check online manual for a command or a library call



man ls, or man fopen
Use PgUp,PgDn, Up Arrow, Down Arrow, Return to move
around
GNU’s official documentation format: TexInfo

Use “info ls” for additional description about “ls”
Misc. Commands

Send a file to the printer:



who: who are logged in the system ?


lpr <fileName>
The file should be of format that the printer recognizes, e.g.,
text file, postscript file (.ps)!
who –a, or who am i
which: show the full path of a command

which bash