指令列學生教材

指令列可用來控制沒有 GUI 的電腦。在本單元中,我們會學習與電腦互動的基本指令。

注意事項

  • 學生可以透過指令四處移動。
  • 學生將建立、移動、複製及刪除檔案和資料夾。

什麼是指令列?

大多數使用者大部分都使用圖形使用者介面 (GUI) 與電腦互動。GUI 通常會依賴滑鼠或觸控操作,以便使用圖示、按鈕、捲軸等方式操控視窗。

指令列是替代電腦畫面。有時也稱為「殼層」、「終端機」、「終端機」或「文字介面」,命令列是:

  • 使用者與電腦程式互動的一種方法,也就是使用者輸入指令,例如:
open README.txt
  • 不必使用滑鼠即可瀏覽及操作電腦。
  • 不以圖形方式建立、讀取、更新、操作及刪除檔案和目錄,例如:
mv README.txt readme.txt

GUI 和指令列的介面一樣!這些是與電腦互動的不同方式。

使用指令列的時機為何?

開發人員通常會使用指令列介面:

  • 可讓您以更簡便的方式控製程式或作業系統。原因何在?由於所有作業都是在同一個視窗中進行,因此相較於練習使用滑鼠來操作,操作上會比較省時省力。
  • 因為這類工具可讓你公開控制指令的選項。原因何在?GUI 中的選單提供了一些選項。指令列中會包含數百個指令,而只要在指令中加入幾個字元,即可執行許多不同的操作,例如:
  • ls 基本清單檔案
  • ls -a 列出所有檔案,包括一般隱藏的檔案
  • ls -l 清單過長,可顯示每個檔案的相關資訊
  • ls -R 以遞迴方式列出目錄內容
  • ls -la 列出所有檔案
  • 可輕鬆處理複雜的檔案。
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • 這些程式碼會提供用於編寫作業系統 (殼層程式) 的方法,例如,這個範例是非常簡單的 shell 程式,用來修改檔案名稱結尾為 .png 的圖片。

使用中的指令列

指令列指令的組成部分

所有指令都包含三個部分:

  • 該指令 (或公用程式) 一律優先執行。
  • 視您使用的公用程式而定,不一定要使用旗標。標記一律以 - (減號) 開頭。
  • 引數是對指令執行動作或必要資訊的資訊。通常是檔案名稱。

訊框

背景資訊(&O)

您可以透過指令列在不使用滑鼠或 GUI 的情況下控制電腦 (圖形使用者介面)。在 Apple 電腦開始建立可使用特定圖示和資料夾的機器之前,唯一的方法就是透過指令列與電腦互動。

對開發人員而言,我們使用指令列,因為 GUI 的效率比 GUI 更快、更強大,而且不用浪費時間瀏覽。指令列可讓您執行幾乎與電腦的互動。

由於終端機是更方便的介面,因此當您需要透過網路連結遠端連線至電腦時,終端機比 GUI 可以獲益良多。這是開發人員常去的事務,例如出遊時。

在本課程中,我們要學習一些與電腦互動的基本指令:建立檔案和目錄、移動資料夾、變更目錄,以及列出資料夾內容。

學習目標

學生將可以

  • 使用終端機瀏覽檔案和資料夾
  • 列出資料夾內容
  • 透過指令列建立檔案和資料夾
  • 移動檔案和資料夾
  • 複製檔案和資料夾
  • 刪除檔案和資料夾

開始使用

存取終端機

版面取景和用途

終端機為作業系統提供指令列介面 (CLI)。並給予電腦直接文字說明。

為了達到這個目的,我們必須根據您使用的系統啟動終端機。

當終端機啟動時,它會從您電腦的主目錄 (也就是您命名的電腦) 中啟動。您的主目錄會以 tilde ~ 表示。

在終端機中討論我們的世界時,目錄資料夾相同 (有時也稱為「目錄」)。

變更目錄

版面取景和用途

