跳轉到內容

Unix 指南/解釋/Shell 提示符

來自華夏公益教科書,開放書籍,開放世界

shell 提示符(或命令列)是使用者輸入命令的地方。 當透過基於文字的終端訪問系統時,shell 是訪問程式和在系統上執行操作的主要方式。實際上,它是圍繞所有正在執行的程式的外殼。當透過圖形環境(如 X11)訪問系統時,仍然可以開啟一個終端模擬器,並使用 shell 完成有用的工作。

本章描述如何找到 shell 提示符並開始使用它。


Clipboard

待辦事項


找到 shell 提示符

[編輯 | 編輯原始碼]

人們透過不同的方式獲得 shell 提示符,例如

  • 他們使用圖形環境(如 Aqua、GNOME 或 KDE)和終端模擬器。
  • 他們不使用 GUI,而是簡單地使用 TTY 裝置;有時也使用 GUI,並使用 Ctrl+Alt+F[數字](大多數 GNU/Linux 系統允許 1–6 用於 [數字])進入 TTY 裝置。要返回到 X Window 系統,請使用 Ctrl+Alt+F[高於 TTY 裝置數量的數字 1]。

使用 TTY 裝置

[編輯 | 編輯原始碼]

Unix 系統可以使用 TTY 裝置來執行 shell。第一行看起來像

login:

在此提示符下輸入使用者名稱,然後輸入密碼。這將提供一個 shell。

開啟終端模擬器

[編輯 | 編輯原始碼]

終端模擬器(或控制檯模擬器)是一個模擬早期使用者傳統上用來登入 Unix 的終端硬體的程式。它在圖形環境中顯示為一個視窗,並允許訪問 shell 提示符。

有幾種方法可以開啟終端模擬器

  • 使用 X Window 系統,請嘗試 xterm。大多數設定在您登入時要麼為您啟動一個或兩個 xterm,要麼提供一個選單供您啟動 xterm。
    • KDE 提供一個 終端程式 (Konsole)。您可以在 K 選單 > 系統選單中找到它。如果您右鍵單擊圖示面板的空白部分,可以新增一個用於終端的應用程式按鈕。
    • GNOME 在 程式 選單中的某個地方提供終端模擬器。
    • LXDE 提供終端模擬器 LXTerminal(至少在 Lubuntu 發行版中)。它可以在啟動選單的 Accesories 子選單中找到,通常位於桌面的左下角。
    • 使用 Enlightenment 17,右鍵單擊桌面,然後轉到 Enlightenment > Eterm。
  • 在 Mac OS X 上,請使用/Applications/Utilities/Terminal. 也就是說,轉到硬碟上的 Applications 資料夾,然後轉到其中的 Utilities 資料夾,雙擊 Terminal 程式的圖示。您可能希望將 Terminal 圖示保留在 Dock 上。

大多數終端模擬器(與其他圖形程式一樣)提供一個選單欄來配置終端。例如,它們允許您更改字型和顏色;有些人更喜歡黑色背景上的白色文字。xterm 更難配置;其選單可以透過按住 Control 鍵並使用三個滑鼠按鈕中的每一個進行點選來找到。

使用 SSH 訪問遠端 shell

[編輯 | 編輯原始碼]

ssh 程式是連線到遠端伺服器上的 shell 帳戶的安全方法。伺服器必須執行 sshd 伺服器軟體才能接受連線。請參閱有關 連線到遠端 Unix 的章節。

提示符的外觀

[編輯 | 編輯原始碼]

shell 提示符通常以 $ 符號結尾。為簡單起見,本書中的示例使用如下 shell 提示符

$

一些較舊的 shell 提示符以 % 結尾

%

C shell 有時使用 > 結尾

>

許多 shell 具有提供更多資訊的提示符,例如

localhost:puffy {1}

