歡迎光臨
每天分享高質量文章

遷徙到 Linux:命令列環境 | Linux 中國

剛接觸 Linux?在這篇教程中將學習如何輕鬆地在命令列列出、移動和編輯檔案。
— John Bonesio


致謝
編譯自 | https://www.linux.com/blog/learn/2018/1/migrating-linux-command-line 
 作者 | John Bonesio
 譯者 | ChenYi (cyleft) ? ? ? 共計翻譯:23 篇 貢獻時間:73 天

剛接觸 Linux?在這篇教程中將學習如何輕鬆地在命令列列出、移動和編輯檔案。

這是關於遷徙到 Linux 系列的第四篇文章了。如果您錯過了之前的內容,可以回顧我們之前談到的內容 新手之 Linux[1]檔案和檔案系統[2]、和 圖形環境[3]。Linux 無處不在,它可以用於執行大部分的網路伺服器,如 Web、email 和其他伺服器;它同樣可以在您的手機、汽車控制檯和其他很多裝置上使用。現在,您可能會開始好奇 Linux 系統,並對學習 Linux 的工作原理萌發興趣。

在 Linux 下,命令列非常實用。Linux 的桌面系統中,儘管命令列只是可選操作,但是您依舊能看見很多朋友開著一個命令列視窗和其他應用視窗並肩作戰。在網際網路伺服器上和在裝置中執行 Linux 時(LCTT 譯註:指 IoT),命令列通常是唯一能直接與作業系統互動的工具。因此,命令列是有必要瞭解的,至少應當涉獵一些基礎命令。

在命令列(通常稱之為 Linux shell)中,所有操作都是透過鍵入命令完成。您可以執行檢視檔案串列、移動檔案位置、顯示檔案內容、編輯檔案內容等一系列操作,透過命令列,您甚至可以檢視網頁中的內容。

如果您在 Windows(CMD 或者 PowerShell) 上已經熟悉關於命令列的使用,您是否想跳轉到“Windows 命令列使用者”的章節上去?先閱讀這些內容吧。

導航

在命令列中,這裡有一個當前工作目錄(檔案夾和目錄是同義詞,在 Linux 中它們通常都被稱為目錄)的概念。如果沒有特別指定目錄,許多命令的執行會在當前目錄下生效。比如,鍵入 ls列出檔案目錄,當前工作目錄的檔案將會被列舉出來。看一個例子:

  1. $ ls

  2. Desktop Documents Downloads Music Pictures README.txt Videos

ls Documents 這條命令將會列出 Documents 目錄下的檔案:

  1. $ ls Documents

  2. report.txt todo.txt EmailHowTo.pdf

透過 pwd 命令可以顯示當前您的工作目錄。比如:

  1. $ pwd

  2. /home/student

您可以透過 cd 命令改變當前目錄並切換到您想要抵達的目錄。比如:

  1. $ pwd

  2. /home/student

  3. $ cd Downloads

  4. $ pwd

  5. /home/student/Downloads

路徑中的目錄由 /(左斜槓)字元分隔。路徑中有一個隱含的層次關係,比如 /home/student 目錄中,home 是頂層目錄,而 student 是 home 的子目錄。

路徑要麼是絕對路徑,要麼是相對路徑。絕對路徑由一個 / 字元打頭。

相對路徑由 . 或者 .. 開始。在一個路徑中,一個 . 意味著當前目錄,.. 意味著當前目錄的上級目錄。比如,ls ../Documents 意味著在此尋找當前目錄的上級名為 Documents 的目錄:

  1. $ pwd

  2. /home/student

  3. $ ls

  4. Desktop Documents Downloads Music Pictures README.txt Videos

  5. $ cd Downloads

  6. $ pwd

  7. /home/student/Downloads

  8. $ ls ../Documents

  9. report.txt todo.txt EmailHowTo.pdf

當您第一次開啟命令列視窗時,您當前的工作目錄被設定為您的家目錄,通常為 /home/。家目錄專用於登入之後儲存您的專屬檔案。

環境變數 $HOME 會展開為您的家目錄,比如:

  1. $ echo $HOME

  2. /home/student

下表顯示了用於目錄導航和管理簡單的文字檔案的一些命令摘要。

搜尋

有時我們會遺忘檔案的位置,或者忘記了我要尋找的檔案名。Linux 命令列有幾個命令可以幫助您搜尋到檔案。

第一個命令是 find。您可以使用 find 命令透過檔案名或其他屬性搜尋檔案和目錄。舉個例子,當您遺忘了 todo.txt 檔案的位置,我們可以執行下麵的程式碼:

  1. $ find $HOME -name todo.txt

  2. /home/student/Documents/todo.txt

find 程式有很多功能和選項。一個簡單的例子:

  1. find -name

