Linux命令行入門

介紹

注意: 由於我們正在努力改進互動學習體驗,本教程中的互動終端目前已禁用。您仍然可以使用本教程來學習命令行並練習 Linux 命令,但您需要使用您電腦上的終端或虛擬機。

如今,我們許多人都熟悉具有圖形用戶界面(也稱為 GUI)的計算機(桌面和筆記本電腦)、智能手機和平板電腦,使我們能夠通過視覺體驗來導航應用程序、網絡和我們的文件(如文件和照片)。 Windows、macOS 和 Linux 操作系統每個都提供了不同的桌面環境(例如,文件夾和文件的圖像)和下拉菜單,這些都提供了對計算機程序、應用程序和我們自己的媒體的訪問權限。

盡管對許多用戶來說, GUI 可能是一種直觀使用計算機的方式,但它們通常不會為我們提供對計算機的最大控制權,它們可能會阻止我們在計算機上擁有完整的管理訪問權限,包括安裝、修改或刪除軟件或文件。此外,由於 GUI 主要是視覺化的,因此通常對所有用戶而言並不像它們本應該的那樣具有可訪問性。

一種在您自己的個人計算機和遠程雲服務器上進行導航而無需 GUI 的方法是通過基於文本的終端或命令行界面(CLI)。

終端界面存在於幾乎所有的電腦操作系統上,終端模擬器也可作為平板電腦和智慧手機上的應用程式。終端提供了更廣泛的用戶訪問其設備的途徑,通過增加管理員訪問權限、更大程度上定制環境以及自動化流程的機會。它們還使用戶能夠訪問遠程計算機,例如雲服務器。

此教程將向終端環境新手介紹如何通過嵌入式網頁終端來使用命令行界面,您可以在下面啟動。如果您對終端已有一定了解,您可能更喜歡閱讀我們的Linux 終端入門教程。完成本教程後,您應該能夠理解如何在 Linux(或 macOS)電腦或服務器上使用終端。

理解終端窗口

當您第一次獲得新電腦或智慧手機的訪問權限時,您可能想要打開它並通過檢查可用的應用程式來瞭解如何使用它,以及學習各種功能的位置,以便您可以定制設備以滿足您的需求。您可以通過終端類似地熟悉一台電腦。

您在此瀏覽器窗口中啟動的交互式終端,是通過點擊上方的啟動交互式終端!按鈕啟動的,它在瀏覽器窗口底部顯示一個白色矩形:

如果您尚未啟動終端,請使用本教程開頭的按鈕進行啟動。

在您的交互式瀏覽器終端中,應該有一個美元符號$和一個閃爍的光標。這是您將開始輸入命令告訴終端做什麼的地方。

您啟動的終端是一個Ubuntu 20.04終端。Ubuntu是一個流行的Linux發行版,最初基於Unix操作系統。macOS操作系統也是基於Unix的。如果您正在Linux或macOS機器上閱讀此教程,您的操作系統應該有一個與我們將在本指南中使用的嵌入式終端類似的終端。

在許多這些Unix(或*nix基礎)操作系統中,提示符末尾的符號可能是一個$符號或一個#符號,它們的含義如下:

  • $或美元符號 — 您以普通用戶身份登錄
  • #或井號/井號符號 — 您以具有提升權限的用戶身份登錄

#環境中標記的用戶也被稱為root用戶,默認情況下被認為是超級用戶或管理員。

對於我們在下面的瀏覽器終端中的目的,您以普通用戶的身份登錄,但您也可以通過sudo命令獲得管理員特權。由於這是一個臨時終端,您無需擔心您輸入終端的內容,因為我們完成後將摧毀一切。同樣地,對於雲服務器,如果出現問題,可以銷毀服務器並重新啟動。

請注意,在本地計算機的終端上工作時最好更加小心,因為您可能作為終端上的管理員而對您正在使用的計算機進行永久性更改。