為了與終端機的電腦交談而指令列可以解讀以 bash 指令碼語言編寫的指令。這些指令是英文縮寫或縮寫。

當你在終端機中導航時,必須知道你的所在位置 (這還是可以直接翻譯在現實生活中 - 如果你想要前往某個地點,首先必須知道你目前的所在位置)。

# See your current location - abbreviation for 'print working directory'
pwd

列出可用的檔案和目錄

您的工作目錄中可能會有數個檔案可供存取。一般而言,我們會以圖示這類視覺化提示來呈現可用的內容,但如果只猜測檔案和資料夾的位置,那就很難瀏覽電腦。在指令列中,我們會使用特定指令列出任何指定工作目錄 / 任何指定位置可存取的內容。

如要查看目前目錄中的檔案或資料夾,請使用 ls 指令 (清單的縮寫) 查看內容清單檢視。

# See files and folders in current location - abbreviation for 'list'
ls

變更工作目錄

如果您需要存取清單中未列出的檔案或目錄,建議您變更工作目錄,以便輕鬆存取。

指示命令行者將您移至新「目錄」(也稱為資料夾) 的語法,後面接著 cd,此行會移至新資料夾的路徑。

如果您要瀏覽的目錄位在您目前所處的目錄中 (例如工作目錄子資料夾),請使用 cd 指令,然後加上資料夾名稱。

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

您也可以從首頁的 ~ 目錄開始瀏覽。

# Add a `~/` to begin from the home directory.
cd ~/Downloads

如果你變更了目錄,但需要返回主目錄,請使用 ~ 直接返回首頁,或使用 .. 來瀏覽上一層。

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

請注意,cd .. 只會向上 (返回) 一次,因此,如果你目前已變更目錄 3 次 (減少 3 個層級),就必須使用 cd .. 三次才能回家,但只需要使用 cd ~ 一次。

迷你挑戰

  • 使用 ls 查看目前目錄中的內容。
  • 返回主目錄,然後使用 ls 查看主資料夾的內容。
  • 選擇主目錄中的資料夾名稱,然後前往這個新資料夾。
  • 使用 list 指令查看其中的內容。

提示:使用 tab 的自動即時查詢

使用 cd 指令變更目錄時,單一錯字會使指令無法正確執行。不過,使用 tab 金鑰時,系統會自動加入目前目錄中所有可用目錄的名稱。所以您不用輸入 cd Documents,只要輸入 cd Do,然後按下 tab 鍵,終端機就會為您自動完成指令 cd Documents/ (最後的 / 為選用項目,但會告訴您目的地是目錄),

這項功能的自動完成功能不僅能節省運作時間,也能在沒有資訊的情況下提供寶貴的資訊。如果分頁按鈕沒有自動完成,則可能是下列三個常見問題之一:

  1. 無法透過目前的工作目錄前往您要瀏覽的目錄。
  2. 有兩個目錄的開始名稱相似 (例如 DocumentsDownloads),但您尚未提供足夠的資訊,供自動完成功能判斷您想要的目錄為何。再按一次 tab 即可查看與您輸入內容相符的目錄。再輸入一些結果 (只輸入一個相符結果),然後再按一次 tab
  3. 您已經在字詞的前半段輸入了錯字。

越早使用分頁來自動完成指令,就越不容易處理指令不正常的情況。

上層及下層目錄

目錄和檔案可以有子項上層的關係。如果 directory_b內部directory_a,則 directory_b 稱為 directory_a子項。隨後 directory_a 就稱為 directory_b 的「上層」。假設第 3 個項目「my_file」位在「directory_b」內,系統就會將其視為「directory_b」的子項,且「directory_a」的「andandchild」。

論壇中通常會以文字圖來表示這些關係,如下所示:

directory_a/
  directory_b/
    my_file

請注意,目錄名稱的結尾是 /,但檔案名稱不會。這個階層式組織通常稱為檔案系統的樹狀結構

同層級