如果這裡有 todo.txt 檔案且不止一個,它將向我們列出擁有這個名字的所有檔案的所有所在位置。find 命令有很多便於搜尋的選項比如型別(檔案或是目錄等等)、時間、大小和其他一些選項。更多內容您可以同透過 man find 獲取關於如何使用 find 命令的幫助。

您還可以使用 grep 命令搜尋檔案的特定內容,比如:

  1. grep "01/02/2018" todo.txt

這將為您展示 todo 檔案中 01/02/2018 所在行。

獲取幫助

Linux 有很多命令,這裡,我們沒有辦法一一列舉。授人以魚不如授人以漁,所以下一步我們將向您介紹幫助命令。

apropos 命令可以幫助您查詢需要使用的命令。也許您想要查詢能夠操作目錄或是獲得檔案串列的所有命令,但是您不知道該執行哪個命令。您可以這樣嘗試:

  1. apropos directory

要在說明檔案中,得到一個於 directiory 關鍵字的相關命令串列,您可以這樣操作:

  1. apropos "list open files"

這將提供一個 lsof 命令給您,幫助您列出開啟檔案的串列。

當您明確知道您要使用的命令,但是不確定應該使用什麼選項完成預期工作,您可以使用 man命令,它是 manual 的縮寫。您可以這樣使用:

  1. man ls

您可以在自己的裝置上嘗試這個命令。它會提供給您關於使用這個命令的完整資訊。

通常,很多命令都能夠接受 help 選項(比如說,ls --help),列出命令使用的提示。man 頁面的內容通常太繁瑣,--help 選項可能更適合快速瀏覽。

指令碼

Linux 命令列中最貼心的功能之一是能夠執行指令碼檔案,並且能重覆執行。Linux 命令可以儲存在文字檔案中,您可以在檔案的開頭寫入 #!/bin/sh,後面的行是命令。之後,一旦檔案被儲存為可執行檔案,您就可以像執行命令一樣執行指令碼檔案,比如,

  1. --- contents of get_todays_todos.sh ---

  2. #!/bin/sh

  3. todays_date=`date +"%m/%d/%y"`

  4. grep $todays_date $HOME/todos.txt

指令碼可以以一套可重覆的步驟自動化執行特定命令。如果需要的話,指令碼也可以很複雜,能夠使用迴圈、判斷陳述句等。限於篇幅,這裡不細述,但是您可以在網上查詢到相關資訊。

Windows 命令列使用者

如果您對 Windows CMD 或者 PowerShell 程式很熟悉,在命令列輸入命令應該是輕車熟路的。然而,它們之間有很多差異,如果您沒有理解它們之間的差異可能會為之困擾。

首先,在 Linux 下的 PATH 環境與 Windows 不同。在 Windows 中,當前目錄被認為是該搜尋路徑(PATH)中的第一個檔案夾,儘管該目錄沒有在環境變數中列出。而在 Linux 下,當前目錄不會明確的放在搜尋路徑中。Linux 下設定環境變數會被認為是風險操作。在 Linux 的當前目錄執行程式,您需要使用 ./(代表當前目錄的相對目錄表示方式) 字首。這可能會搞糊塗很多 CMD 使用者。比如:

  1. ./my_program

而不是

  1. my_program

另外,在 Windows 環境變數的路徑中是以 ;(分號) 分割的。在 Linux 中,由 : 分割環境變數。同樣,在 Linux 中路徑由 / 字元分隔,而在 Windows 目錄中路徑由 \ 字元分割。因此 Windows 中典型的環境變數會像這樣:

  1. PATH="C:\Program Files;C:\Program Files\Firefox;"

而在 Linux 中看起來像這樣:

  1. PATH="/usr/bin:/opt/mozilla/firefox"

還要註意,在 Linux 中環境變數由 $ 拓展,而在 Windows 中您需要使用百分號(就是這樣: %PATH%)。

在 Linux 中,透過 - 使用命令選項,而在 Windows 中,使用選項要透過 / 字元。所以,在 Linux 中您應該:

  1. a_prog -h

而不是

  1. a_prog /h

在 Linux 下,檔案拓展名並沒有意義。例如,將 myscript 重新命名為 myscript.bat並不會因此而變得可執行,需要設定檔案的執行許可權。檔案執行許可權會在下次的內容中改寫到。

在 Linux 中,如果檔案或者目錄名以 . 字元開頭,意味著它們是隱藏檔案。比如,如果您申請編輯 .bashrc 檔案,您不能在家目錄中找到它,但是它可能真的存在,只不過它是隱藏檔案。在命令列中,您可以透過 ls 命令的 -a 選項檢視隱藏檔案,比如:

  1. ls -a

在 Linux 中,普通的命令與 Windows 的命令不盡相同。下麵的表格顯示了常用命令中 CMD 命令和 Linux 命令列的差異。


via: https://www.linux.com/blog/learn/2018/1/migrating-linux-command-line

作者:John Bonesio[5] 譯者:CYLeft 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