此時,在您的瀏覽器中啟動終端後,您可以開始使用本地計算機輸入文字。您的文字將顯示在閃爍的光標處。我們將在後面的部分了解您可以在此處輸入的內容。

熟悉目錄

我們將通過輸入命令來開始使用終端。命令是由用戶發出的指令,用戶通過它告訴計算機要做什麼。您將在終端中輸入命令,然後在準備好讓計算機執行給定命令時按ENTERRETURN

請在下面的命令後面輸入以下命令,然後按ENTER鍵。您也可以複製該命令,或者在鼠標懸停在代碼塊上時單擊相應的鏈接,在啟動的交互式終端中運行該命令。

  1. pwd

運行此命令後,您將收到以下輸出:

Output
/home/sammy

pwd命令代表“present working directory”,它讓您知道您在當前文件系統中的位置。

在此示例中,您位於名為/home/sammy的目錄(或文件夾)中,該目錄代表名為sammy的用戶。如果您以root的身份登錄,即以具有提升權限的用戶身份,則該目錄將被稱為/root。在個人計算機上,此目錄可能被稱為擁有計算機的用戶的名稱。Sammy Shark的計算機可能將其主用戶目錄命名為/sammy/sammy-shark/home/sammy

目前,該目錄是空的。讓我們創建一個目錄來存儲我們將在本教程中創建的文件,我們可以稱之為files

要做到這一點,我們將使用 mkdir 命令,它代表“”。在輸入命令後,我們需要寫出資料夾的名稱,這將把值傳遞給命令,以便命令可以執行創建此目錄的操作。這個值(資料夾的名稱)被稱為參數,它是對命令給出的輸入。如果您熟悉自然語言語法,您可以將參數視為動詞所作用的對象。

為了創建一個名為files的新目錄,我們將寫下以下內容,其中 mkdir 是命令,files是參數:

  1. mkdir files

執行此命令後,您將不會收到任何輸出,只會看到一個帶有閃爍光標的新行。有了這個新的終端行,您就可以準備輸入下一個命令了。

列出內容並理解權限

由於我們尚未收到有關我們新目錄的具體反饋,我們將使用一個命令來了解我們當前工作目錄中的內容。您可以通過使用 ls 命令(表示“”)來確認新目錄是否存在:

  1. ls

您将收到确认files目录存在的输出:

Output
files

这为我们提供了关于当前工作目录中的内容的一般信息。如果我们想要更多细节,可以使用所谓的标志运行ls命令。在Linux命令中,标志用连字符-和字母编写,传递附加选项(和更多参数)给命令。在我们的示例中,我们将添加-l标志,这个标志与ls配对使用,表示我们想要使用长列表格式选项来执行我们的命令。

让我们输入这个命令和标志,就像这样:

  1. ls -l

按下ENTER键后,我们将在终端收到以下输出:

Output
total 4 drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files

这里,有两行输出。第一行是关于计算机内存块被分配给该目录的信息,第二行主要是关于文件上的用户权限。

为了获得更加易读的输出,我们还可以传递-h--human-readable标志,这将以人类可读的格式打印内存大小,如下所示。通常,一个连字符-表示单字母选项,而两个连字符--表示用文字写出的选项。请注意,一些选项可以同时使用这两种格式。我们可以通过将标志链接在一起构建多个选项到一个命令中,就像-lh一样。

例如,下面的两个命令即使写法不同,但会产生相同的结果:

  1. ls -lh
  1. ls -l --human-readable

這兩個命令將返回以下輸出,與上面的輸出相似,但提供了更多的記憶體塊上下文:

Output
total 4.0K drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files

輸出的第一行讓我們知道有 4K 的電腦記憶體專門用於該文件夾。輸出的第二行有更多細節,我們將更詳細地介紹。我們將涵蓋的所有信息的一般高級參考如下表所示。

File type Permissions Link count Owner Group File size Last modified date File name
d rwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files

您會注意到我們目錄的名稱files位於輸出的第二行的末尾。該名稱表示這行輸出描述的是/home/sammy用戶目錄中的哪個特定項目。如果目錄中有另一個文件,我們將有另一行輸出,該行將詳細說明該文件。