如有多個檔案或資料夾在同一層級,則稱為「同層級」。範例:如果 file_bfile_c 位在 directory_a 內部,就會是同層級

文字圖表如下所示:

directory_a/
  file_b
  file_c

請注意,由於 file_b 和 file_c 為同層級項目,因此兩者的縮排都是相同的。

檔案路徑

這裡是比較複雜的文字圖,包含父項子項和同層級關係。

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

在本範例中,new_york_city/ 是目錄名稱,但同時具有一個「路徑」,詳細說明如何到達:~/north_america/united_states/new_york/new_york_city/

如要將目錄變更為 new_york_city/,,您可以使用名稱來逐步瀏覽,也可以使用路徑從一個指令中完整瀏覽。

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

導覽指令摘要

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

迷你挑戰

  • 使用 pwd 即可找出您所在的目前資料夾。
  • 請變更至其他目錄並確認新位置。
  • 請再試一次並瀏覽至其他資料夾。使用新指令來查看您的位置,並瀏覽這個目錄中的檔案。

建立檔案(&A) 目錄

版面取景和用途

開發人員需要透過程式碼建立檔案。為了使這些檔案更井然有序,我們必須建立「資料夾/目錄」,方便儲存檔案。

建立檔案和資料夾之前,請先記下您在終端機的位置。

# See your current location.
pwd

如要建立檔案,請使用指令 touch ,然後在後面加上檔案名稱。

# `touch` creates a new file.
touch style.css

建立檔案時,請新增副檔名以指定類型。檔案類型範例:

  • .js 建立為 JavaScript 檔案
  • .html 建立 HTML 檔案
  • .css 會建立 CSS 檔案
  • .md 建立了 Markdown 檔案

檔案名稱不得包含空格。

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

建立多個檔案

如要一次建立多個檔案,請在每個名稱之間加上空格。

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

製作目錄

如要建立目錄 / 資料夾,請使用指令 mkdir - 將「make directory'」的縮寫 - 後面接上資料夾的名稱。

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

製作多個目錄

如要一次建立多個資料夾,請在每個名稱之間加入空格。

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

迷你挑戰

  • 建立新的檔案。
  • 使用一個指令建立一些檔案。
  • 建立新目錄。
  • 建立幾個新目錄。只要使用一個指令即可。
  • 利用您熟悉的目錄瀏覽和建立檔案和資料夾,在桌面上利用檔案和資料夾建立「family_tree&#39」;

搬家 &&; 複製

移動檔案(&A) 目錄

版面取景和用途

我們可以在指令列上移動檔案或資料夾,但還是必須指定三個項目:

  1. 我們使用 mv 指令 - 進行移動的縮寫。
  2. 按照移動指令操作,包含您要移動的檔案或資料夾名稱。
  3. 使用您想移動檔案的目標檔案名稱。

舉例來說,如果您的檔案結構如下:

my_child_folder/
my_parent_folder/

結果看來,這好像不像她想像的那樣,而是在他們想成父母和小孩的時候,這其實是另外的兄弟姊妹。使用以下指令:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

最終的架構如下所示。

my_parent_folder/
  my_child_folder/

以下是一些 mv 指令的其他變化形式:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

警告:mv 也是使用語法 mv old_name new_name 重新命名檔案的指令,也就是說,如果您將檔案移動至不存在的目錄,或是目的地遺失,則系統會將檔案本身重新命名,而不會移動檔案。

迷你挑戰

  1. 建立 5 個文字檔案 (.txt)。
  2. 建立新目錄。
  3. 將您建立的 5 個檔案移至資料夾。
  4. 建立資料夾,並將這個新資料夾移到另一個資料夾中。

複製檔案(&O) 目錄

版面取景和用途

在建構網路應用程式的同時,我們可能希望複製檔案 (如果正在建立兩個類似的網頁,可能不想從頭開始),而 cp (複製) 指令的語法與 mv 語法非常類似。

複製檔案

