Command Line 筆記


Posted by krebikshaw on 2020-06-12

前言

  1. Command Line 是什麼?
    Command Line 是一種用指令跟電腦做溝通的方式。不像我們一般在視窗操作的時候,會使用滑鼠點選按鈕或功能來操控程式,使用 Command Line 的時候,電腦只認識指令,要用電腦看得懂的語言來與電腦做溝通。

  2. 為什麼要使用 Command Line?
    若是我們要開發網站,往往需要租一台 Server 來使用,當我們連線到 Server 的時候,他是沒有視窗給你點選的,不會有按鈕也不會有介面給你操作。這個時候只能使用 Command Line 來做溝通。

  3. Command Line 會用在哪裡?
    當我們遇到的軟體或服務,只提供 Command Line 來使用時,你就只能藉由 Command Line 來操作。不論是操控自己的電腦,或是從網際網路與外界私服器連線,都可以使用 Command Line。

環境建置

若使用 Mac 來操作,推薦使用 Command Line Tool - iTerm2
可以參考超簡單!十分鐘打造漂亮又好用的 zsh command line 環境

基本指令介紹

pwd: 印出目前位置
常用度:★★★☆☆ (通常一開始需要知道自己在哪裡的時候用)

  • Print Working Directory

ls:列出檔案清單
常用度:★★★★★ (每進入一個新的資料夾,都需要看看裡面有哪些檔案)

  • List
  • 補充:
    • ls -al:列出檔案細節

cd:切換資料夾
常用度:★★★★★★★★ (無時無刻都在使用的指令)

  • Change Directory
  • 補充:

    • cd ..:回到上一層資料夾
    • cd ~:回到根目錄
  • 小技巧

    • cd 空格 加資料夾名稱的開頭幾個單字,按下 tab 會自動補完資料夾名稱。
    • cd 空格 加上 tab,會自動顯示底下可以選擇的子資料夾。

man:指令使用手冊
常用度:★☆☆☆☆ (我自己覺得直接 Google 比較方便)

  • Manual
  • 當你不曉得某個指令有哪些參數可以使用時,可以用man
  • 例如:man ls會出現 ls的規範

檔案操作相關指令

touch:修改檔案時間 or 建立檔案
常用度:★★★★★★ (可以用來新建一個全新的檔案)

  • 使用方式:touch 檔案名稱
  1. 功能一:若 touch 一個現有的檔案,則會將檔案時間修改為現在時間。
  2. 功能二:若 touch 一個不存在的檔案,則會新建一個新的檔案。

rm:刪除檔案 or 資料夾
常用度:★★★☆☆ (想刪除檔案或資料夾時使用)

  • Remove
  • 若是想刪除檔案,可以使用:
    • rm file
  • 若是想刪除 folder 資料夾有兩種做法:
    1. rmdir folder : 資料夾內若有東西,會跳出錯誤訊息,告訴你資料夾不是空的,所以不能刪除
    2. rm -r folder : -r 不論資料夾是不是空的,直接刪除資料夾及資料夾底下所有檔案,需謹慎使用!

mkdir:新建資料夾
常用度:★★★★★ (想新增資料夾時使用)

  • Make Directory
  • 使用方式: mkdir 資料夾名稱

mv:移動檔案 or 重新命名
常用度:★★★☆☆ (名字取錯或檔案移動時使用)

  • Move
  • 使用方式:
    1. 功能一:將檔案移動到其他資料夾底下
      • 舉例: mv file folder : 把 file 這個檔案移動到 folder 資料夾底下
      • 檔案 folder 路徑分為 :相對路徑 or 絕對路徑
        1. 相對路徑:相對於當下所在的資料夾 (我已經在OO國中裡,我只要輸入幾班就可以找到了人)
          • mv file folder
        2. 絕對路徑:以根目錄為標準,通常以 / 為開頭 (我可能在別的縣市,我要輸入完整的學校地址才找得到人)
          • mv file /Users/Desktop/folder
    2. 功能二:找不到資料夾時,會修改檔案名稱
      • 舉例: mv file_old file_new : 將檔案 file_old 改名為 file_new

cp :複製檔案 or 複製資料夾
常用度:★★☆☆☆ (複製資料夾使用)

  • Copy
  • 使用方式:
    1. cp file_1 file_2 :複製一個新的檔案 file_2
    2. cp -r folder_1 folder_2 :複製一個新的資料夾 folder_2

cat :快速查看檔案內容
常用度:★★☆☆☆ (當我們有非常多檔案時,可以用這個功能來快速確認檔案內容)

  • 使用方式: cat 檔案名稱

