Try   HackMD

Command Line & Shell Script

tags: 程式導師 Command Line 課程筆記

常用指令

  • pwd 想知道現在的檔案位置
  • ls 想知道目前資料夾內有哪些東西
  • cd 在資料夾內穿梭
    • cd 回到最高層的資料夾
    • cd .. 回到上層資料夾
    • cd ~ 等同 cd Users/laiyenju
  • man 忘記指令,就輸入
  • touch <檔案名稱> 建立新檔案,若 touch 既有檔案,會更新既有檔案的上次修改時間。
  • mkdir 建立新資料夾
  • rm <檔案名稱> 刪除檔案
  • rmdir <檔案名稱>rm -r <檔案名稱> 刪除資料夾
  • mv <檔案名稱> <目的地資料夾> 移動檔案
  • mv <檔案名稱> <新的檔案名稱> 更改檔案名稱
  • cp <檔案名稱> <複製出來後的檔案名稱> 複製檔案
  • cp -r <資料夾名稱> <複製出來後的資料夾名稱> 複製資料夾名稱
  • cat <檔案名稱> 直接在 terminal 內瀏覽檔案內容
  • less <檔案名稱> 當檔案內容很多時可使用,就能滾動瀏覽檔案內容

小技巧/觀念

  • cd 時,使用 tab 可以不需要輸入完整檔案名稱,系統會自動補完檔案名稱。
  • 指令有內建也能自行安裝,像wget 就是自行安裝的指令
  • > < 導向指令(redirection)
  • | 組合指令(pipe)
導向指令 效果
ls -al > list_result 將資料夾內的檔案列表輸出成為 list_result 檔案。
echo "123" > 123.txt 將 123.txt 內容變成 123
接著輸入 echo "456" > 123.txt 覆寫 123.txt 的內容,只會有 456
接著輸入 echo "456" >> 123.txt 會在 123.txt 原本內容之後,放入 456,不會覆寫。
組合指令 效果
`cat 123.txt grep 4`
`cat 123.txt grep 4 > result`

Vim

可以直接進入檔案進行編輯,也能當作文字編輯器使用。

  • vim <檔案名稱> 用 vim 開啟並編輯檔案內容
  • 分為普通模式、insert 模式,進入頁面預設是普通模式,按下 i 才會切換到 insert 模式,按下 esc 切回普通模式。
    • 普通模式:刪除、複製、貼上功能
    • insert 模式:打字
  • :q 離開 vim
  • :wq 存檔後離開 vim

進階指令

  • grep 抓取關鍵字
    grep <關鍵字> <要搜尋關鍵字的檔案> 就能查找在檔案內的關鍵字。
  • wget 下載檔案
    wget <圖片網址> 會下載該網頁圖片
  • curl 送出 request,可以用來測試 API

Shell Script 程式化腳本

為何要學 shell script?

  • 通用(任督二脈)
  • 快速

/etc/shells 檔案可知道能用的 shell 有多少
bash = Bourne Again SHell

CVS、RCS、VCS、SCM 名詞定義
Tech Talk: Linus Torvalds on git

BitKeeper

版本管理工具的重要要素:

  • distributed
  • performance
  • guarantee the outcome the same as SCM

Bash shell

tab 鍵的功能

  • 命令補齊
  • 檔案補齊

zsh 相容所有 bash 指令

執行 shell.sh 的方式有很多,使用 mac 的話,可以直接以 bash shell.sh 執行。

#!/bin/bash # Program: # This program shows "Hello World!" in your screen. # History: # 2015/07/16 VBird First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo -e "Hello World! \a \n" exit 0
  • #!/bin/bash 因為使用的環境是 bash,所以要宣告使用的語法是 bash 語法,告訴電腦要使用 bash shell。
  • PATH=...LANG=... 將環境變數設定好。
  • echo ...

鳥哥:使用撰寫 script 的工具最好使用 vim 而不是 vi ,因為 vim 會有額外的語法檢驗機制,能夠在第一階段撰寫時就發現語法方面的問題喔!