在行的開頭,有一個字符和破折號的列表。讓我們解釋一下每個字符的含義:

Character Description
d directory (or folder) — a type of file that can hold other files, useful for organizing a file system; if this were - instead, this would refer to a non-directory file
r read — permission to open and read a file, or list the contents of a directory
w write — permission to modify the content of a file; and to add, remove, rename files in a directory
x execute — permission to run a file that is a program, or to enter and access files within a directory

在字符串的前 drwx 個字符中,第一個字母 d 表示項目 files 是一個目錄。如果這是一個目錄之外的文件,這個字符串將以連字符開頭,如 -rwx,其中第一個連字符表示非目錄文件。接下來的三個字母 rwx 表示目錄 files 的所有者的權限,表示目錄 files 可以被文件所有者讀取、寫入和執行。如果這些字符中的任何一個被替換為連字符,那麼這將意味著所有者沒有該字符所代表的權限類型。我們稍後會討論如何識別文件的所有者。

輸出中的下三個字符是 r-x,代表目錄 files群組 權限。在這種情況下,群組具有讀取和執行權限,但沒有寫入權限,因為 w 被替換為 -。我們稍後會討論如何識別群組。

第一個字符串的最後三個字符 r-x 代表可以訪問機器的任何其他群組的權限。在這種情況下,這些用戶組也可以讀取和執行,但不能寫入。

輸出中的數字2代表指向此檔案的連結數量。在Linux中,連結提供了一種方法來建立捷徑,以幫助使用者導航檔案系統。當您創建此檔案時,Linux會進行一些背景工作,以建立檔案的絕對連結和自我參照連結,以允許使用者沿著相對路徑導航。我們將在下一節討論絕對路徑和相對路徑。

在數字2之後,單詞sammy顯示了兩次。輸出的這部分提供了有關與files目錄相關聯的所有者和群組的信息。這一行中sammy的第一個實例是指目錄的所有者,我們之前看到的權限是rwxsammy用戶是所有者,因為我們是以sammy用戶創建了files目錄並且是檔案的當前所有者。儘管在我們當前的環境中sammy用戶是唯一的用戶,但類Unix操作系統通常有多個用戶,因此了解哪個用戶擁有檔案的所有權是很有用的。

sammy的第二個實例是指可以訪問files目錄的群組,我們之前看到的權限是r-x。在這種情況下,群組名稱與所有者用戶名sammy相同。在現實世界的環境中,操作系統上可能會有其他群組可以訪問目錄,例如staff或類似admin的用戶名。

這條輸出行的其餘詳細信息是用於機器上目錄的內存分配為4.0K,以及目錄上次修改的日期(到目前為止,我們只是創建了它)。

憑藉對文件系統和權限的更深入理解,我們可以繼續學習如何在我們的Linux終端中導航文件系統。

到目前為止,我們已經學會了如何確定我們在文件系統中的位置,如何創建新目錄,如何列出文件以及如何確定權限。

讓我們接下來學習如何在文件系統中移動。我們已經創建了一個新目錄,但我們仍然在主/home/sammy用戶目錄中。為了進入我們創建的/home/sammy/files目錄,我們將使用cd命令,並將要進入的目錄名稱作為參數傳遞。命令cd代表“change directory”,我們將像這樣構建它:

  1. cd files

同樣,除了帶有閃爍光標的新行之外,您將不會收到任何輸出,但是我們可以檢查我們是否在先前使用的pwd命令的/home/sammy/files目錄中:

  1. pwd

您將收到以下輸出,確認您所在的位置:

Output
/home/sammy/files

這證實你位於/home/sammy/files目錄下的/home/sammy使用者目錄。這個語法看起來對你來說熟悉嗎?它可能讓你想起了網站的URL,因為它有斜線,確實,網站也是在伺服器上的目錄中組織的。