複製指令包含三個部分:

  1. 指令 cp - copy 的縮寫
  2. 要複製的檔案名稱
  3. 副本的名稱 (若保留在相同資料夾中) 或位置和名稱 (如果已移至其他資料夾)。
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

如果您希望複本保留原始名稱,可以指定副本的位置,但不含檔案名稱。

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

具有相同名稱的多個檔案可能令人感到困惑,因此除非您確定檔案符合需求,否則不建議使用這個方法。

複製目錄

複製資料夾或目錄會有些複雜,因為您不僅要複製資料夾和當中的所有項目,

  1. cp -R 指令 - 複本遞迴的縮寫 - 適用於非空白資料夾和非空白資料夾。
  2. 來源名稱 (要移動的資料夾或檔案)
  3. 副本的名稱 (若保留在相同資料夾中) 或位置和名稱 (如果已移至其他資料夾)。

警告:指定副本的名稱時,如果系統先前沒有建立檔案或資料夾,系統會在您建立副本時建立副本。如果您是在執行複製指令前就已建立檔案,則會覆寫先前的檔案,因此請謹慎使用!

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

注意:cp -R-R 元件稱為旗標。標記一律以破折號表示,且可與指令搭配使用,以提供特定指令的詳細指示。

迷你挑戰

  1. 建立名為「my_original.txt」的檔案
  2. 為「my_original.txt」建立相同資料夾的新名稱。
  3. 建立新目錄。
  4. 請複製該目錄,但命名為不同的名稱。
  5. 複製複製的檔案 (從步驟 2 取得),但會將其複製到複製的目錄中 (從步驟 4 開始)。

移除檔案(&A) 資料夾

版面取景和用途

我們可以透過指令列刪除檔案和資料夾,但這麼做是永久性的。

移除檔案

如要移除 file,可以使用指令 rm (remove 的縮寫),後面加上檔案名稱。

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

移除空白的目錄

如要移除「空白」目錄,我們可以使用 rmdir - 縮寫目錄的縮寫,後面加上資料夾名稱。

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

移除非空白的目錄

如要移除「非空白」資料夾,您必須在 rm 指令後方加上 -R 標記 (即「遞迴」的縮寫),指示電腦刪除資料夾中的內容。身為捷徑,部分開發人員會使用「-Rf」標記「全部」移除所有項目 (否則,系統可能會提示您刪除部分子項檔案或資料夾)。

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

警告:使用 rm 指令不等於電子郵件的回收區或已刪除的部分,這些檔案無法輕鬆還原。使用這種方式刪除檔案時請「小心」。

迷你挑戰

  1. 建立 4 個檔案。
  2. 刪除其中 2 個檔案。
  3. 建立資料夾。
  4. 建立另一個資料夾,然後在這個資料夾中建立檔案。
  5. 刪除兩個目錄。

您可以在這個從 GitHub 下載的學生存放區內,於下列資料夾中找到此研究室的程式碼:command-line/labs/around-the-world

背景資訊

學期到國外就快到了,現在您開始規劃歐洲旅遊行程了...

在不久的將來有三個月的重大事件,您應該確保每個週末行程都徹底發揮效益。

幸運的是,你從頭到尾都沒辦法,不過朋友們在國外找過他們最愛的一些活動。很抱歉,部分檔案已經過混合...

別再憑空彈奏了,除了運用指令列的神奇功能外,您也可以馬上修正這些指令!

工作

確認所有城市都位於正確的國家/地區,且每個城市資料夾的內部都有適當的紀念碑。小心,否則你可能會到阿姆斯特丹尋找艾菲爾鐵塔!

如果你對這項做法感到有信心,請隱藏你的統一發票,並直接透過指令列完成這項挑戰。因此,在進行上述所有作業時,請保持使用「大致」資料夾,也就是在參照資料夾和檔案時,使用「絕對」路徑!