您也可以自定義 shell 提示符。對於 bash,請在 $PS[1–4] 變數中使用 這些 特殊字元。$PS1 是您通常看到的提示符,$PS2 是在使用反斜槓 ('\') 執行多行命令時看到的提示符。有關更多資訊,請參閱 手冊

永遠不要複製/輸入本書中使用的 shell 提示符。shell 始終會在準備接受命令時為您提供提示符。

Root shell 提示符

[編輯 | 編輯原始碼]

如果您 成為 root 或以 root 身份登入,大多數系統會將 shell 提示符更改為以 # 結尾。root 帳戶被允許執行任何操作(刪除或更改任何檔案),因此 # 是提醒使用者提示符強大功能的標誌。除非必要,請避免使用 # 提示符;請參閱有關 成為 Root 的章節。在本書中,root shell 提示符如下所示

#

使用 shell 的基本知識

[編輯 | 編輯原始碼]

引數和選項

[編輯 | 編輯原始碼]

輸入命令時,shell 會按以下順序執行一些操作(如果成功,它將執行找到的命令)

  1. shell 檢查命令是否為絕對路徑(如 /bin/ls),以及該路徑是否為可執行檔案。
  2. 如果命令不是絕對路徑,則 shell
    1. 在它的內建命令中搜索輸入的命令。
    2. 環境變數 PATH 中的目錄中搜索輸入的命令。它從 PATH 中列出的第一個目錄開始搜尋,然後是第二個,依此類推。

例如,我們將使用命令 ls,它列出檔案和目錄。此命令列出/var(這在您的計算機上可能有所不同)的內容

$ ls /var
account backups db      lib     msgs    run     tmp
audit   crash   empty   log     named   rwho    www
authpf  cron    games   mail    quotas  spool   yp

第一個詞“ls”是內置於 shell 中用於執行的程式或命令的名稱。在本例中,程式 /bin/ls 將被執行。在這種情況下,“/var”是一個引數;它告訴 ls 要列出什麼。引數由空格分隔,通常是一個空格。

有一些稱為選項的特殊引數。每個命令都會決定什麼是選項,但對於許多命令,以單個連字元開頭的選項通常是更具描述性的選項的縮寫,更具描述性的選項以兩個連字元開頭,並且有些以兩個連字元開頭的選項沒有縮寫。以下是一個示例(將其讀作“el es dash el slash var”)

$ ls -l /var
drwxr-xr-x   2 root    wheel      512 Mar 20  2005 account
drwxrws---   2 root    wheel      512 Mar 20  2005 audit
drwxrwx---   2 root    authpf     512 Mar 20  2005 authpf
...
drwxr-xr-x   2 root    wheel      512 Jun 11 02:09 yp

請注意,這些命令要求選項位於其他引數之前。例如,以下方法不起作用(除非您有一個名為-l):

$ ls /var -l
ls: -l: No such file or directory
/var:
account backups db      lib     msgs    run     tmp
audit   crash   empty   log     named   rwho    www
authpf  cron    games   mail    quotas  spool   yp

的檔案或目錄)ls /var -lls -l /var相同。這對忘記輸入某些選項的使用者來說很好。

如果真的存在名為“-l”的檔案怎麼辦?然後必須指定“-l”不是一個選項。為此,可以使用“--”引數,它表示“選項結束”。這就是為什麼檔名以連字元開頭不方便的原因。

$ ls -- -l
-l

編輯命令

[編輯 | 編輯原始碼]

如果 shell 支援命令列編輯,則箭頭、End 和 Home 鍵很有用。左右箭頭允許使用者移動文字游標以編輯命令,而 Home 和 End 鍵允許使用者將游標移動到行首或行尾。例如,我們想列出一些特定的檔案,如下所示

$ ls -l /etc/passwd /etc/profile

但我們輸入了

$ ls l- /etc/passwd /etc/profile

我們可以按下 Home 鍵將游標移動到行首,然後使用右箭頭將游標向右移動以刪除 "-l"。之後,我們按下回車鍵以正常執行命令。(這在許多沒有命令列編輯功能的非 shell 程式中不起作用!)

具有歷史功能的 shell 允許使用向上箭頭將以前的命令調回到 shell 提示符。除非使用者按下回車鍵,否則這些先前行不會再次執行。向下箭頭將返回列表中的下一行。

如果箭頭鍵壞了,或者您確實找到了一些沒有箭頭的鍵盤,那麼大多數 shell 中也支援 Control Emacs 導航鍵(Ctrl+B、Ctrl+F、Ctrl+P、Ctrl+N、Ctrl+E 和 Ctrl+A)。

當前工作目錄

[編輯 | 編輯原始碼]

使用 cd 更改您所在的目錄。語法是 cd 後面跟著路徑名。cd bin 將帶您到 bin 目錄(位於您當前所在的目錄中),cd .. 將帶您向上一個級別。cd ~ 將帶您到您的主目錄,cd ~ 後面跟著使用者名稱將帶您到該使用者的家目錄。

雖然許多 shell 提示符在提示符中包含當前目錄的名稱或當前目錄名稱的末尾(例如 '[user@localhost ~]$'),但您可以使用 pwd 命令來列印工作目錄。

$ cd /etc
$ pwd
/etc
$ ls passwd profile
passwd profile
$ cd ~john
$ pwd
/home/john

查詢命令的幫助資訊

[編輯 | 編輯原始碼]

命令的第一個詞是命令的名稱。例如,在以下命令中,“ls”是命令名稱,“-l”、“/etc/passwd”和“/etc/profile”是引數。

$ ls -l /etc/passwd /etc/profile

但是我們怎麼知道“ls”命令的作用呢?大多數類 Unix 系統為每個命令提供線上手冊頁。例如,

$ man ls

這將在一個名為分頁器的程式中開啟手冊頁。最常見的分頁器是 lessmore。這些允許使用者鍵入 <SPACE BAR> 向下滾動一屏,'b' 向上滾動一屏,<RETURN> 向下滾動一行,'q' 退出分頁器。

但是,對於那些對命令幾乎一無所知的人來說,手冊頁通常沒有用。關於 命令 的章節將有所幫助。部分 Guide to UNIX/Commands/Getting Help 包含如何有效使用 man 和其他幫助工具的策略。

  1. Shell 提示符
  2. 引用和檔名擴充套件
  3. 管道和作業控制
華夏公益教科書