圖片來源:郭耀仁 from DATAINPOINT
按下訂閱鈕透過電子郵件收到我的文章🎉
許多非資訊背景的學員在使用 Jupyter 學習 Python 的時候多會對於 Jupyter Notebook 啟動時候背景在執行的黑色視窗還有新增選單的 Terminal 感到困惑,這是本篇文章的主角:命令列介面(Command Line Interface, CLI)。
圖片來源:郭耀仁 from DATAINPOINT
TL; DR
在這篇文章中,我們介紹了五個基礎的命令列介面指令並提供了環境鼓勵讀者可以實際操作。
whoami: 我是誰?
pwd: 我在哪裡?
ls: 這裡有哪些檔案和資料夾?
touch: 我要新增檔案
mkdir: 我要新增資料夾
兩種操作電腦的介面
對於電腦的一般操作,像是尋找檔案或資料夾、新建檔案或資料夾、執行檔案或者移除檔案或資料節,可以透過兩種介面來進行:圖形使用者介面(Graphical User Interface, GUI)以及命令列介面(Command Line Interface, CLI),我們在日常生活中已經非常習慣圖形使用者介面操作電腦,不過對於命令列介面卻十分陌生,甚至不覺得有任何使用命令列介面的需求。
事實上,圖形使用者介面因為對於操作者極其友善、能夠以滑鼠或觸控進行,在多數時候絕對是我們的首選;不過從事程式設計相關的學習時,卻會發現命令列介面為我們開啟了更多可能性,像是啟動與停止伺服器(是的,按下 Control-C 可以確實結束 Jupyter Notebook)、下載與安裝工具還有執行程式碼等。
命令列介面還可以再區分終端機(Terminal)與殼(Shell),我們可以將前者比喻為命令列的硬體、後者則是命令列的軟體;具體的運作情況我們其實是撰寫殼語言(Shell script),終端機將殼語言翻譯後再和電腦進行溝通。
命令列介面已經存在並且蓬勃發展近 50 年,透過指令我們可以大幅提升電腦操作的效率,亦被稱為「程式設計的通用黏著劑」,透過命令列介面使用者能夠組合既有的應用程式、自動化重複任務並在雲端部署。
實作環境
若您是付費訂閱用戶,登入 lab-datainpoint 後伺服器選項(Server Option)請選擇:任意環境。
若您是免費訂閱用戶,使用 BinderHub 連結啟動一次性環境:https://mybinder.org/v2/gh/datainpoint/project-getting-started-with-cli/HEAD
命令列介面入門
在 Jupyter 首頁點選 New > Terminal 在瀏覽器開啟一個新的分頁。
圖片來源:郭耀仁 from DATAINPOINT
電腦的設計理念允許多位使用者共同使用,共享的檔案與資料放置在系統路徑下,個人的檔案與資料夾放置在使用者路徑下。我們首先要學習的是能夠回答「我是誰?」以及「我在哪裡?」的指令 whoami
與 pwd
。 其中 whoami
指令非常可愛且直觀,實作環境不論 lab-datainpoint 或 BinderHub 都是 JupyterHub 的架構,所以使用者名稱都叫做 jovyan(意指住在 Jupyter 的居民);而 pwd
指令則是 print working directory 的縮寫,能夠將目前 jovyan 所在的工作目錄印出來,而 /home/jovyan 就是所謂使用者的「家目錄」,/ 指的是根目錄(root),就像是 Windows 作業系統中的 c:\ 一般,在根目錄下有 home 資料夾,在 home 資料夾下有 jovyan 資料夾。
whoami
## jovyan
pwd
## /home/jovyan
接著要學習的是能夠列出檔案與資料夾供使用者檢視的 ls
指令,這是 list 的縮寫。目前會看到一個副檔名為 .md 的讀我檔案。
ls
## README.md
讓我們使用能夠新增檔案的 touch
指令創造一個副檔名為 .txt 的空白文字檔案,新增之後再使用一次 ls
指令,就能看到家目錄多了一個 hello_cli.txt。
touch hello_cli.txt
ls
## hello_cli.txt README.md
既然可以新增檔案,就能夠新增資料夾,使用能夠新增資料夾的 mkdir
指令創造一個名稱為 my_first_folder 的資料夾,mkdir
指令是 make directory 的縮寫,新增之後再使用一次 ls
指令,就能看到家目錄多了一個 my_first_folder。
mkdir my_first_folder
ls
## hello_cli.txt my_first_folder README.md
如果希望多寫哪些題材,留言和我說👇