跳轉到內容

Linux 指南/合併/Linux 新手入門/命令列

來自華夏公益教科書

為什麼我應該學習命令列呢?

[編輯 | 編輯原始碼]

簡單來說,命令列非常強大;存在著大量的工具可以將圖形程式中繁瑣的任務變成只需幾秒鐘即可完成的任務。刪除大型檔案每一行中的最後四行在圖形應用程式中是一個漫長的過程,但在命令列中可以變得微不足道且自動化。

除了靈活性之外,還需要注意的是,某些 Linux 系統根本沒有圖形介面,並且某些系統可能會損壞,以至於無法啟動除了命令提示符之外的任何東西。在這些情況下,必須能夠在命令列上進行足夠熟練的導航,以執行從備份一些檔案到停用損壞的硬體的任何任務。

命令列中使用的命令可能看起來有點神秘,因為它們往往非常短。這是因為 Linux 命令列的起源來自這樣的系統,在這種系統中,單個字母輸入從終端傳送到中央伺服器並返回到終端進行列印到紙捲上需要花費大量時間。在那些舊的系統中,輸入越短越好,因為它意味著等待發出命令並接收輸出的時間更少。為了記住命令的含義,你能做的最好的事情就是找出命令是哪個詞的縮寫。這對於以後記住命令很有幫助。

Shell 提示符

[編輯 | 編輯原始碼]

對於每個 Linux 發行版,命令列提示符看起來都會略有不同。例如,在一個系統上,您可能會看到您的使用者名稱、'@' 符號、機器名、當前目錄和一些指示提示符結束的符號(這裡,一個美元符號)。

user@linux ~/$ 

這是一個非常常見的提示符。您還可能會看到您的使用者名稱、空格、計算機的完全限定域名、當前工作目錄的完整路徑,以及一個表示提示符結束的符號(一個美元符號)。

user linux.box.com /home/user# 

提示符因系統而異,這取決於許多因素。例如,它可能是您的特定 Linux 發行版的建立者設定的預設配置。它也可能由管理計算機的人員配置。也許您自己配置了您希望提示符的外觀。配置命令提示符外觀的方式取決於您使用的 Shell。

Shell 是大多數人通常稱為“命令列”的那一部分,而實際上它只是一個提供核心服務介面的軟體。'Shell' 和'命令列' 之間的區別僅僅在於,Shell 指的是提供命令列介面特定軟體(例如 BASH、Tch、ksh 等)。大多數現代 Linux 系統使用 BASH(Bourne Again SHell)作為預設 Shell。

一些有用的終端命令

[編輯 | 編輯原始碼]

常用命令概述

[編輯 | 編輯原始碼]
  • ls- 此命令'list' 當前工作目錄的內容。
  • pwd- 顯示您的present working directory 是什麼。
  • cd- 允許您change directories。
  • rm- Remove 一個或多個檔案。
  • rmdir- Remove 一個空的 directory。
  • mkdir- Make 一個 directory。
  • ps- 提供當前正在執行的processes 的列表。
  • cp- Copy 一個檔案。
  • mv- Move 一個檔案(這也用於重新命名檔案,將檔案從一個檔名“移動”到另一個檔名。)
  • grep- global regular expression print 程式允許您搜尋檔案或另一個程式的輸出。
  • find- 在檔案系統上查詢檔案(100% 準確,但速度不快)。
  • locate- 從檔案快取列表中查詢檔案系統上的檔案(速度快,但不是 100% 準確)。
  • man- 顯示大多數命令的手冊(包括 'man')。
  • clear- 清除螢幕
  • less- 檢視檔案內容
  • nano- 一個簡單的文字編輯器
  • sudo- 以另一個使用者身份執行命令(預設情況下為 root)
  • su- 切換使用者(預設情況下為 root)
  • view- 以只讀模式啟動。您將受到保護,無法寫入檔案。也可以使用“-R”引數來實現。

命令引數

[編輯 | 編輯原始碼]