讓我們移動到伺服器的主要目錄。無論我們在檔案系統的哪個位置,我們都可以使用命令cd /來移動到主目錄:

  1. cd /

為了確認我們已經移動並了解這個目錄中有什麼,讓我們運行我們的列出命令:

  1. ls

我們會收到以下輸出:

Output
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var

裡面有很多文件!/目錄是Linux伺服器的主目錄,稱為“根”目錄。請注意,根目錄與預設的“根”使用者不同。你可以把/目錄想象成Linux機器的主要動脈,因為它包含運行計算機所需的所有文件夾。例如,sys目錄保存著Linux核心和系統信息虛擬文件系統。如果你想了解每個目錄的更多信息,你可以訪問Linux基金會文檔

你還會注意到有一個我們已經進入過的目錄,即/home使用者資料夾。從/目錄,我們可以切換目錄返回到/home,然後返回到files,或者可以直接輸入絕對路徑進入那個文件夾,例如:cd

  1. cd /home/sammy/files

現在,如果您運行 pwd,您將收到 /home/sammy/files 作為您的輸出。

A file path is the representation of where a file or directory is located on your computer or server. You can call a path to a file or directory in either a relative or absolute way. A relative path would be when we move to a location relative to our current working directory, like we did when we were already in /home/sammy/ and then moved into files/. An absolute path is when we call the direct line to a location, as we did above with /home/sammy/files, showing that we started in the / directory, called the /home/sammy/ user directory and then the nested files/ directory.

此外,Linux 利用 點表示法 來幫助用戶通過相對路徑進行導航。單個 . 代表您當前所在的目錄,雙個 .. 代表父目錄。因此,從我們目前所在的位置 (/home/sammy/files),我們可以使用兩個點返回到父目錄 /home/sammy 用戶目錄,就像這樣:

  1. cd ..

如果您運行 pwd,您將收到 /home/sammy 作為您的輸出,如果您運行 ls,您將收到 files 作為您的輸出。

另一個重要的符號要熟悉的是 ~,它代表您機器的主目錄。在這裡,我們的主目錄稱為 /home/sammy,屬於 sammy 用戶,但在本地機器上,它可能是您自己的名字,如 sammy-shark/

您可以在機器的任何位置輸入以下命令,並返回到這個主目錄:

  1. cd ~

在這一點上,請隨意使用您到目前為止學到的命令在文件系統中導航。在下一節中,我們將開始使用文本文件。

創建和修改文本文件

現在我們已經對 Linux 檔案系統有了一個基礎,知道如何在其中移動,讓我們開始創建新文件並學習如何在命令行上操作文本。

首先,讓我們確保我們在/home/sammy用戶文件夾的files/目錄中,我們可以通過驗證pwd或在絕對路徑上更改目錄來實現:

  1. cd /home/sammy/files

現在,我們將創建一個新的文本文件。我們將創建一個.txt文件,這是一個可以跨操作系統讀取的標準文件。與.doc文件不同,.txt文件由未格式化文本組成。未格式化的文本,包括.txt文件中的文本,可以在命令行上輕松使用,因此在處理文本數據時可以使用它(例如,自動執行文本分析、從文本中提取信息等)。

我們將首先使用touch命令,該命令可以創建新文件或修改現有文件。要使用它,您可以使用touch命令並將要創建的文本文件的名稱作為參數傳遞,如下所示。

  1. touch ocean.txt

按下ENTER後,您將收到新的命令提示符行,您可以列出files/的當前內容以確保它已創建。

  1. ls
Output
ocean.txt

到目前為止,我們已經創建了一個ocean.txt文件,該文件在創建時不包含任何文本。

如果我們想要創建一個帶有文本初始化的文本文件,我們可以使用echo命令,該命令用於在 Linux 中顯示文本字符串。

我們可以直接在命令行上使用 echo 來讓介面重複顯示我們輸入的內容。傳統的第一個程式,“Hello, World!”,可以使用如下的方式用 echo 來寫:

  1. echo Hello, World!
Output
Hello, World!

