台灣大學計算機及資訊網路中心 教學研究組 張傑生 jsc@ccms.ntu.edu.tw UNIX 入門與介紹 台灣大學計算機及資訊網路中心 教學研究組 張傑生 jsc@ccms.ntu.edu.tw
UNIX系統沿革及版本 1969 AT&T Bell Lab 1976 Bell V6 1977 Berkley(BSD) 1979 AT&T USG 1979 Bell 4.4BSD V5
時程表 UNIX基本概念 UNIX常用指令簡介
UNIX的特性 DOS使用者眼中的UNIX
UNIX的特性 應用程式無大小限制 具有虛擬記憶體 多工系統 本身已有網路能力 擴充性強
DOS使用者眼中的UNIX(一) 類似的操作介面 MS-DOS 以輸入文字命令給電腦的方式來操縱電腦 電腦的回應以文字訊息顯示在螢幕上 MS-DOS Command: COPY FILE2 FILE2 Response: 1 file(s) copied UNIX Command: cp file1 file2 Response:
DOS使用者眼中的UNIX(二) 類似的樹狀結構 以階層式的目錄及檔案來儲存資料 ID、所有者和群的概念-用以分辨檔案 的所有者 USERNAEM/UID -- 使用者名稱及 代號 OWNER -- 檔案的所有者 GROUP/GID -- 群組及群組代號 OTHER -- 除OWNER及GROUP外的其他人
DOS的樹狀結構 root dos utility ndd pe2 pe2.exe ...... pe2.pro work ...... windows et3 ......
UNIX的樹狀結構(一) root usr local etc bin cat bin ...... cp ls users chen claven Mail tmp ...... project ...... ......
UNIX的樹狀結構(二) / (root) -UNIX 檔案系統的最頂層 /bin-UNIX 基本指令 /etc-UNIX 系統檔案及系統基本資料 /tmp-暫時檔案存放區 /usr-放 UNIX 各式命令、程式庫、說明 /usr/local/bin-各種工具 ~ (Home Directory)-使用者個人目錄
進入與離開UNIX系統 UNIX命令格式 線上查詢相關指令 檔案與目錄相關指令 列印檔案 轉向 Job與Process的控制
進入與離開UNIX系統 連上欲進入的系統 進入UNIX系統 (Login步驟) 離開UNIX系統 (Logout)步驟 telnet <hostname> (或其他連線程式) login: 輸入username password: 輸入密碼 (密碼不會顯示在螢幕上) %logout (exit或CTRL/D)
UNIX命令格式 在UNIX中大小寫代表不同意義 command [option(s)] [filename(s)] option:使command更富有變化 [-<char(s)>] filename(s):指令要處理的對象 若在一行上有多個指令,指令間需加 ; ls /etc/csh.cshrc --> 只列出檔名 ls -lF /etc/csh.cshrc --> 列出所有資訊
線上查詢相關指令(一) man : 線上查詢各個指令的用法 man -k <Keyword> :查詢所有與<Keyword> 有關的指令 which <command(s)> : 由 ~/.cshrc 中設定的 path 找尋<command(s)> 存放的目錄 man man man ls man -k editor which joe
線上查詢相關指令(二) who : 查詢目前上機的使用者及 login 的時間 w : 查詢目前上機的使用者之工作狀態 date : 顯示目前之日期及時間
who and w % who u7916521 ttyp0 Aug 12 18:12 (lena) % w 8:03pm up 1 day, 5:25, 8 users, load averages: 5,5,5 User tty login@ idle JCPU PCPU what u7923015 ttyp0 6:13pm 2 67:20 44:00 -csh CPU Time of All Process CPU Time of Current Process Name of Current Process
檔案與目錄(一) 檔案:用以存放程式或資料,可分為執行程式檔、資料檔、文字檔、周邊設備及目錄檔等 目錄:用以有系統管理檔案,內含其他目錄及檔案 萬用字元:*(任何字串)、?(任一字元) 路徑:指向某一檔案的走訪路程 絕對路徑:由根目錄往下找 相對路徑:由現在的工作目錄為起點 各階層目錄名以 / 分開
檔案與目錄(二) root usr local etc bin cat bin ...... cp ls users chen Mail claven tmp ...... ...... ...... 現在目錄為 /users/claven ls之絕對路徑 :/usr/bin/ls ls之相對路徑 :../../usr/bin . : 現在目錄 .. :上一層目錄 ~ : Home Directory
檔案與目錄之相關指令(一) pwd : 查詢目前所在之目錄名稱 ls <dir(s)/file(s)> : 列出(目錄內)檔案資訊 ls : 只列出檔名 ls -a : 列出所有檔案,包含以 . 開頭的檔案 ls -l : 列出檔案資訊 mkdir <dir(s)> : 建立新目錄 cd <dir> : 改變工作目錄 cd (或 cd ~) : 回到 Home Directory mkdir project cd project ---> pwd cd ---> pwd
ls -l 所顯示之資訊 d rwxrwxr-x 2 tstl 24 Oct 14 10:32 test - rw-rw-r-- 1 tstl 98 Oct 12 19:23 a t rwxrwxrwx links owner size date time filename 鏈結數 最近修改日期時間 File Type d : 目錄 - : 普通檔 c/b: 周邊 l : 鏈結檔 s : Socket 使用權限 分 Owner、 Group 及Others r : 可讀 w: 可寫 x: 可執行 -: 無
實習 pwd ls -al cd /etc ls -a cd cd project
檔案與目錄之相關指令(二) cp <原始檔/目錄> <目的檔/目錄> : 複製檔案或目錄 cp -r : 遞迴複製所有子目錄 cat <file(s)> : 顯示檔案內容 more <file(s)> : 一次以一個螢幕顯示檔案內容 rm <file(s)> : 刪除檔案 rm -r <dir(s)> : 刪除目錄及其下所有檔案、子目錄 cp ~/.cshrc . ----> ls -l cat .cshrc ----> more .cshrc rm .cshrc ----> ls -l
檔案與目錄之相關指令(三) mv <file> <target>: 移動檔案 mv filea fileb : 將 filea 更名為 fileb mv filea dirb : 將filea 搬到 dirb 目錄下 mv filea dirb/filec : 搬移並更名 mv dir1 dir2 : 若dir2存在,將dir1搬到dir2;否則將dir1 更名為 dir2 rmdir <dir> : 刪除目錄(目錄內必須無檔案)
實習 cd ~/project cp /etc/host* . mv hosts .. ls -al ~ mv ../hosts ./hostname cd .. mv project proj mkdir project mv proj project
改變檔案或目錄的使用權限 chmod <access> <file/dir> <access> 為三個八進位的數字,分別代表 user, group, other 的使用權限 以8進位代表權限 (r = 4, w = 2, x = 1) chmod [who|op|access] <file/dir> who : user = u, group = g, other = o, all = a op : add = +, remove = - , assign = = access : read=r, write = w; execute = x chmod 755 test chmod o-r test chmod u+rw test
目錄或檔案的使用權限 User rwx 421 Group rwx 421 Other rwx 421 rwx 421 r-x 401 400 7 5 4
實習 cd ~/project/proj ls -l hostname chmod 600 hostname chmod go+r hostname chmod u+x hostname
轉向(一)--輸出轉向 輸出轉向 ls -l ls -l > list cat list command > file1 : 將command 的輸出送往 file1,file1原先的內容消失 command >> file1 : 將command 的輸出附加在 file1 的尾端 ls -l ls -l > list cat list
轉向(二)--輸入轉向及PIPE 輸入轉向 PIPE command1 | command2 [|command]* command < file1 : 將file1 的內容作為 command 的輸入 PIPE command1 | command2 [|command]* 將command1的輸出作為command2的輸入 cat > source sort < source ls -l | more
實習 cat > source 1 3 5 2 4 ^D cat source sort < source sort < source > dest cat dest
前景與背景 Job 顯示提示符號 讀取命令 處理命令 執行命令 命令解譯迴圈 shell 前景 job:依前述命令迴圈執行之 job 要執行很久又不會用到終端機輸出入的命令最適合 在背景執行 command &
暫停/回復Job的執行 在 job 執行時按下Ctrl-Z 便會使該 job 的執行暫停 jobs : 觀看目前所有背景 job fg %jid : 將編號為 %jid 之job前景執行 bg %jid : 將編號為 %jid 之job背景執行 ls -l /etc | more <--- 按 Ctrl-Z ls -l /bin | more <--- 按 Ctrl-Z jobs fg %1
Process 的控制 Process : 一個執行中的程式 ps : 列出Process 狀態 BSD: SYSTEM V: ps -a : 列出系統中所有 Process ps -u : 列出 Process 的執行者及其他資訊 SYSTEM V: ps -e : 列出系統中所有 Process ps -f : 列出完整資料 kill -9 PID : 不再執行編號為 PID 的 Process
實習 ls -l /etc | more CTRL-Z jobs ps -u kill -9 <PID of ls -l /etc | more>