一旦你知道一切都適合,就為你訂購未來的幾個月的命令。腦力激盪,看看你需要看到哪些新城市、國家和紀念碑,即可將這些城市加入你的檔案樹狀圖!

恭喜!您已正式學會如何使用電腦。想進一步提升嗎?來聊聊擴充功能...

擴充功能

  1. 再次將您的所有檔案混合,然後再前往您指定的城市。重新整理檔案,同時所在城市
  2. 透過下方列出的有趣的命令列遊戲遊戲操作:
    Terminus Game
    Advanced Game (Google 已準備就緒)
  3. 是星際大戰的支持者嗎?請嘗試在指令列中執行 telnet towel.blinkenlights.nl,然後按下 Enter...。(請注意,在最新版本 MacOS 中,系統預設不會再安裝 telnet 指令;在這種情況下,可改用 nc towel.blinkenlights.nl 23 指令)。

您可以在這個從 GitHub 下載的學生存放區內,於下列資料夾中找到此研究室的程式碼:command-line/labs/bashing-away-repetition

準備好要重現每天的指令列使用情形嗎?好極了!

背景資訊

如果程式設計師很討厭,就是一再重複發生。身為電腦科學家,我們的工作是盡可能讓電腦發揮我們的工作能力。撰寫 bash 指令碼能協助我們提升指令列的運作效率。

首先,什麼是 bash 指令碼?

GREAT 問題。多虧了我們的朋友 Ryan Chadwick,在這個好地方找了指令列教學課程,對我們很有幫助。

透過 Bash 指令碼,我們即可自行定義一系列電腦動作,而不需自行輸入指令。如果某件工作的執行頻率很高,或是內容重複,則指令碼可能會是很實用的工具。

沒有重複的內容?我說的是這個

教學課程

首先,你必須授予電腦權限,才能執行指令碼。請執行下列指令。

chmod 755 myScript.sh

好的,開始撰寫你的第一個計劃了。前往 myScript.sh (看看是否可以從指令列開啟檔案)。在檔案最後加入:

echo "Hello World"

現在執行:

./myScript.sh

。** TA DA ** 您應該會看到「Hello World」;印在感應式刷卡機上。

慶典

您在 bash 指令碼中寫入的所有內容,都會和您在終端機中輸入時一樣執行。讓我們再舉個例子說明。首先為指令碼建立檔案,這個檔案可稱為任何所需項目,但副檔名應為 .sh接下來,請務必輸入 chmod 755,接著在終端機中輸入指令碼名稱,然後按下 Enter 鍵,授權系統執行指令碼。每次啟動新的 bash 指令碼時,請務必完成這兩個步驟。

入門挑戰

現在,請試著撰寫能建立新資料夾的指令碼。我們知道什麼指令會建立新的資料夾?如果你想搜尋名稱開頭為 m 且結尾是 kdir 的字詞,就代表自己做對了。請編寫用來建立新資料夾的指令,並以新 .sh 檔案為資料夾命名,然後在終端機執行。

如果問題順利解決,請進行下列其他驗證方式。如果你還是不太熟悉,請回頭看看世界各地的研究室,並想想自己是如何打造出新的國家/地區和城市資料夾。

別害怕使用上文的教學課程,準備大膽運用您的 Google 技術!編寫並執行指令碼,以便執行下列作業:

主要工作

  1. 將指令新增至您在上方建立的檔案,瀏覽到您要建立的資料夾。(我們是以什麼指令來變更目錄?)
  • 為新的資料夾名稱加上日期戳記。舉例來說,您的程式應建立一個名為「2017-12-07my_super_cool_folder」的資料夾,
  1. 列印「我目前的目錄:」;後面加上你的工作目錄,以及「這個目錄上所有的清單![&tt],後面接著您目前目錄的內容。
  2. 瞭解如何為 bash 指令碼提供輸入,並根據輸入字串建立檔案。先前在研究室中連結的教學課程,在變數部分提供了一些不錯的範例。
  3. 請要求使用者提供姓名,然後列印出「嗨,你好!」按這裡
  • 您可以向使用者索取更多資訊,並為他們建立自訂訊息。