以 Ovid 的《變形記》中的 Echo 為名,echo 命令會返回我們要求的內容。在這個例子中,它會輸出,“Hello, World!” 不過,單獨使用 echo 命令並不允許我們將文字儲存到一個文本文件中。為了做到這一點,我們需要輸入以下命令:

  1. echo "Sammy the Shark" > sammy.txt

上述命令使用 echo,然後是我們想要添加到文件中的文字(放在引號內),然後是重定向運算子 >,最後是我們新文本文件的名稱,sammy.txt

我們可以再次使用 ls 來檢查我們的新文件是否存在。

  1. ls
Output
ocean.txt sammy.txt

現在我們在 /home/sammy/files 使用者文件夾中有兩個文本文件。接下來,我們可以確認文件 sammy.txt 中確實包含了我們要求終端輸出的文字。我們可以使用 cat 命令來實現這一點。縮寫為 concatenate,cat 命令非常有用於處理文件。它的功能之一是顯示文件的內容。

  1. cat sammy.txt

執行該命令後,我們會收到以下輸出:

Output
Sammy the Shark

如果我們對空文件 ocean.txt 使用 cat 命令,我們將得到空的返回,因為該文件中沒有文字。我們也可以使用 echo 向這個已存在的文件中添加文字。讓我們向文件中添加一條 Zora Neale Hurston 的引文。

  1. echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt

現在,如果我們在文件上運行cat,我們將收到剛剛輸入的文本的輸出。

  1. cat ocean.txt
Output
Some people could look at a mud puddle and see an ocean with ships.

到目前為止,我們已經創建了文本文件並向這些文件添加了文本,但我們尚未修改這些文件。如果我們想這樣做,我們可以使用命令行文本編輯器。有幾個受歡迎的選擇,包括Vim和Emacs。對於我們的目的,我們將使用nano,這是一個較不複雜的CLI文本編輯器程序,我們可以用它來開始我們的探索。

可以使用nano命令來召喚nano文本編輯器。如果我們想編輯現有的sammy.txt文件,可以通過將文件名作為參數傳遞來這樣做。

  1. nano sammy.txt

文件將在您的終端上打開:

sammy.txt
Sammy the Shark

使用鍵盤的箭頭鍵,將光標移動到行末並開始從Sammy的角度輸入幾行文本。

注意:在命令行上,您無法使用鼠標或其他指針在文件系統中移動,也無法在文件內部移動。您需要使用鍵盤,特別是箭頭鍵,來在文本文件中移動。

完成文件後,它可能會讀起來像這樣:

sammy.txt
Sammy the Shark

Hello, I am Sammy.
I am studying computer science.
Nice to meet you!

現在您的文件包含您想要的文本,我們現在可以保存並關閉文件。您可能會注意到您的終端窗口底部有一些指導信息:

^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell

因為我們目前已經完成了對這個檔案的工作,我們想要退出這個檔案。在這裡,^ 符號表示您鍵盤上的 ControlCTRL 鍵,而上面的輸出告訴我們我們需要將該鍵與 X 這兩個鍵一起按下(使用小寫,不需要按下 SHIFT 鍵)才能離開該檔案。讓我們一起按下這兩個鍵:

CTRL x

以上的內容通常在技術文檔中以行內方式寫為 CTRL + XCtrl+x

此時,您會收到以下提示:

Output
Save modified buffer? Y Yes N No ^C Cancel

為了保存它,我們將按下 y 鍵以確認:

y

您會收到以下類似的反饋。

Output
File Name to Write: sammy.txt

還有其他選項,包括使用 CTRL + C 進行取消,但如果您想要關閉該檔案,您可以在此時按下 ENTER 來保存該檔案並退出。

假設我們想要製作一些 DigitalOcean 大學學生的檔案。讓我們在 files/ 中創建一個名為 students 的新目錄:

  1. mkdir students

