[Week 1] Command Line 入門 & 基本指令


Posted by Heidi-Liu on 2020-06-14

本篇為 [CMD101] Command Line 超新手入門[CS101] 初心者的計概與 coding 火球術 這兩門課程的學習筆記。如有錯誤歡迎指正!

關於寫程式這件事

就是對電腦下指令(程式碼),讓電腦執行我們想要的動作(解決問題)。

條列式的重要性

試著用「程式化思考」將解法以標準化的格式呈現。

範例:「給你一串文字,問你裡面有沒有 p」

1. 假設 n 是 1,length 是字串長度,
   A 設成 -1 代表找到的位置,p 是要找到的字   //字串不會有負數,若小於零代表找不到

2. 看第 n 個字是不是 p,是的話 A=n  //把 A 設成 n 的值,若 n=3,即在第 3 個數找到 p

3. 把 n+1,如果 n+1 大於 length 的話,就跳到第 5 步  //條件機制

4. 跳回第 2 步  //迴圈的概念

5. 如果 A < 0,代表沒出現過;否則 A 就是答案

Command Line 是什麼?

  • 操控電腦的方法大致上分兩種類型:
  1. GUI(Graphical User Interface,圖形化介面):一般習慣使用的電腦操作介面,透過設計出的「圖形」來下指令。
  2. CLI(Command Line Interface,命令列介面):透過「純文字」來達成指定動作。
  • 兩種都可以用來和電腦溝通;但有些伺服器可能沒有 GUI (例如 database),這種情況就只能使用 CLI 來進行操作。

環境設置

  • 要執行 Command Line 指令,必須先根據作業系統安裝 Command Line Tool:
  1. Windows:git-bash(推薦)、Cmder
  2. Mac:iTerm2

基本指令介紹

所謂的「指令」其實也是由程式寫成,我們藉由輸入指令來執行程式。

pwd(Print Working Directory):印出目前所在位置

ls(List):印出當前位置檔案清單

  • ls-l:長格式(long),顯示有關檔案的詳細資訊
  • ls-a:列出所有檔案(包括隱藏檔)

cd(Change Directory) 切換目前資料夾

  • cd ..:回到上一層資料夾
  • cd ~:回到 home 目錄(我的文件)
  • cd /:回到根目錄
    • 絕對路徑:「一定由根目錄 / 寫起」
      cd /Users/share/data
    • 相對路徑:「不是由 / 寫起」
      cd test
  • 範例:「若要從 /downloads/test/data 到 /downloads/test/media 底下時」
    可以寫 cd ../media:先回到上一層,再進入 media 資料夾
    也可寫 cd ~/downloads/test/media:直接用絕對路徑進入

cd 語法練習

小技巧:直接把圖形介面的資料夾拖到 CLI 裡,就會自動輸入那個資料夾的絕對路徑。可節省打字時間。

clear:清空螢幕

touch:碰一下

  • 作用 1:touch 現有的檔案,會修改檔案時間成當前時間
  • 作用 2:若檔案不存在,則會新增檔案

mkdir:MaKe DIRectory 新增資料夾

rm:ReMove 刪除檔案(註:有關刪除指令需慎用)

rmdir:刪除資料夾

  • 也可用 rm -r 指令來刪除檔案或資料夾

cp:CoPy 複製

  • 範例 1. cp data data_2:複製出一個 data_2 檔案
  • 範例 2. cp -r deep deep2:複製出一個 deep2 資料夾

mv:MoVe 移動檔案 or 更改檔名

  • 作用 1:當找到該資料夾時,檔案會移到資料夾裡
    • 範例:mv data folder:將 data 檔案移到 folder 資料夾裡
  • 作用 2:當找不到該資料夾,則會更改檔案名稱
    • 範例:mv data test:將 data 檔案名稱更改為 test

vim:進入文字編輯器

本來想說沒問題,結果還真的卡很久無法回到上層介面 Orz
需按下 [ESC] 按鍵回到一般指令模式,才能下 :wq 指令存檔(write)並離開 (quit)。

參考 vim 介紹:

vi 與 vim 的指令整理
鳥哥的Linux 私房菜-- 第九章、vim 程式編輯器
超簡明 Vim 操作介紹


更多常用指令

date:印出當前日期

top(Table Of Processes):印出所有Process,可持續偵測程序運作的狀態(按 q 鍵離開)

cat(CATenate):查看檔案內容

less:分頁式印出檔案

grep:抓取特定關鍵字

echo:印出字串

|(pipe):把前面的輸入「變成」後面的輸出

  • 範例:cat file.txt | grep hi:從印出的 file.txt 內容中,抓取字串 hi 並輸出

>(redirect):將輸入或輸出重新導向

  • 範例 1:date > time.txt:將 date 輸出到 time.txt
      再輸入 cat time.txt,會顯示出 Sun May 31 20:29:57 UTC 2020

  • 範例 2:echo "123" > 123.txt:印出 123 到 123.txt
     1. 若輸入 echo "456" > 123.txt:顯示 456,檔案會被全部覆蓋
     2. 若輸入 echo "456" >> 123.txt:顯示 123456,兩個 > 會新增內容在最後

wget:下載檔案

  • 範例:輸入 wget https://www.google.com.tw/,即可下載 Google 首頁的網頁原始碼(index.html)

curl:送出 request,可用來測試 API


補充:檔案格式

  • 內容是一回事,如何解讀是另一回事
  • 在電腦裡的任何檔案,其實都是以純文字組成,可用不同格式進行解析
  • 可以透過設定副檔名(如:文件.pdf、圖片.jpg)幫助電腦辨別格式

參考資料:

  1. [第一週] Command Line - Terminal、基本指令介紹
  2. Linux Command 命令列指令與基本操作入門教學
  3. 介紹好用工具:Cmder ( 具有 Linux 溫度的 Windows 命令提示字元工具 )
  4. [心得] iTerm2 + zsh,打造更好的工作環境

#command line







Related Posts

Day 143

Day 143

Check If All 1's Are at Least Length K Places Away

Check If All 1's Are at Least Length K Places Away

[Week 6] CSS:其他整理

[Week 6] CSS:其他整理


Comments