背景

指令列 (或終端機) 可讓您直接與電腦作業系統 (OS) 互動,也就是透過圖形介面 (GUI) 執行的所有動作 (包括透過瀏覽、製作新檔案或執行指令碼)。這些指令列將用於開啟檔案,並在使用 Google App Engine 時啟動開發環境。

使用中的指令列

存取終端機

Mac 快速鍵:

  • 使用 Command + 空格鍵開啟 Spotlight
  • Spotlight Search 中輸入 Terminal
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

建立檔案(&F) 資料夾

建立檔案

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

建立資料夾

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

移動檔案(&A) 資料夾

移動檔案

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

移動資料夾

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

搬家是「重新命名」

提醒您,mv 也是用來重新命名檔案或資料夾的指令,

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

複製檔案(&A) 資料夾

複製檔案

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

複製資料夾

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

刪除檔案(&A) 資料夾

刪除檔案

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

刪除資料夾

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

提示和秘訣

  • 即使不覺得有必要,也可以利用指令列進行練習。我們會不斷精益求精
  • tab 鍵會自動完成您的檔案或資料夾名稱 (區分大小寫)。
  • 如果只剩下一個相符的檔案或資料夾,系統就會進行自動完成。
  • 如有多個相符的檔案或資料夾,按兩下分頁即可查看其餘的相符內容清單。
  • 向上 / 向下鍵會循環朗讀您的指令紀錄,這樣您就不必重新輸入指令。
  • 使用 clear 指令清除終端機視窗。這會保留您先前的所有工作 - 向上捲動即可查看。
  • 使用 reset 重新啟動終端機。雖然這麼做無法維持較早的工作進度,但如果終端機開始以無法預測的方式運作,則可自行解決多個問題。
  • 按下 option + arrow 即可用單字移動遊標

最佳做法摘要

  • 使用 cdcd ..cd <folder name> 瀏覽終端機。
  • 使用 ls 查看資料夾內容。
  • 使用touch建立檔案;使用 mkdir 建立資料夾。
  • 使用 mv <item to move> <destination> 移動檔案和資料夾。
  • 使用cp <item to copy> <destination>複製檔案和資料夾。
  • 使用 rm <item to remove> 刪除檔案和資料夾。

第 1 題

您該如何辨識目前的工作目錄?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

第 2 題

您要如何將兩個等級從目前的工作目錄上移?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

第 3 題

您會使用什麼指令重新命名檔案?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

第 4 題

mv script.py」指令為何會發生錯誤?

  1. 因為「script.py'」是無效的檔案名稱。
  2. 由於 mv 指令無法繼續追蹤其他資訊,
  3. 這是個常見問題,並不會擲回錯誤。
  4. 移動檔案需要至少兩個引數:一個目標與一個目的地

第 5 題

cd ~ 指令會執行什麼操作?

  1. 將工作目錄變更為主目錄。
  2. 重複先前的指令。
  3. 使用演算法找出目前最有用的指令。
  4. 擲回錯誤。

問題 6

以下何者「不是」使用分頁自動完成檔案名稱的原因?

  1. 省時又省力
  2. 因為這有助於排除拼字錯誤。
  3. 因為需要更低的處理能力。

問題 7

如果新的開發人員嘗試建立名稱為「my script.py」的檔案,touch my script.py 指令為什麼會失效?

  1. 因為 touch 無法建立新檔案。
  2. 因為 .py 不是有效的副檔名。
  3. 因為這樣會產生兩個檔案,一個名稱為「my」,另一個名稱為「script.py」,而不是一個檔案。
  4. 因為無法透過指令列建立新檔案。

第 1 題

您該如何辨識目前的工作目錄?

pwd

第 2 題

您要如何將兩個等級從目前的工作目錄上移?

使用 cd ../.. 時,你必須上移兩個層級 (每個 .. 代表上一層)。