接下來,讓我們將 sammy.txt 移動到新的 students/ 目錄中。mv 命令,代表著 move,將允許我們更改文件的位置。該命令由我們要移動的文件作為第一個參數,新位置作為第二個參數構成。以下兩個執行將產生相同的結果。

  1. mv sammy.txt students
  1. mv sammy.txt students/sammy.txt

後者的選項將會很有用,如果我們想要更改文件的名稱,就像 mv sammy.txt students/sammy-the-shark.txt 一樣。

現在,如果我們運行 ls 命令,我們會看到當前目錄(files/)中只有 ocean.txtstudents/ 目錄。讓我們進入 students/ 文件夾。

  1. cd students

為了為其他學生準備一個模板,我們可以複製 sammy.txt 文件來創建更多文件。為此,我們可以使用 cp 命令,該命令代表copy。這個命令的用法類似於 mv 命令,將原始文件作為第一個參數,新文件作為第二個參數。我們將為 Alex the Leafy Seadragon 創建一個文件:

  1. cp sammy.txt alex.txt

現在,我們可以打開 alex.txt 並檢查它。

  1. nano alex.txt

到目前為止,alex.txt 看起來與 sammy.txt 完全相同。通過替換一些單詞,我們可以修改此文件以讀取如下內容。請注意,您可以使用 CTRL + K 刪除整行。

alex.txt
Alex the Leafy Seadragon

Hello, I am Alex.
I am studying oceanography.
Nice to meet you!

您可以按 CTRL + X 然後按 y 再按 ENTER 保存並關閉文件。

如果您想要獲得更多有關文本文件的練習,可以考慮為 Jamie the Mantis Shrimp、Jesse the Octopus、Drew the Squid 或 Taylor the Yellowfin Tuna 創建文件。

一旦您對創建、編輯、複製和移動文本文件感到自在,我們就可以進入下一個部分。

自動完成和歷史記錄

許多版本的命令行,包括嵌入在本教程中的交互式終端,都允許您在輸入命令時自動完成並重複使用命令。這可以幫助您更快地移動,因為它節省了您的打字時間。

試著輸入 cat 以及您一直在工作的文本文件的前幾個字母 — 例如,cat sa。在您完成輸入 sammy.txt 整個文件名之前,請按 TAB 鍵。這樣應該會自動完成完整的文件名,使您的終端提示顯示如下:

  1. cat sammy.txt

現在,如果您按 ENTER,終端應該會將文件的內容返回到命令行。

另一個快捷方式是按 UP 箭頭鍵,這將允許您循環查看您最近運行的命令。在一個帶有閃爍光標的新行上,按幾次 UP 箭頭鍵,以快速訪問您以前的命令。

如果您需要複製您在終端中執行的所有命令,您還可以使用名為 history 的命令召喚此會話的整個歷史記錄:

  1. history

根據您的實踐程度,您應該會收到 30 行或更多命令,開頭如下輸出:

Output
1 pwd 2 mkdir files 3 ls 4 ls -l ...

熟悉這些快捷方式將有助於您在命令行界面上變得更加熟練。

從網上操作文件

在與互聯網相連的命令行界面上工作最令人興奮的一點是,您可以訪問網上的所有資源,並可以以自動化的方式對其進行操作。通過終端,您還可以直接訪問您擁有憑據的雲服務器,管理和編排雲基礎設施,構建您自己的 Web 應用程序等。就目前而言,由於我們已經學會如何在終端上處理文本文件,我們將介紹如何從網上下載一個文本文件,以便我們使用的機器可以使用該文本文件。

讓我們返回到 files/ 目錄:

  1. cd /home/sammy/files

從這裡,我們將使用 curl 命令將數據從 Web 服務器傳輸到我們在瀏覽器上的個人互動終端。 curl 命令代表 client URL(網址)。

我們已經在一個雲服務器上上傳了《海底兩萬里》中朱爾·凡爾納的一段短篇。 我們將該文件的 URL 傳遞給 curl 命令,如下所示。

  1. curl https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

一旦我們按下 ENTER,我們將在終端上收到該段落的文本(如下所示)