Vim 編輯器

可以直接在 Command Line 中編輯文字的編輯器,區分為一般模式及輸入模式。

  • 切換方式:
    • 按下 i 進入編輯模式 :可以編輯文字
    • 按下 esc 回到一般模式 :無法編輯文字,可以刪除、複製、貼上
  • 跳出 Vim 編輯器:
    • 可以按下 :q :跳出
    • 或者是按下 :wq :存檔後跳出
      引用一段同學的筆記,關於跳出 Vim 也有一些要注意的地方:

      跟大家分享一下,因為我用 command line 很習慣用 ctrl + z 跳回去,而當我 vim 一個檔案時,假設我 vim hello.txt 後,該檔案會自動產生一個檔案叫做 hello.swp,照我爬文的內容指出這個 .swp 檔算是備份的角色,如果你原本檔案遺失或是毀損可以透過這個檔案復原,而當 vim 的視窗「正常」結束時,系統會自動把 .swp 檔案自動刪除,但假設假設!如果今天 vim hello.txt 到 vim 的畫面時,按下 ctrl + z,系統會判定「不是正常結束」,因此 .swp 檔案不會消失,而當你再次 vim hello.txt 時,而且之後每次 vim 這個檔案時,都會跳出這視窗,解決辦法就是剛好可以練習一下 rm 的指令:rm .hello.txt.swp

其他好用指令

grep:關鍵字搜尋

  • 使用方式: grep 關鍵字 檔案名稱 可於檔案中抓取關鍵字直接顯示出來

wget:下載檔案

  • 非內建指令,需要自行安裝才可以使用
  • 可參考Homebrew

curl:送出 request

  • 使用方式: curl 網址 可以發送 request 到該網址去。
  • 補充: curl -I 網址 可顯示細節資料

nslookup:查看 ip 位置

指令的組合技

>:將指令結果輸入到檔案內容

  • 舉例:ls > file 將 ls 的結果寫進 file 當中
    • 注意!此用法會覆蓋掉原本 file 裡面的內容
    • 若是不想覆蓋掉,只是要新增文字進去,可以使用 >>代替

|:將左邊指令的輸出變為右邊指令的輸入

  • 舉例:cat test.txt | grep file.js 把 test.txt 的內容輸入到 file.js 當中
    基於老師這句話實在太難看懂了,我這邊重新理解過後用自己的方式說明出來
假設我有兩間工廠:
A工廠 負責將 小麥製作成麵粉,所以你給A工廠輸入小麥,它就會輸出麵粉給你。
B工廠 負責將 麵粉製作成麵條,所以給B工廠輸入麵粉,它就會輸出麵條給你。

我在 A工廠 及 B工廠 間加了一條管子,可以直接將 A工廠 製作完的麵粉,輸送進 B工廠。 
這樣就完成了 AB工廠 的合併,我只要輸入小麥,直接輸出麵條給我。

小麥 => A工廠 => 麵粉 => 運送麵粉 => 麵粉 => B工廠 => 麵條
小麥 => A工廠 | B工廠 => 麵條

echo:將內容印出來,有點像 console.log

  • 舉例1:echo hello
  • 舉例2:echo hello | grep file

後記

要習慣用文字跟電腦做溝通不是一件容易的事情。沒有那些美美的圖案讓你按。

操作的畫面要在自己腦海裡想像,每個動作都要想一下怎麼變成指令。也會忍不住想要偷偷回去用介面做操控。

不過我想到一個說服自己練習 Command Line 的方式,就是去外面咖啡廳坐下來,開啟 Command Line Tool,自己腦補路人一定會覺得自己看起來很厲害,馬上整個振奮起來。畢竟或是用指令來操控電腦,真的會比用介面操作帥上好幾倍啊!


#command line







Related Posts

[ Day 01 ] Python unittest 單元測試 | 專案應用分享

[ Day 01 ] Python unittest 單元測試 | 專案應用分享

Progressive Web App 會是未來趨勢嗎?

Progressive Web App 會是未來趨勢嗎?

Day04 - SignalR 簡介

Day04 - SignalR 簡介

在 Yourator 的兩個月零九天與社會新鮮人生活雜談

在 Yourator 的兩個月零九天與社會新鮮人生活雜談

一起來玩 OSRF 的 TensorFlow Object Detector

一起來玩 OSRF 的 TensorFlow Object Detector

Browser Rendering Optimization

Browser Rendering Optimization



Comments