第 3 題

您會使用什麼指令重新命名檔案?

mv 可用來將檔案移至其他位置,也可以用來變更檔案名稱。

第 4 題

mv script.py」指令為何會發生錯誤?

mv 指令需要兩個引數:來源檔案和目的地檔案。

第 5 題

cd ~ 指令會執行什麼操作?

這項操作會將工作目錄變更為你的主目錄。特殊字元 ~ 是用來識別目前使用者的主目錄。您也可以將這個使用者名稱與不同的使用者名稱搭配使用:~user2 以指向其主資料夾。

問題 6

以下何者「不是」使用分頁自動完成檔案名稱的原因?

因為需要更低的處理能力不正確tab 需要處理 (通常是可忽略) 的處理能力,才能掃描尋找檔案名稱的資料夾進行自動完成,但能節省時間並避免處理過程中的拼字錯誤。

問題 7

如果新的開發人員嘗試建立名稱為「my script.py」的檔案,touch my script.py 指令為什麼會失效?

這項操作將會建立兩個檔案,而不是只建立一個檔案。touch 指令會建立新檔案。終端機空間是分隔字元,而不是在檔案名稱內包含的字元。最好不要全部填寫,但如果一定要使用,檔案名稱應以雙引號括住:

touch "my script.py"

第 1 題

用來變更目錄的終端機指令為:

  1. move
  2. mkdir
  3. pwd
  4. cd

第 2 題

如果您要前往目前工作目錄的上層資料夾,請執行什麼指令?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

第 3 題

使用什麼指令建立檔案?

  1. touch
  2. mkdir
  3. create
  4. pwd

第 4 題

下列哪些指令會建立兩個名稱為 index.htmlstyle.css 的檔案?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

第 5 題

你使用什麼指令重新命名檔案或資料夾?

  1. rename
  2. move
  3. mv
  4. rm

問題 6

rm cp 指令需要處理哪些標記?

  1. -f
  2. -r
  3. -x
  4. -d

問題 7

如要將 projects 移至 ~/Documents 並重新命名為 Projects,請將下列的空白指令加入其中?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

問題 8

以下指令的用途為何?

rm -r projects

  1. 刪除名為「projects」的檔案
  2. 刪除名為「projects」的資料夾
  3. 重新命名名為「projects」的檔案
  4. 搜尋 projects 目前目錄的內容

第 1 題

用來變更目錄的終端機指令為:

用於變更目錄的終端機指令為 cd指令本身是「變更目錄」的縮寫。

第 2 題

如果您要前往目前工作目錄的上層資料夾,請執行什麼指令?

要前往上層資料夾的指令是 cd ..

第 3 題

使用什麼指令建立檔案?

建立檔案的指令是 touch

第 4 題

下列哪些指令會建立兩個名稱為 index.htmlstyle.css 的檔案?

touch index.html style.css 指令會建立這兩個檔案。您無須使用逗號,且可以透過這種方式建立任何數量的檔案,並以空格分隔。

第 5 題

你使用什麼指令重新命名檔案或資料夾?

這個圖示代表「移動」選項,而且可用來移動檔案或資料夾,mv也可以用來重新命名檔案和資料夾

問題 6

rm cp 指令需要處理哪些標記?

rmcp 指令必須使用 -r 標記才能處理資料夾,因為 -r 標記代表「遞迴」;並為其中的所有檔案和資料夾重新執行指令。

問題 7

如要將 projects 移至 ~/Documents 並重新命名為 Projects,請將下列的空白指令加入其中?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

我們從主目錄著手,因此必須執行 cd ~/Documents ,才能讓最終指令在正確的目錄中執行。

問題 8

以下指令的用途為何?

rm -r projects

此指令會刪除名為「projects 」的檔案,因為該檔案是透過 -r 呼叫,或是以遞迴旗標的方式刪除。如果沒有這個標記,這個指令將只能刪除名稱相同的檔案。