- echo --- Display a line of text 顯示一列文字
- clear --- Clear the screen清除螢幕
- history --- Display the contents of the history list顯示記錄清單的內容
- id --- Display user identity顯示使用者識別碼
- chmod --- Change a file's mode變更檔案模式
- umask --- Set the default file permissions設定檔案的預設權限
- su --- Shell Run a shell as another user以另個使用者身份執行
- sudo --- Execute a command as another user以另個使用者身份執行命令
- chown --- Change a file's owner變更檔案的所有者
- chgrp --- Change a file's group ownership變更檔案的群組所有者
- passwd --- Change a user's password變更使用者的密碼
- ps --- Report a snapshot of current processes回報常下程序的快照
- top --- Display tasks顯示任務
- jobs --- List active jobs列出活動中的工作
- bg --- Place a job in the background將工作置於背景作業
- fg --- Place a job in the foreground將工作置於前景作業
- kill --- Send a signal to a process傳送訊號給程序
- killall --- Kill processes by name以名稱刪除程序
- shutdown --- Shutdown or reboot the system關閉或重啟系統
- printenv --- Print part or all of the environment 列印環境的內容
- set --- Set shell options 設定shell選項
- alias --- Create an alias for a command新增命令的別名
- export --- Export environment to subsequently executed programs匯出環境內容,供後續的程式使用
- mount --- Mount a file system載入一個文件系統
- umount --- Unmount a file system卸載一個文件系統
- fsck --- Check and repair a file system檢查修復一個文件系統
- fdisk --- Partition table manipulator分區表控制器
- mkfs --- Create a file system創建文件系統
- fdformat --- Format a floppy disk格式化一張磁碟
- dd --- Write block oriented data directly to a device把一面向的數據寫入設備
- genisoimage --- Create an ISO 9660 image file創建一個ISO檔
- wodim --- Write data to optical storage media把資料存在光碟機(現在很少用)
- md5sum --- Calculate an MD5 checksum計算檢查碼
參考題目:
1. echo 的延展功用有哪些? 請舉例說明
- 延展路徑名稱Pathname Expansion --- 萬用字元的運作
- echo * --- 列出目錄內的所有檔案 (不會顯示隱藏檔案)
- echo .* --- 顯示隱藏檔案
- 延展波浪Tilde Expansion
- echo ~ --- 回至家目錄
- 延展算術Arithmetic Expansion
- echo $((4+4)) --- 運算數式
- 延展大括弧Brace Expansion --- 依大括弧內的模式,延展成多個字串
- echo {Z..A} --- 倒序排列字母
- 新增檔案或目錄之用
- 延展參數Parameter Expansion --- 把一小段資料以客製的名稱儲存起來,或許可以將這些 資料稱為變數,"USER" 變數的內容就是使用者名稱
- echo $USER --- 顯示現在的使用者名稱
- 替代命令Command Substitution
- echo $(ls)
ls -l $(which cp) --- 當做ls命令的參數,還可用管線
2. echo 在哪兩種情況下結果會直接省略出輸入的字元? 請舉例說明
用算數式顯示的東西是如何? 單引號、雙引號的功用? 請舉例說明
- echo 在哪兩種情況下結果會直接省略出輸入的字元?
- echo this is a test --- shell移除額外的空格
- echo The total is $100.00 --- shell看不懂參數"$1",直接移除它
- 為了使打出的文字在輸出結果顯示相同,需要借助引號
- 用算數式顯示的東西是如何?
- echo "$USER $((2+2)) $(cal)" --- 顯示使用者當下系統的當月日曆
- 單引號、雙引號的功用?
- 雙引號 --- 雙引號內的字元,就是字元,不會被shell解讀為特別的意思; 除了"$"、"\" (反斜線)、與"`" (反引號)。以雙引號可以使用含空格的檔名
- echo $(cal) --- 產生多個參數
- echo "$(cal)" --- 只有一個參數
- 單引號 --- 抑制所有的延展
- echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER --- 顯示檔案當前位置及計算結果
- echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" --- 顯示檔案及計算結果
- echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' --- 直接顯示輸入的文字內容
- 單引號及雙引號區別
- 在輸入需計算的數值後,單引號輸出會顯示輸入的計算過程,雙引號則是直接顯示計算結果
- 在變數的設定當中,雙引號仍然可以保有變數的內容,但單引號內僅能是一般字元 ,而不會有特殊符號
3. ls出來的檔案,權限為何?
檔案權限有哪幾種? 如何改變檔案權限? 如何改變身分?
- ls出來的檔案,權限為何?
- ls是『list』的意思,重點在顯示檔案的檔名與相關屬性
- ls -al --- 列出所有的檔案詳細的權限與屬性
- 在Unix的安全模式下,使用者擁有的檔案及目錄,就能夠控制它們的近用權
- 使用者可以屬於某群組,該群組可能有多個使用者,都能近用其檔案及目錄
- 檔案及目錄的擁有者可以授權所有人都能近用,Unix稱為world
- 檔案權限有哪幾種?
- 檔案的權限有三:讀、寫、執行
- 檔案類型權限 -rw-rw-r--
- 第一個字元是檔案屬性
屬性 |
檔案類型 |
- |
常態檔案 |
d |
目錄 |
l |
連結檔 |
c |
字元檔案 --- 裝置檔裡面的序列埠(處理位元組流量)設備 例如:終端機、數據機 (一次性讀取裝置) |
b |
區塊檔案 --- 裝置檔裡面的可供儲存的周邊(處理區塊資料)設備 例如:硬碟或CD-ROM (可隨機存取裝置) |
- 其他9個字元稱為檔案模型
- 以三個為一組,且均為『rwx』的三個參數的組合
Owner |
Group |
World |
rwx |
rwx |
rwx |
- [ r ]代表可讀read、[ w ]代表可寫(write)、[ x ]代表可執行(execute)
屬性 |
檔案 |
目錄 |
r |
允許打開及讀取 |
同時設定執行屬性,則可列出目錄的內容 |
w |
允許編寫或擷取, 但不能重新命名或刪除 由目錄屬性決定檔案的刪除及 重新命名權限 |
同時設定執行屬性, 則允許新增、刪除、重新命令 目錄內的檔案 |
x |
允許將檔案視為程式並執行
|
允許進入目錄 |
- 三個權限的位置不會改變,如果沒有權限,就會出現減號[ - ]
- 第一組Owner --- 檔案擁有者可具備的權限
- 第二組Group --- 加入此群組之帳號的權限
- 第三組 World --- 非本人且沒有加入本群組之其他帳號的權限
- 範例
- 常見檔案屬性
- 如何改變檔案權限?
- 只有檔案擁有者及超級使用者才有權以chmod變更檔案權限
- 權限的設定方法有兩種, 分別可以使用數字或者是符號來進行權限的變更
- 數字類型改變檔案權限 (8進位數字)
- 檔案的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限
- 範例
- 檔案的權限字元為:『-rwxrwxrwx』,使用數字來代表各個權限,各權限的分數對照表如下:r:4、w:2、x:1
→ 每種身份各自的三個權限分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:owner = rwx = 4+2+1 = 7、group = rwx = 4+2+1 = 7、others= --- = 0+0+0 = 0,設定權限的變更時,該檔案的權限數字就是770
- [me@linuxbox ~]$ ls -l foo.txt → 列出此檔案權限
-rw-rw-r-- 1 me me 0 2016-03-06 14:52 foo.txt
[me@linuxbox ~]$ chmod 600 foo.txt → 變更檔案權限
[me@linuxbox ~]$ ls -l foo.txt → 列出以變更檔案權限
-rw------- 1 me me 0 2016-03-06 14:52 foo.txt
- 符號類型改變檔案權限
- 九個權限分別是(1)user (2)group (3)others三種身份,藉由u, g, o來代表三種身份的權限,a 則代表 all 亦即全部的身份,讀寫的權限則寫成r, w, x
符號 |
意義 |
u |
檔案與目錄的擁有者 |
g |
群組擁有者 |
o |
其他非擁有者 |
a |
全部身份 |
chmod |
|
+ (新增) - (移除) = (特定) |
|
檔案或目錄 |
- 範例:
- [root@study ~]# chmod u=rwx,go=rx .bashrc → 改變檔案權限
[root@study ~]# ls -al .bashrc → 列出變更檔案權限
-rwxr-xr-x. 1 root root 176 Dec 292013 .bashrc
- user (u):具有可讀、可寫、可執行的權限
- group 與 others (g/o):具有可讀與執行的權限
- 如何改變身分?
- 有三種方式改變身分:
- 登出,再以另個身份登入
- 使用su命令 --- 讓使用者在新的shell或以該使用者之名,執行該使用者的命令
- 使用sudo命令 --- 允許管理者設定/etc/sudoers組態檔,允許特定使用者在其他身份執行命令
4. 有哪些指令可檢視電腦當前的程序? 如何關閉系統?
- 有哪些指令可檢視電腦當前的程序?
- ps --- 將某個時間點的程序運作情況擷取下來 (只顯示機器瞬間的狀態)
- top --- 動態觀察程序的變化
- 預設每三秒鐘更新一次
- 顯示兩個部份:上方的系統摘要,以及依CPU活動排序的程序
- 如何關閉系統?
- 關閉系統的程序包括依序終止系統上的程序,以及處理若干重要的日常瑣事,才能關閉電源。
- halt、poweroff、reboot、及shutdown,前三個命令用不到選項或參數
- Shutdown --- 可以指定三種動作(暫停、關機、或重開機)
- shutdown -h now --- 立即關機
- shutdown -h 21:30 --- 指定時間關機
- shutdown -r now --- 重開機
5. 哪些指令可檢視環境? 環境變數有哪些?
- 哪些指令可檢視環境?
- 可用bash內建的set命令或printenv程式檢查環境的內容
- set命令同時顯示shell及環境變數
- set | less → 列出所有shell、環境變數及內容
- printenv只顯示環境變數
- printenv | less → 列出所有環境變數及內容
- 列出指定的變數值:printenv USER → me
- echo 查看變數的內容
- echo $HOME → /home/me
- 別名無法以set或printenv查看,只能用alias命令查看
- 環境變數有哪些?
6. 為何要學vi? vi的模式有幾種? 如何切換及移動游標? 如何用vi編輯檔案?
- 為何要學vi?
- vi隨時可用:在沒有圖形介面的情況下,vi可說是最後的稻草,所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在 Ex: nano還不普及
- 很多個別軟體的編輯介面都會主動呼叫 vi
- vi輕量且快速:因為程式簡單,編輯速度相當快速,容易找到快速啟動,沒有選單也 不需等待載入幾個 MB
- vi的模式有幾種? 如何切換及移動游標?
- vi 共分為三種模式,分別是『一般指令模式』、『編輯模式』與『指令列命令模式』
- 一般指令模式 --- 預設模式
- 使用『上下左右』按鍵來移動游標
- 使用『刪除字元』或『刪除整列』來處理檔案內容
- 使用『複製、貼上』來處理文件資料
- 編輯模式 ---
- 按下『i, I, o, O, a, A, r, R』等任何一個字母,才會進入編輯模式
- 左下方會出現『 INSERT 或 REPLACE 』的字樣,此時才可以進行編輯
- 按下『Esc』即可退出編輯模式
- 指令列命令模式 ---
- 輸入『 : / ? 』三個中的任何一個按鈕,就可以將游標移動到最底下那一列
- 提供『搜尋資料』的動作
- 可進行讀取、存檔、大量取代字元、離開 vi 、顯示行號的動作
- 一般指令模式可與編輯模式及指令列模式切換; 但編輯模式與指令列模式之間不可互相切換
- 一般指令模式切換到編輯模式
進入插入或取代的編輯模式 |
|
i, I插入模式 |
i :從目前游標所在處插入 I :在目前所在列的第一個非空白字元處開始插入 |
a, A插入模式 |
a:從目前游標所在的下一個字元處開始插入 A:從游標所在列的最後一個字元處開始插入 |
o, O插入模式 |
o:在目前游標所在的下一列處插入新的一列 O:在目前游標所在處的上一列插入新的一列 |
r, R取代模式 |
r:只會取代游標所在的那一個字元一次 R:會一直取代游標所在的文字,直到按下 ESC 為止 |
[Esc] |
退出編輯模式,回到一般指令模式中 |
- 一般指令模式切換到指令列模式
指令列模式的儲存、離開等指令 |
|
:w 儲存 |
將編輯的資料寫入硬碟檔案中 |
:q 離開 |
離開 vi |
:wq |
儲存後離開 |
ZZ |
儲存後離開 |
- 一般指令模式 --- 游標移動、刪除、複製
移動游標的方法 |
|
h 或 向左方向鍵(←) |
游標向左移動一個字元 |
l 或 向右方向鍵(→) |
游標向右移動一個字元 |
j 或 向下方向鍵(↓) |
游標向下移動一個字元 |
k 或 向上方向鍵(↑) |
游標向上移動一個字元 |
[Ctrl] + [f] |
螢幕『向下』移動一頁,相當於 [Page Down]按鍵 |
[Ctrl] + [b] |
螢幕『向上』移動一頁,相當於 [Page Up] 按鍵 |
0 或功能鍵[Home] |
移動到這一列的最前面字元處 |
$ 或功能鍵[End] |
移動到這一列的最後面字元處 |
|
移動到這個檔案的最後一列 |
nG |
n 為數字。移動到這個檔案的第 n 列 |
n<Enter> |
n 為數字。游標向下移動 n 列 |
刪除及複製方法 |
|
x, X |
x:向後刪除一個字元 (相當於 [del] ) X:向前刪除一個字元 (相當於 [backspace] ) |
dd |
刪除游標所在的那一整列 |
ndd |
n 為數字。刪除游標所在的向下 n 列 |
yy |
複製游標所在的那一列 |
nyy |
n 為數字。複製游標所在的向下 n 列 |
- 如何用vi建立及編輯檔案?
- 使用 vi 來建立一個名為 404040456.txt 的檔案:
- 輸入vi404040456.txt進入一般指令模式
- 按下 i 進入編輯模式,開始編輯文字
- 按下 [ESC] 按鈕回到一般指令模式
- 進入指令列模式,檔案儲存並離開 vi 環境
7. 如何客製化提示符號?
- 提示符號可以透過 PS1 這個環境變數來設定
- 設計提示符號
- 查看ps1_old變數的內容: echo $ps1_old → [\u@\h \W]\$
- PS1= → 什麼都沒有,只有游標
- 加入提示符號,可加入特殊字元;
- 添加鈴聲:$ PS1="\[\a\]\$ "
- 加入資訊性的提示符號,主機名稱及時間 :$ PS1="\A \h \$ " 17:33 linuxbox $
- 字元本身及背景的顏色設計
1. PS1="\[\033[0;31m\]<\u@\h \W>\$ " → 紅色的提示符號
<me@linuxbox ~>$
2. PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] " → 紅色背景的提示符號
<me@linuxbox ~>$
- 常見提示符號字串內容
8. 套件工具類型分為哪幾種? 兩種套件分別執行的工作有哪些?
- 套件工具類型分為哪幾種?
- 套件管理系統有兩種工具:
- 低階工具:安裝及移除套件 ex: dpkg (Debian)
- 高階工具:搜尋元資料及解決相依問題 ex: apt-get, aptitude (Debian)
- 兩種套件分別執行的工作有哪些?
- 高階工具
- 以高階工具搜尋典藏所元資料--- apt-get update, apt-cache serach search_string
- 使用高階工具從典藏所以完整的相依性方案下載並安裝套件--- apt-get update, apt-get install package_string
- 移除套件 --- apt-get remove package_name
- 更新套件--- apt-get update; apt-get upgrade
- 套件資訊命令--- apt-cache show package_name
- 低階工具
- 套件安裝 (未經相依性驗證) --- dpkg --install package_file
- 移除套件
- 更新套件 (從其他地方下載更新後的套件,可以直接安裝,取代舊的版本)--- dpkg --install package_file
- 列出已安裝套件 --- dpkg –list
- 套件狀態命令--- dpkg --status package_name
- 套件檔案識別命令--- dpkg --search file_name
9. 硬體如何掛載、卸載及格式化?
- 掛載、卸載及格式化
- 插入USB,終端機輸入[me@linuxbox ~]$ mount → 查看目前掛載的檔案
- 會看到/dev/sde1 → 表示USB以掛載至電腦中
- 切換使用者,並輸入密碼,再輸入[root@linuxbox ~]# umount /dev/ sde1卸載
- [me@linuxbox ~]$ sudo mkfs -t vfat /dev/sde 1→ 格式化清空 或是 [me@linuxbox ~]$ sudo mkfs -t ext3 /dev/sdb1 → 格式化清空