Output
"You like the sea, Captain?" "Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe. ... "Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this is a library which would do honor to more than one of the continental palaces, and I am absolutely astounded when I consider that it can follow you to the bottom of the seas."

雖然在我們的終端窗口上顯示文本很有趣,但我們並沒有文件可用,我們只是傳輸了數據但沒有存儲它。(您可以通過運行ls來驗證文件是否不存在)。

為了將文本保存到文件中,我們需要運行curl命令,並使用-O標誌,這使我們能夠將文本輸出到文件中,並將遠程文件的同名複本保存到本地。

  1. curl -O https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

您將收到來自終端的文件下載反饋。

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487

如果您想使用特定的替代文件名,您可以使用-o標誌,並將新文件的名稱作為參數傳遞(在本例中,jules.txt)。

  1. curl -o jules.txt https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

現在,我們可以像處理任何其他文本文件一樣處理此文件。試著使用cat,或者用nano進行編輯。

在下一節中,我們將清理一些文件並退出終端。

刪除文件和終止命令

與任何其他計算機一樣,我們有時需要刪除不再相關的文件和文件夾,並退出我們正在使用的程序。

假設我們從DigitalOcean大學認識的學生已經畢業,我們需要清理他們的文件和相關文件夾。請確保您處於students/目錄中:

  1. cd /home/sammy/files/students

如果你运行ls,你的文件夹可能有一些文件,就像这样:

Output
alex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt

我们可以使用rm命令来移除单个文件,remove的缩写。我们需要将要移除的文件作为参数传递。

警告:请注意,一旦删除文件,就无法撤消。在按下ENTER之前,请确保你想要删除该文件。

  1. rm sammy.txt

现在,如果我们运行ls,我们会注意到sammy.txt不再在文件夹中:

Output
alex.txt drew.txt jamie.txt jesse.txt taylor.txt

虽然我们现在知道我们可以使用rm删除单个文件,但如果我们想要删除整个students/目录及其所有内容,这并不是非常高效的。

用于删除目录的命令称为rmdir,它的全称是remove directory。 让我们移动到files的父文件夹,这样我们就可以从那里操作students/目录(我们不能删除我们当前正在使用的文件夹)。

  1. cd ..

/home/sammy/用户目录,我们可以在students上运行rmdir

  1. rmdir students

然而,这并不起作用,因为我们收到以下反馈:

Output
rmdir: failed to remove 'students': Directory not empty

该命令未生效,因为rmdir仅适用于空目录,而students目录仍然有文件。(在这里,你可以创建一个新的空文件夹,并尝试在其上使用rmdir。空文件夹可以用rmdir移除。)

要删除还有文件的目录,我们需要尝试不同的选项。在计算机科学中,递归通常用于迭代自我引用;因此,我们可以调用主项目和所有其依赖项。使用rm命令,我们可以递归删除主students目录及其所有内容依赖项。我们将使用-r标志,它代表recursive,并将文件夹students作为参数传递。

  1. rm -r students

此时,如果我们运行ls,我们会注意到students/不再在当前目录中,并且它所包含的所有文件也都不可用,因为它们都已被删除。

当您完成终端会话时,特别是在远程服务器上工作时,您可以使用exit命令退出终端。一旦您对本次会话的成果感到满意(因为您将无法恢复它),您可以输入以下内容,然后按ENTER键离开终端。

  1. exit

在我们的交互式终端上,我们将收到以下输出,确认我们的会话已经结束。

Output
Session ended

完成了这次会话后,您可以刷新此页面,然后启动一个新的终端来尝试替代命令,或者创建一个新的文件系统来进行探索。

结论

恭喜!您現在已經熟悉了終端介面,並且正在通往更多在電腦和伺服器上進行操作的道路上。

為了繼續您的學習,您可以參加我們的雲計算入門課程,進行遠程伺服器的設置和管理。

Source:
https://www.digitalocean.com/community/tutorials/a-linux-command-line-primer