1.Unix Shell
(1) Bourne shell (sh)是標準的UNIX shell, 用于管理系統. 很多系統管理的腳本。例如rc start和stop腳本以及shutdown 是Bourne shell 腳本;缺省的Bourne shell 表示為($)
(2) C shell (csh)是伯克利開發的,增加了很多新的特征, 例如command-line history, aliasing, built-in arithmetic, filename completion, and job control. Bourne shell 腳本快于和簡單于C shell. 缺省C shell 表示為(%)
(3) Korn shell是Bourne shell的超集. Korn shell 增強的特征有editable history, aliases, functions, regular expression wildcards, built-in arithmetic, job control, coprocessing, and special debugging features. Bourne shell is 完全向上兼容Korn shell,q缺省的Korn shell提示符是 ($)
2.Shell的職責是:
(1)讀入輸入和解析命令行
(2)計算特殊字符,例如wildcards和歷史字符
(3)建立管道,重定向和后臺處理
(4)處理信號
(5)建立可執行程序
3.Shell命令執行圖:
4.系統啟動和登錄Shell
啟動系統->>調用init->>分配PID=1->>打開終端線->>建立stdin,stdout和stderr->>輸入login name,->>輸入password->> /bin/login通過passwd文件驗證你的密碼.如果login驗證成功,則會開始建立初始環境 HOME, SHELL, USER, 和 LOGNAME 是從passwd中抽取的變量值. HOME變量指定你的home目錄, SHELL指定登錄shell的名稱,它是passwd文件的最后一個入口. USER 和 LOGNAME 變量指定你的登錄名. ->>執行passwd文件中的最后一個入口程序. 通常這個程序就是shell. 如果passwd文件中的最后一個程序是 /bin/csh, C shell被執行,如果是 /bin/bash 或者null, Bash shell執行. 如果是 /bin/ksh 或者 /bin/pdksh, Korn shell 被執行. ->>檢查系統初始化文件建立->>檢查登錄目錄下的初始化文件. ->>等待用戶輸入。
4.1解析命令行的過程:
(1)執行歷史記錄替換
(2)命名行被分割成符合或者字
(3)更新歷史記錄
(4)處理引用
(5)別名替換和定義函數
(6)建立重定向,后臺和管道
(7)執行變量($user, $name, etc.) 替換
(8)執行命令替換
(9)文件名替換,調用globbing (cat abc.??, rm *.c, etc.)
(10)執行命令
4.2命令的類型
(1)別名
(2)關鍵字
(3)函數
(4)內建命令
(5)可執行命令
5.進程和Shell
5.1查看進程
$ ps aux (BSD/Linux ps) (use ps -ef for SVR4)
$ pstree
6.環境和繼承
1 $ id
uid=502(ellie) gid=502(ellie)
查看用戶的標識user identification (UID), group identifications (GID),
6.3修改文件許可
chmod
Permission Modes
Decimal |
Binary |
Permissions |
---|---|---|
0 |
000 |
none |
1 |
001 |
--x |
2 |
010 |
-w- |
3 |
011 |
-wx |
4 |
100 |
r-- |
5 |
101 |
r-x |
6 |
110 |
rw- |
7 |
111 |
rwx |
1 $ chmod 755 file
$ ls –l file
–rwxr–xr–x 1 ellie 0 Mar 7 12:52 file
2 $ chmod g+w file
$ ls -l file
–rwxrwxr-x 1 ellie 0 Mar 7 12:54 file
3 $ chmod go-rx file
$ ls -l file
–rwx-w---- 1 ellie 0 Mar 7 12:56 file
4 $ chmod a=r file
$ ls -l file
–r--r--r-- 1 ellie 0 Mar 7 12:59 file
chown改變文件和目錄的所有屬性
1 $ ls -l filetest
-rw-rw-r-- 1 ellie ellie 0 Jan 10 12:19 filetest
6.4工作目錄
1 > cd /
2 > pwd
/
3 > bash
4 $ cd /home
5 $ pwd
/home
6 $ exit
7 > pwd
/
>
6.5查看變量
$ env
6.6重定向和管道
重定向
1 $ who > file
2 $ cat file1 file2 >> file3
3 $ mail tom < file
4 $ find / -name file -print 2> errors
5 % ( find / -name file -print > /dev/tty) >& errors
管道
|
who | wc
6.7Shell和信號
標準信號
Number |
Name |
Description |
Action |
---|---|---|---|
0 |
EXIT |
Shell exits |
Termination |
1 |
SIGHUP |
Terminal has disconnected |
Termination |
2 |
SIGINT |
User presses Ctrl-C |
Termination |
3 |
SIGQUIT |
User presses Ctrl-\ |
Termination |
4 |
SIGILL |
Illegal hardware instruction |
Program error |
5 |
SIGTRAP |
Produced by debugger |
Program error |
8 |
SIGFPE |
Arithmetic error; e.g., division by zero |
Program error |
9 |
SIGKILL |
Cannot be caught or ignored |
Termination |