大多數(tar cvf tarFile *)(gzip)(gzip -d & tar xvf)命令(cp)mv [filename} [location])需要一些額外的資訊才能執行有用的操作。例如,複製命令需要知道要複製哪個檔案。額外的資訊以引數的形式給出。(while read names __ do __ ### __ done < filename)引數寫成命令名後的額外單詞,並用空格隔開。如果要呼叫命令ps使用引數-A,您將寫

user@linux$ ps -A
注意
引數、引數和標誌是同義詞,而“開關”實際上是一種引數,它表示開或關的狀態。引數通常需要其他資訊(例如檔名),而開關永遠不需要其他資訊,除非可能是“開/關”、“真/假”、“是/否”。

大多數 Linux 命令使用 GNU 的引數格式:每個選項要麼是一個以連字元開頭的字母,例如-o, -W-L,要麼是一個以兩個連字元開頭的單詞或短語,例如--symbolic, --no-target-directory等等。一些命令還接受檔名。每個檔案都必須作為單個引數提供,因此如果您的檔名包含空格,則必須用雙引號或單引號將其括起來,或者在空格前加上反斜槓。以下三個命令使用less開啟同一個檔案

user@linux$ less "important notice.txt"
user@linux$ less 'important notice.txt'
user@linux$ less important\ notice.txt

Shell 識別某些字元並將其用於特殊任務。如果您的檔名包含字元 <>&[]$\"';如果您遇到問題,應該在這些字元前面加上反斜槓。請注意,在 Linux 中,檔名可以包含除 "/" 之外的任何字元,"/" 用作目錄分隔符,以及空字元,該字元無論如何都無法從鍵盤輸入。

使用常用命令

[編輯 | 編輯原始碼]

使用 ls - 列表

[編輯 | 編輯原始碼]
user@linux ~/$ ls
Afilez  Report.doc  aFilea  finances.xls  myPic.jpg  report1.doc  vacation pictures

您可能會從示例中注意到,“ls”的預設輸出表明檔案並非嚴格按字母順序排序。這是因為輸出是根據每個字母的數值 ASCII 值進行排序的。由於大寫字母的 ASCII 值比小寫字母的 ASCII 值低,因此返回的結果始終是首先列出以大寫字母開頭的檔案。例如,如果我們在目錄中新增檔案 AZTRIP,我們將得到“AZTRIP”作為第一個列出的檔案,然後是“Afilez”,因為“Z”的 ASCII 值在數值上低於“f”的 ASCII 值。

如果字母的 ASCII 值讓您感到困惑,那麼要記住的重要一點是大寫字母優先於小寫字母,並且會先出現在列表中。結果是檔案先按大小寫排序,然後按字母順序排序。

ls 的預設輸出不像它可能的那樣有用。例如,根據示例中的輸出,我們不知道哪些是檔案,哪些是目錄。我們可能可以猜到“Afilez”、“aFilea”和“vacation pictures”都是目錄,因為它們的檔名後面沒有副檔名。為了確認這一點,我們可以將引數“l”傳遞給“ls”以獲得“長列表格式”輸出。

user@linux ~/$ ls -l
-rw-r--r-- 1 adrong mkgroup-l-d 163328 Jul 24 11:42 AZTRIP
-rw-r--r-- 1 adrong mkgroup-l-d  11264 Jul 24 11:42 Afilez
-rw-r--r-- 1 adrong mkgroup-l-d  22528 Jul 24 11:43 Report.doc
-rw-r--r-- 1 adrong mkgroup-l-d  24576 Jul 24 11:42 aFilea
-rw-r--r-- 1 adrong mkgroup-l-d 300032 Jul 24 11:43 finances.xls
-rw-r--r-- 1 adrong mkgroup-l-d  47104 Jul 24 11:41 myPic.jpg
-rw-r--r-- 1 adrong mkgroup-l-d  17920 Jul 24 11:43 report1.doc
drwxr-xr-x 1 adrong mkgroup-l-d      0 Jul 24 11:24 vacation pictures

上面輸出中的第一個字元表示檔案型別;其中,破折號表示檔案,字母“d”表示目錄。從這個輸出中,我們看到唯一的目錄是“vacation pictures”。

注意
大多數系統在 ls 命令上都有一個別名,以包含“--color”標誌,以便該命令以不同的顏色突出顯示不同的檔案型別。目錄通常以藍色顯示。如果“ls”命令的輸出中所有內容都是相同的顏色,請嘗試“ls --color”。
提示
ls 命令的另一個常用引數是“a”,它顯示所有檔案,包括以句點開頭的任何隱藏檔案和資料夾。引數也可以組合在一起放在單個字母塊中。例如,“ls -l -a”也可以表示為“ls -la”。

命令 ls -l 按以下順序輸出資訊。第一列資料列出了應用於該檔案或目錄的許可權。下一列資訊列出了指向該檔案的“硬連結”數量。如果您不確定這意味著什麼,那麼不用擔心。有關硬連結的更多資訊,請執行 man ln 閱讀 ln 的手冊頁。下一列列出擁有該檔案或目錄的使用者的名稱,然後是擁有該檔案或目錄的組的名稱。下一列列出檔案或目錄的大小。對於目錄,它不列出該目錄內所有內容的大小。在上面的示例中,它將兩個目錄的大小都列為 4096 位元組。這是因為擁有一個目錄需要佔用這麼多的空間,這並不意味著該目錄中有 4096 位元組的內容。下一列列出檔案或目錄上次修改的日期。最後,列出檔案或目錄的名稱。要了解有關 ls 命令的更多資訊,請執行命令 man ls,您將看到 ls 的手冊頁。

使用 cd - 更改目錄

[編輯 | 編輯原始碼]
另請參閱 cd 的條目Guide to Unix/Commands 華夏公益教科書中。

cd 命令允許您在系統上的目錄之間導航。使用 cd 命令時,您可能需要了解的第一件事是,與 Windows 不同,Linux 不使用驅動器磁碟機代號的概念。相反,所有內容都位於根目錄“/”中,包括其他磁碟驅動器。

有兩種方法可以使用 cd 導航到所需的目錄。這些方法被稱為“完整路徑”和“相對路徑”。

完整路徑始終以根目錄“/”開頭。例如,如果我們位於主目錄“/home/user”中,並且我們想要導航到“vacation pictures”目錄,我們將發出以下命令。

user@linux ~/$ cd /home/user/vacation\ pictures
user@linux vacation pictures/$ 

您可能會注意到,我們的提示稍微改變了一些,以指示我們當前所在的目錄。在大多數系統上都是如此,但如前所述,這取決於 shell 的配置方式。您可能還注意到“vacation”和“ pictures”之間的反斜槓。這個反斜槓被稱為“跳脫字元”,它告訴 cd 命令空格是目錄名稱的一部分。如果我們省略反斜槓,cd 命令將出錯並告訴我們它找不到目錄“vacation”。如果您不喜歡輸入反斜槓,或者目錄名稱中有許多空格,則可以在路徑周圍使用引號。

相對路徑可以從多種方式開始,但始終描述如何從當前所在的目錄導航到特定目錄。要做到這一點,我們需要知道如何移動到立即圍繞我們當前所在的目錄的目錄。這些目錄是父目錄和子目錄。

子目錄是包含我們當前所在的目錄的任何目錄。根據“ls -l”的以下輸出,我們看到芝加哥、佛羅里達和“紐約”都是“vacation pictures”目錄的子目錄。

user@linux vacation pictures/$ ls -l
drwxr-xr-x 1 adrong mkgroup-l-d 0 Jul 24 12:44 chicago
drwxr-xr-x 1 adrong mkgroup-l-d 0 Jul 24 12:44 florida
drwxr-xr-x 1 adrong mkgroup-l-d 0 Jul 24 12:44 new york

父目錄是包含我們所在資料夾的目錄。這使得“vacation pictures”資料夾成為“芝加哥”、“佛羅里達”和“紐約”目錄的父目錄。

要 cd 到子目錄,您可以用“./”開始路徑名稱,這表示我們已經所在的目錄,或者您可以立即用子目錄的名稱開始。例如,以下兩個命令都會將您更改到“佛羅里達”目錄。

user@linux vacation pictures/$ cd ./florida
user@linux florida/$ 
user@linux vacation pictures/$ cd florida
user@linux florida/$ 

要 cd 到父目錄,您始終指定“../”。以下命令將我們返回到“vacation pictures”目錄。

user@linux florida/$ cd ../
user@linux vacation pictures/$ 

如果我們已經位於“芝加哥”目錄中,並且想要 cd 到“紐約”,我們必須首先告訴系統我們要向上移動一級到父目錄,然後到“紐約”目錄。我們可以透過說“cd ../”然後“cd new\ york”來實現,或者我們可以使用以下命令一步一步完成。

user@linux chicago/$ cd "../new york"
user@linux new york/$ 
注意
請注意,我們如何在路徑周圍使用引號來 cd 到“紐約”目錄。我們可以使用反斜槓代替空格之前的反斜槓,並省略引號以獲得相同的結果。

類似於“./”和“../”,還有“~/”,它表示我們以其身份登入的使用者的主目錄。如果我們想要在“/usr/lib”目錄中 cd 到“vacation pictures”資料夾,我們可以使用以下任何命令來完成。

user@linux lib/$ cd ~/vacation\ pictures
user@linux lib/$ cd "/home/user/vacation pictures"
user@linux lib/$ cd ../../home/user/vacation\ pictures
提示
在不指定目錄的情況下使用 cd 命令將使您返回到主目錄。

echo -n "請輸入您的姓名" read name useradd $name

使用 pwd - 列印工作目錄

[編輯 | 編輯原始碼]
另請參閱 pwd 的條目Guide to Unix/Commands 華夏公益教科書中。

要顯示您在任何時間所在的完整路徑,只需執行命令pwd(print working directory),它將為您列印路徑。例如

user@linux test$ pwd
/home/user/test
user@linux test$ cd ..
user@linux ~/$ pwd
/home/user

使用 mkdir - 建立目錄

[編輯 | 編輯原始碼]

命令mkdir允許您建立新的目錄。

user@linux ~/$ ls
Afilez  Report.doc  aFilea  finances.xls  myPic.jpg  report1.doc  vacation pictures
user@linux ~/$ mkdir playground
user@linux ~/$ mkdir ./playground/test1
user@linux ~/$ mkdir /home/user/playground/test2
user@linux ~/$ ls
Afilez  Report.doc  aFilea  finances.xls  myPic.jpg  playground  report1.doc  vacation pictures
user@linux ~/$ 
注意
就像我們之前在cd命令中看到的那樣,我們可以透過指定相對路徑和絕對路徑來建立新的目錄。您會發現您可以對所有使用檔案和資料夾的命令列程式執行此操作。
提示
您可以傳遞-p引數到mkdir以使其建立所有目錄以使該路徑有效。例如,代替第一個和第二個mkdir命令,我們可以改為執行mkdir -p playground/test1以一步建立playgroundtest1目錄。

使用 rmdir - 刪除目錄

[編輯 | 編輯原始碼]

命令rmdir命令允許您刪除空目錄。

user@linux ~/$ ls playground/
test1  test2
user@linux ~/$ rmdir playground/test1
user@linux ~/$ ls playground/
test2
user@linux ~/$ 

與 Windows 一樣,Linux 也有隱藏檔案的概念。這一點很重要,因為您可能嘗試刪除一個看似空的目錄,卻遇到錯誤。

user@linux ~/$ cd playground/
user@linux playground/$ rmdir test2
rmdir: failed to remove `test2': Directory not empty
user@linux playground/$ ls test2/
user@linux playground/$ 

要檢視隱藏檔案和資料夾,請在-a(all files and folders) 引數傳遞給ls命令。

user@linux playground/$ ls -a test2/
.  ..  .hiddenfile
user@linux playground/$ 

Linux 中所有隱藏檔案都以句點開頭。我們看到的“. ”和“.. ”檔案是允許我們指定相對路徑的系統資料夾。

提示
如果您厭倦了每次看到“. ”和“.. ”資料夾ls -a,您可以改為執行ls -A以顯示“幾乎所有”檔案。這將為您提供所有檔案和隱藏檔案,但不包括“. ”和“.. ”。

使用 rm - 刪除檔案

[edit | edit source]

命令rm命令將刪除特定檔案或檔案組。在使用此命令時要小心,因為命令列沒有“回收站”!

要刪除檔案.hiddenfile在上一個示例中,我們只需在rm命令。

user@linux playground/$ rm test2/.hiddenfile
user@linux playground/$ ls -a test2/
.  ..
user@linux playground/$ rmdir test2
user@linux playground/$ 
提示
除了擁有多個引數外,rm命令還支援使用星號 (*) 來表示任何字元集。當您想要刪除所有特定型別的檔案時,這很有用。例如,rm *.jpg將刪除您當前目錄中所有以“.jpg”結尾的檔案。
提示
在您對rm命令感到滿意之前(尤其是在與星號結合使用時),您可能希望指定-i引數來rm在刪除發生之前確認刪除。

使用 locate - 查詢檔案

[edit | edit source]

命令locate實用程式即使在圖形環境中工作也很有用。在安裝了它的系統上,它會定期索引整個檔案系統並將檔名稱儲存在內部資料庫中。這使得按名稱查詢檔案非常快(搜尋特定名稱只需不到一秒鐘)。以下是一個示例

tweenk@tc1100:~$ locate stock_3dsound
/usr/share/icons/gnome/16x16/stock/media/stock_3dsound.png
/usr/share/icons/gnome/24x24/stock/media/stock_3dsound.png
tweenk@tc1100:~$

此示例搜尋硬碟驅動器中所有在其路徑中任何位置包含“stock_3dsound”的檔案。您也可以在模式中使用萬用字元 * 和 ?。

由於檔名儲存在資料庫中,locate將無法找到最近建立的檔案,或者可能找到已被刪除的檔案。雖然資料庫會定期由指令碼更新,但您可能希望強制更新。為此,請使用命令locate -u,以 root 身份執行(在 Ubuntu 中,sudo locate -u;在其他發行版中,首先su,然後locate -u).

使用 su/sudo - 以超級使用者許可權執行命令

[edit | edit source]

超級使用者,更常被稱為“root”,對系統上的所有內容都有完全訪問許可權。root 使用者可以做一些愚蠢的事情,比如將滑鼠輸入視為音訊,也可以做一些對系統造成災難性影響的事情,比如刪除檔案系統上的所有檔案。正是由於最後一個原因,命令列才被認為是令人恐懼的東西。

警告
如果您被告知執行rm命令與星號 (*) 結合使用,請在執行它之前認真考慮一下。許多惡作劇者在 Linux 支援論壇中潛伏,希望誘騙您刪除檔案系統上的所有檔案。其他變體使您mv您的檔案到/dev/null這具有相同的效果。其他變體還涉及rm -r -f作為 root,它將刪除檔案系統上的所有檔案。

`su`(超級使用者)命令的功能允許您切換到系統上的另一個使用者。通常它用於切換到系統上的“root”使用者。要成為大多數系統上的 root,請使用su命令不帶任何引數。然後會提示您輸入 root 密碼。

user@linux ~/$ su
Password: 
root@linux user/#

請注意提示的更改。這些是您可以預期看到的典型更改。使用者名稱從“user”更改為“root”,以反映我們正在操作的使用者身份的更改。目錄已更改,因為“user”的主目錄(例如 /home/user)與 root 的主目錄(通常為 /root)不同。最後一個更改是提示符末尾的字元。井號 (#) 是通常用於指示您現在以 root 身份執行命令的符號。

要切換到另一個使用者,請使用su命令後跟您要切換到的使用者名稱。

user@linux ~/$ su fred
Password: 
fred@linux.box.com /home/user/$

在這裡,我們已成功切換到使用者“fred”。Fred 不是 root 使用者,因此結束符號仍然是美元符號。但是,Fred 已經對其提示符的外觀進行了自定義更改。它提供了機器的完全限定域名,以及使用者當前所在的完整路徑。

注意
此示例中所需的密碼是 Fred 的使用者密碼。root 密碼將不起作用。

一旦您su到 root 使用者,您就可以su到任何其他使用者,而無需他們的密碼。要su到“fred”,而無需他的密碼,我們首先su到 root 作為中間步驟。

user@linux ~/$ su
Password: 
root@linux user/# su fred
fred@linux.box.com /home/user$ 

命令sudo命令類似於su因為它允許您以超級使用者許可權執行命令。但是,關於如何授予超級使用者許可權的理念卻截然不同。

su sudo
執行一次,所有後續命令都將以 root 身份執行。 每次都必須作為字首執行,以執行您希望以 root 身份執行的命令。
對系統上的所有命令和檔案提供完全訪問許可權。 可以限制使用者對哪些命令(以及隨後,哪些檔案)的訪問許可權。
一個密碼,必須與您希望授予 root 訪問許可權的使用者共享。請注意,共享密碼會增加密碼被攔截的可能性。 用於 root 訪問的密碼與使用者的密碼相同。請注意,獲得 root 訪問許可權的人數越多,就越有可能從使用者那裡猜到或竊取其中一個密碼。
使用者必須記住在完成後退出 root。 使用者必須等待命令超時,然後才會再次提示輸入密碼。使用者可能會以執行su的方式成為 root,因此可能仍然需要記住在完成後退出 root。

要成為使用者fred使用sudo命令看起來有點多餘。

user@linux ~/$ sudo su fred
Password: 
fred@linux.box.com /home/user$ 
注意
此示例中所需的密碼是您自己的使用者密碼。
注意
您仍然可以使用su fred命令成為fred使用者,但是同樣,您需要 Fred 的密碼才能做到這一點。

sudo命令理解為類似於“成為 root 並執行以下命令”。這使得上面的命令sudo等效於su示例,在執行su成為使用者fred.

之前,我們作為中間步驟成為 root。sudo有時您可能需要以 root 使用者身份執行多個命令。這可能會使使用

user@linux ~/$ sudo ls /home/fred
Travel.doc  building budget.doc  dev
user@linux ~/$ sudo ls /home/lisa
Work  funny.jpg  g1tmp.odf
user@linux ~/$ sudo ls /home/joe
Backup  Desktop  java.jar
user@linux ~/$

變得冗長乏味,每次都必須像以下示例中所示那樣重新輸入“sudo”。sudo我們可以使用bash上的

user@linux ~/$ sudo bash
Password:
root@linux user/# sudo ls /home/fred
Travel.doc  building budget.doc  dev
root@linux user/# sudo ls /home/lisa
Work  funny.jpg  g1tmp.odf
root@linux user/# sudo ls /home/joe
Backup  Desktop  java.jar
root@linux user/# exit
user@linux ~/$
注意
sudobash減少冗餘輸入量,首先成為 root。不是以這種方式使用的,因此在完成後必須exit
提示
返回我們自己的使用者帳戶。要成為 root,您還可以使用.

sudo -s

獲取有關命令的幫助 - 手冊頁

[edit | edit source]

WHO(1)                                    User Commands                                   WHO(1)

NAME
       who - show who is logged on

SYNOPSIS
       who [OPTION]... [ FILE | ARG1 ARG2 ]

DESCRIPTION
       -a, --all
              same as -b -d --login -p -r -t -T -u

       -b, --boot
              time of last system boot

       -d, --dead
              print dead processes

       -H, --heading
              print line of column headings

       -i, --idle
              add idle time as HOURS:MINUTES, . or old (deprecated, use -u)

       -l, --login
              print system login processes

       --lookup
              attempt to canonicalize hostnames via DNS

       -m     only hostname and user associated with stdin
 Manual page who(1) line 1

許多 shell 命令將接受各種選項。要獲取有關命令的一些資訊以及可用選項的列表,請使用 `man`(`manual` 的縮寫)命令,並將您想要了解更多資訊的命令名稱作為其引數。在輸入命令 `man who` 之後,將顯示以下輸出

大多數手冊都包含幾屏內容。使用箭頭鍵或 Page Up/Page Down 鍵在文字中導航。空格鍵顯示文字的下一行。按 `q` 鍵退出手冊並返回 shell。

fred@3[fred]$ who -a
                        Nov 14 13:47                10 id=si    term=0 exit=0
           system boot  Nov 14 13:47
           run-level 5  Nov 14 13:47                   last=S
                        Nov 14 13:47               835 id=l5    term=0 exit=0
LOGIN      tty1         Nov 14 13:47               958 id=1
root     - tty2         Nov 14 19:15 00:19         959
fred     - tty3         Nov 14 19:28 00:06         960
LOGIN      tty4         Nov 14 13:47               961 id=4
LOGIN      tty5         Nov 14 13:47               962 id=5
LOGIN      tty6         Nov 14 13:47               963 id=6
fred     ? :0           Nov 14 13:47   ?           965
           pts/3        Nov 14 16:29              1746 id=/3    term=0 exit=0
fred@3[fred]$

從手冊頁中我們可以看到,可以使用 `-a` 選項來顯示有關當前活動使用者會話的更多資訊。man除了閱讀程式的幫助檔案外,

還可以用於獲取有關 shell、函式和庫的資訊。

TODO:新增有關以下命令的部分(除了 clear)

檢視檔案
[edit | edit source]

另請參閱 有關檔案檢視的章節,該章節位於 Unix 命令指南 華夏公益教科書中。在 Linux 上檢視和編輯檔案的方式有很多。本節僅介紹如何檢視檔案(不編輯)。為了簡單地列印文字檔案的內容,通常使用cat在 Linux 上檢視和編輯檔案的方式有很多。本節僅介紹如何檢視檔案(不編輯)。為了簡單地列印文字檔案的內容,通常使用程式。(名稱

[user@localhost test]$ cat file1
this is the contents of the file named file1

是“concatenate”的縮寫)。例如less這對於短檔案來說效果很好,但如果檔案比您的終端長,檔案的開頭將超出終端的頂部,您將無法閱讀它。幸運的是,有一個名為less的程式可以幫助我們。執行程式使用命令less file1less將允許您使用向上和向下箭頭鍵在檔案的內容中上下滾動。要退出less,請按“Q”鍵。如果您想使用less在 Linux 上檢視和編輯檔案的方式有很多。本節僅介紹如何檢視檔案(不編輯)。為了簡單地列印文字檔案的內容,通常使用在檔案中搜索單詞,請按“/”鍵,輸入要搜尋的單詞,然後按“<ENTER>”鍵。然後,您可以按“N”鍵跳轉到您搜尋的單詞的每次出現。有關的更多資訊,請執行命令man lessman cat

分別讀取每個程式的手冊頁。

[編輯 | 編輯原始碼]

有些檔案的名字很長,打字很麻煩。為此,標準的 Linux shell 提供了自動補全功能。嘗試輸入當前目錄中檔名稱的前幾個字母,然後按 Tab 鍵。該名稱將自動補全。如果有多個檔案以這些字母開頭,shell 只會部分補全名稱,按兩次 Tab 鍵將列出所有匹配的檔案。如果列表很長,shell 將會要求確認。以下是一個例子

$ cd /usr/share
$ cd gnome  <-- Here, I hit Tab twice
gnome/                       gnome-mount/
gnome-2.0/                   gnome-netstatus/
gnome-about/                 gnome-nettool/
gnome-app-install/           gnome-panel/
gnome-applets/               gnome-photo-printer/
gnome-art/                   gnome-pilot/
gnome-background-properties/ gnome-power-manager/
gnome-btdownload/            gnome-screensaver/
gnome-common/                gnome-screenshot/
gnome-compiz-manager/        gnome-sound-recorder/
gnome-control-center/        gnome-spell-1.0.7/
gnome-dictionary/            gnome-splashscreen-manager/
gnome-doc-utils/             gnome-sudoku/
gnome-games/                 gnome-system-log/
gnome-games-common/          gnome-system-tools/
gnome-keyring-manager/       gnome-terminal/
gnome-mag/                   gnome-utils/
gnome-media/                 gnome-volume-manager/
gnome-menus/                 gnome-vpn-properties/
$ cd gnome   <-- My partially-typed command is not erased

shell 瞭解cd在自動補全此命令的引數時,將不會列出檔案。

華夏公益教科書