環(huán)境與命令行實操)
1. 為什么要從 Python 和 Linux 開始1.1 這套組合到底意味著什么看到26期_01_Python Linux這個標(biāo)題我第一反應(yīng)是這又是一個面向零基礎(chǔ)開發(fā)者的入門系列課程而且是整個系列的第一講。Python 和 Linux 放在一起講不是因為培訓(xùn)機構(gòu)喜歡把兩個熱門詞拼在一起而是這兩樣?xùn)|西在真實開發(fā)場景里根本拆不開。我自己這些年接觸過不少剛?cè)胄械耐瑢W(xué)很多人一開始只裝了 Windows裝個 Python 也能跑但一旦需要部署項目、處理定時任務(wù)、操作服務(wù)器日志、跑數(shù)據(jù)腳本就繞不開 Linux。業(yè)界常說寫代碼在 Windows跑代碼在 Linux這是非常實際的體驗。所謂一期課程的01通常意味著從零開始講不假設(shè)你懂命令行不假設(shè)你配置過環(huán)境甚至不假設(shè)你了解什么是操作系統(tǒng)層面的文件權(quán)限。所以這篇內(nèi)容適合誰適合剛接觸編程、想把 Python 作為第一門語言同時想搞懂它和 Linux 如何協(xié)作的同學(xué)。也適合那些已經(jīng)會寫一點 Python 但從來沒在 Linux 下部署過東西的初級開發(fā)者。你可以把它當(dāng)作整個入坑路線的第一站。1.2 剛開始最需要解決的三個問題我在帶新手的過程中發(fā)現(xiàn)Python 和 Linux 入門階段最難的不是語法而是幾個非常基礎(chǔ)卻繞不開的問題。第一個是環(huán)境問題。Python 有 2 和 3 的區(qū)別有不同版本有系統(tǒng)自帶的 Python 和手動安裝的 Python如果沒搞清楚這些共存關(guān)系后面安裝包、跑腳本會出現(xiàn)大量看起來莫名其妙的問題。第二個是工具鏈問題。很多人知道用 pip但不知道為什么同一個項目在這臺機器能跑、換臺機器就掛更不知道虛擬環(huán)境存在的意義。第三個是感覺問題。Linux 的命令行一打開就是黑底白字沒有任何圖形界面提示新手第一反應(yīng)是我該干什么。這需要一個循序漸進(jìn)的場景來引導(dǎo)而不是直接丟一本命令大全。這篇文章的思路就是圍繞這三個問題展開先把 Linux 環(huán)境跑起來再把 Python 環(huán)境理清楚最后讓兩者在真實的小任務(wù)里配合起來。讀完你會有一種原來如此的感覺而不是背了一堆命令。2. 內(nèi)容整體設(shè)計與思路拆解2.1 為什么把 Linux 擺在 Python 前面很多零基礎(chǔ)的課程會先講 Python 語法再補 Linux但這里的設(shè)計順序反過來了先讓大家在 Linux 里待著邊操作熟悉命令邊引入 Python。這個安排是有道理的。先學(xué)一點點 Linux 基礎(chǔ)比如 cd、ls、mkdir、vim 這幾個命令后面在寫 Python 的時候會非常自然地把文件路徑、目錄結(jié)構(gòu)、執(zhí)行權(quán)限這些東西串聯(lián)起來。反過來如果你先用 Windows 寫 Python 寫了一個月突然切換到 Linux光是文件路徑的風(fēng)格差異和命令行的操作習(xí)慣就夠你適應(yīng)好一陣子學(xué)習(xí)曲線反而更陡。我自己試過一次快速切換教學(xué)方案讓零基礎(chǔ)學(xué)員先花三天熟悉 Linux 終端每天都用命令行創(chuàng)建文件、移動文件、編輯腳本然后再開始寫 Python。結(jié)果這些人后面遇到路徑拼接、跨平臺部署問題的時候理解速度明顯快過那些從 Windows 直接起步的人。因為 Linux 命令行天生就逼著你理解文件在哪里哪個程序在跑這些底層概念寫代碼時思路會更踏實。2.2 方案選型哪種 Linux 更合適對于剛接觸 Linux 的同學(xué)選發(fā)行版確實是個容易糾結(jié)的事情。我的建議非常直接如果你是為了跟課程、打基礎(chǔ)用 Ubuntu 或者 Debian 系就好原因是生態(tài)成熟、資料多、包管理器簡單。日常中無論是安裝 Python 相關(guān)的系統(tǒng)依賴庫還是安裝 Nginx、Redis 這類服務(wù)apt 一條命令基本都能搞定出問題的時候網(wǎng)上也有大量現(xiàn)成答案。很多初學(xué)者會問為什么不直接上 CentOS 或者更小眾的發(fā)行版不是不能但沒必要。入門階段不要給自己增加額外的環(huán)境差異成本。實際工作生產(chǎn)環(huán)境用什么發(fā)行版那是公司架構(gòu)師考慮的事情你自己學(xué)習(xí)階段先把用 Linux 干活這個手感練出來更重要。我的建議是在虛擬機里裝一個 Ubuntu Server 版本沒有桌面環(huán)境逼迫自己在純命令行下完成操作。很多人怕命令行但 Python 開發(fā)也好、后續(xù)的腳本部署也好日常操作都是在純命令行下完成的早適應(yīng)早受益。2.3 環(huán)境隔離意識要從第一天建立再來說說虛擬環(huán)境。這是整個入門過程中我認(rèn)為最應(yīng)該被提前灌輸、卻總被忽略的點。很多初學(xué)者裝好 Python 后不管三七二十一pip install 直接裝全局。這個習(xí)慣一開始看起來沒問題但一旦你同時維護(hù)兩三個小項目就會出現(xiàn)版本沖突A 項目用 2.x 版本的庫B 項目需要 3.x 版本你在系統(tǒng)環(huán)境里裝一個新版本可能就把 A 項目弄掛了。虛擬環(huán)境解決的就是同一個 Python 解釋器但每個項目用獨立的包空間這個問題。第一天就建立這個習(xí)慣并不難后面會減少大量不必要的麻煩。我見過不少同學(xué)因為環(huán)境混亂把半天時間花在排查為什么那個項目跑不了了上最后發(fā)現(xiàn)只是裝了一個別的項目的依賴這種冤枉時間完全可以通過從一開始就建虛擬環(huán)境來避免。3. 核心細(xì)節(jié)解析與實操要點3.1 虛擬機還是 WSL動手之前得先解決我的 Linux 在哪兒跑的問題。目前對于 Windows 用戶來說方案大致有三種安裝虛擬機軟件再裝 Linux、使用 Windows 自帶的 WSL、或者直接找一臺閑置電腦裝雙系統(tǒng)。WSL 是目前我比較推薦的入門方式因為它不像虛擬機那樣需要預(yù)分配內(nèi)存和磁盤、啟動速度也快你可以直接在 Windows 桌面環(huán)境里面打開一個 Linux 終端和本地文件系統(tǒng)之間的交互也方便。但 WSL 也有一個短板如果你后面要學(xué) Linux 系統(tǒng)管理、內(nèi)核相關(guān)的東西WSL 畢竟還是偏用戶層的模擬和真正的 Linux 服務(wù)器會有一些細(xì)微差異。虛擬機方案比如常見的 VirtualBox 配合 Ubuntu更接近一臺真實的 Linux 機器網(wǎng)絡(luò)、存儲、權(quán)限這些邏輯和服務(wù)器更一致。缺點是資源占用大、啟動慢對電腦配置有一定要求。如果你的電腦內(nèi)存小于 8GB跑虛擬機會有點吃力那就優(yōu)先考慮 WSL。我自己做教學(xué)的時候一般建議電腦配置夠的同學(xué)直接用虛擬機配置緊張的同學(xué)先用 WSL兩條路都不影響后續(xù)學(xué)習(xí)。3.2 裝好之后首先該做什么假設(shè)你已經(jīng)裝好了一個 Ubuntu 環(huán)境登錄進(jìn)去拿到一個命令行終端。按照我自己的習(xí)慣新環(huán)境到手做三件事第一更新系統(tǒng)軟件源和已有軟件包。Ubuntu 初始狀態(tài)下用sudo apt update和sudo apt upgrade把系統(tǒng)包更新到最新這一步能避免后續(xù)裝軟件時遇到依賴版本過舊的問題。第二安裝基礎(chǔ)工具包。比如build-essential、curl、git、vim。這些工具不一定馬上全用上但在后面編譯 Python 擴展、拉代碼、改配置文件的時候一定會需要。提前裝好省得半路卡殼。第三確認(rèn)自帶 Python 狀態(tài)。Ubuntu 22.04 和 24.04 系統(tǒng)默認(rèn)帶了 Python 3.10 或 3.12你可以直接執(zhí)行python3 --version查看。這里注意一點系統(tǒng)自帶的 Python 盡量不要刪除或替換因為系統(tǒng)的很多管理工具依賴它。后面我們會用別的方式管理 Python 版本。3.3 文件結(jié)構(gòu)與命令的記憶方法Linux 的學(xué)習(xí)里最容易讓人挫敗的就是命令太多記不住。這里我的觀點是不要背要用。你只需要先掌握一條主線剩下的隨用隨查就行。主線命令大概就是pwd看當(dāng)前目錄、ls查看目錄內(nèi)容、cd切換目錄、mkdir創(chuàng)建目錄、touch創(chuàng)建空文件、cat查看文件內(nèi)容、rm刪除文件、cp復(fù)制文件、mv移動或重命名文件。這些命令涉及了文件和目錄的整個生命周期日常 80% 的操作都被覆蓋了。至于權(quán)限管理、進(jìn)程管理、網(wǎng)絡(luò)查詢那些等用到了再針對性地學(xué)效果反而好。記憶方法和小時候記單詞類似每次操作的時候想想這個命令是哪個英文單詞的縮寫。比如ls是 list列出、pwd是 print working directory打印當(dāng)前工作目錄、mkdir是 make directory建目錄。理解了詞源你會發(fā)現(xiàn)命令的本質(zhì)就是告訴系統(tǒng)對你指定的東西做某個操作。3.4 權(quán)限概念為什么重要很多新手在 Linux 下執(zhí)行腳本的時候會碰到一個報錯Permission denied中文意思就是沒權(quán)限。這個報錯背后的原因是 Linux 的權(quán)限模型和 Windows 差別很大。Linux 系統(tǒng)里每個文件都有屬主和屬組的概念并且對文件的操作權(quán)限分為讀、寫、執(zhí)行三種分別用 r、w、x 表示。當(dāng)你試圖運行一個沒有執(zhí)行權(quán)限的 Python 腳本時系統(tǒng)就會明確拒絕你。這在 Windows 下是沒有的體驗因為 Windows 默認(rèn)對文件可執(zhí)行性的判斷更多看擴展名。我見過很多新手在這個地方栽跟頭明明代碼是對的但運行報錯然后花大量時間去檢查代碼實際上只是忘記給腳本加執(zhí)行權(quán)限。避免這個問題很簡單要么用python3 script.py的方式直接調(diào)用腳本此時不依賴腳本的可執(zhí)行權(quán)限要么用chmod x script.py賦予執(zhí)行權(quán)限。理解權(quán)限模型的本質(zhì)是 Linux 入門階段必須跨過的一道坎。4. 實操過程與核心環(huán)節(jié)實現(xiàn)4.1 第一步建立項目目錄我們用一個具體的小任務(wù)來演示創(chuàng)建第一個 Python 項目并且在其中跑通一段腳本。打開終端在 home 目錄下建立一個名為first_project的項目文件夾cd ~ mkdir first_project cd first_project這里~代表當(dāng)前用戶的家目錄對新手來說記住這個符號很有用因為它是一個絕對路徑的快捷方式。在 Linux 下目錄決定一切你的項目在哪里、腳本在哪里、日志在哪里都要有清晰的規(guī)劃。先建一個專用目錄避免把所有零散文件堆在根目錄或用戶目錄下這是良好習(xí)慣的開始。4.2 第二步搭建 Python 虛擬環(huán)境創(chuàng)建好項目目錄后在里面建立虛擬環(huán)境。我這里假設(shè)系統(tǒng)已經(jīng)安裝了 python3-venv 這個組件如果沒有先執(zhí)行sudo apt install python3-venv然后創(chuàng)建虛擬環(huán)境并激活它python3 -m venv venv source venv/bin/activate激活之后命令行前面通常會出現(xiàn)一個(venv)的提示符代表你當(dāng)前正處在虛擬環(huán)境中。在這個狀態(tài)下安裝的所有 Python 包都會進(jìn)到這個項目獨立的目錄里不會污染全局環(huán)境。這一步非常重要也是整個入門過程里最應(yīng)該形成肌肉記憶的環(huán)節(jié)之一。如果哪一天你忘記了為什么創(chuàng)建虛擬環(huán)境可以回想這個例子項目 A 需要requests2.25 版本項目 B 需要requests2.31 版本如果不用獨立環(huán)境兩個需求是沒法共存在一個全局環(huán)境里的。用虛擬環(huán)境各裝各的互不影響。4.3 第三步編寫第一個真正的腳本虛擬環(huán)境就緒之后我們寫一個不是 hello world 的小腳本但也不復(fù)雜。我傾向于寫一個帶點實際處理邏輯的小程序比如批量重命名某個目錄下的文件。這個任務(wù)用到 Linux 的目錄操作和 Python 的文件處理能力正好把前面知識都串起來。先用touch創(chuàng)建幾個文本文件模擬場景touch report_2024_old.txt touch report_2023_old.txt touch report_2022_old.txt現(xiàn)在目標(biāo)是把這些文件名字里的_old去掉改成report_2024.txt這種格式。用 Python 實現(xiàn)方式如下# rename_files.py from pathlib import Path target_dir Path(.) for old_file in target_dir.glob(*.txt): if _old in old_file.name: new_name old_file.name.replace(_old, ) old_file.rename(new_name) print(f重命名: {old_file.name} - {new_name})保存文件后運行python3 rename_files.py這個腳本的核心是pathlib這個標(biāo)準(zhǔn)庫它提供了一種面向?qū)ο蟮姆绞絹聿僮魑募湍夸浐?Linux 的文件系統(tǒng)概念天然契合。新手容易在這里犯的一個錯誤是直接用字符串拼路徑但跨平臺時路徑分隔符不一樣用pathlib可以很好地規(guī)避這類問題。4.4 第四步用 Shell 思維配合 Python再擴展一步我們在終端里用一條命令看看結(jié)果ls -la你會看到文件確實被重命名了。這時可以引出一個很有意思的思維Linux 的命令和 Python 腳本常常是配合使用的。比如你想對項目里所有 Python 文件做一個簡單的代碼統(tǒng)計可以直接用 Shell 命令wc -l *.py但不做復(fù)雜統(tǒng)計的話用 Python 處理更靈活。比如統(tǒng)計哪個文件行數(shù)最多可以寫幾行腳本from pathlib import Path lines_count {} for py_file in Path(.).glob(*.py): lines_count[py_file.name] len(py_file.read_text().splitlines()) print(max(lines_count, keylines_count.get))這就是用 Python 增強 Shell用 Shell 增強 Python 的日常使用的典型場景。整個開發(fā)過程不應(yīng)該是必須全用命令行或者必須全寫腳本而是兩者結(jié)合哪個方便用哪個。4.5 第五步安裝第三方庫一個只依賴標(biāo)準(zhǔn)庫的 Python 項目畢竟有限。我們再演示一下第三方庫的安裝。虛擬環(huán)境中安裝通常直接使用 pippip install requests然后寫一個簡單的網(wǎng)絡(luò)請求腳本測試它import requests resp requests.get(https://httpbin.org/get) print(resp.status_code) print(resp.text[:200])這里要注意HTTP 請求涉及外網(wǎng)如果網(wǎng)絡(luò)環(huán)境受限可能超時選一個你本地網(wǎng)絡(luò)能訪問的接口即可。這個例子只是為了展示安裝庫—導(dǎo)入庫—使用庫的完整鏈路。另外提醒一下如果你看到pip不是最新版本的提示可以先用pip install --upgrade pip更新一下。但是注意不要隨意升級系統(tǒng)級 pip最好在虛擬環(huán)境內(nèi)操作。4.6 第六步把腳本變成可執(zhí)行文件最后我們把寫好的腳本變成一個可以從命令行直接執(zhí)行的文件而不是每次都用python3 script.py調(diào)用。在腳本第一行加上 shebang 標(biāo)記#!/usr/bin/env python3然后賦予執(zhí)行權(quán)限chmod x rename_files.py現(xiàn)在你可以直接執(zhí)行./rename_files.py這個做法在部署腳本到服務(wù)器時特別常用也是 Linux 下管理小工具的標(biāo)準(zhǔn)姿勢。你可能會看到很多開源項目的命令工具都是這樣設(shè)計入口的。理解了這個原理后面看別人項目的啟動腳本就不會發(fā)怵。5. 常見問題與排查技巧實錄5.1 命令找不到command not found這是最常見的一類問題。大概率原因是你輸入的命令名不對或者這個軟件還沒安裝。比如你輸入pythonUbuntu 上默認(rèn)系統(tǒng)只裝了python3這時候就會提示 command not found。解決辦法是先確認(rèn)自己到底裝了哪個版本ls /usr/bin/python*可以看系統(tǒng)中有哪些 Python 相關(guān)程序。如果沒有安裝可以用sudo apt install python3來裝。這類問題不需要死記關(guān)鍵是理解命令來自于系統(tǒng)中的可執(zhí)行程序文件這個底層邏輯你敲下的每一個命令都是在系統(tǒng)路徑的某個目錄里尋找對應(yīng)的可執(zhí)行文件。5.2 虛擬環(huán)境激活后 pip 仍是全局的有時候你明明激活了虛擬環(huán)境但是敲pip時發(fā)現(xiàn)并不是虛擬環(huán)境內(nèi)的版本。通常是因為你曾經(jīng)在~/.bashrc或者某個配置里設(shè)置了別名或者激活的環(huán)境變量沒有被正確優(yōu)先級處理。排查方法很簡單執(zhí)行which pip看輸出路徑。如果路徑指向/usr/bin/pip而不是虛擬環(huán)境目錄下的venv/bin/pip說明你用的不是虛擬環(huán)境里的 pip。這種情況下重新檢查激活命令source venv/bin/activate然后再次運行which pip正常情況會指向虛擬環(huán)境目錄。養(yǎng)成用which驗證的習(xí)慣能幫你快速定位各種命令行為不對的問題。5.3 安裝包時出現(xiàn)外部管理環(huán)境錯誤新版 Ubuntu 里系統(tǒng) Python 的 pip 被限制安裝了因為它自帶的 Python 環(huán)境受系統(tǒng)包管理器管控。如果你執(zhí)行pip install requests時遇到externally-managed-environment這樣的報錯不用慌張。最優(yōu)解是先建虛擬環(huán)境再在虛擬環(huán)境內(nèi)部安裝這樣繞開系統(tǒng)級別限制也符合項目隔離的理念。如果你確實需要全局安裝且知道自己在做什么可以加--break-system-packages參數(shù)但我不推薦新手這樣做。這個錯誤本質(zhì)上是一個保護(hù)機制告訴你別動系統(tǒng)環(huán)境實際上是在幫你養(yǎng)成好習(xí)慣。5.4 文件權(quán)限導(dǎo)致的運行失敗前面提過 Permission denied 的問題。不少同學(xué)寫完 Python 腳本一執(zhí)行./script.py就遇到這個錯誤。排查步驟很簡單先執(zhí)行l(wèi)s -l script.py查看文件的權(quán)限位。如果顯示的權(quán)限是-rw-r--r--說明屬主沒有執(zhí)行權(quán)限就需要chmod x script.py來補上。還有另一種情況你在 Windows 下用編輯器寫好的腳本傳到 Linux 里發(fā)現(xiàn)運行報錯/usr/bin/env: python3\r: No such file or directory。這是因為 Windows 保存的文件換行符是\r\nLinux 只識別\n。解決辦法是用sed -i s/\r$// script.py去掉回車符或者在編輯器里把換行符改成 LF。這類問題是 Windows 和 Linux 混用的初學(xué)者最容易踩的坑。5.5 端口被占用的問題過幾天你會開始寫 Web 服務(wù)比如 Flask 或 FastAPI 的小項目這時候大概率會遇到端口被占用的問題。報錯內(nèi)容是類似Address already in use。排查方法是先用ss -ltnp看當(dāng)前監(jiān)聽端口的進(jìn)程找到對應(yīng)的 PID 之后用kill命令結(jié)束它。這里我的建議是不要直接殺掉系統(tǒng)里不認(rèn)識的進(jìn)程得先看清楚這個進(jìn)程是什么、能不能殺。確認(rèn)后才能執(zhí)行清理操作。如果只是為了開發(fā)可以直接使用另一個端口。這個排查思路對所有某個端口起不來的問題都適用。5.6 常見問題速查表為了方便隨時翻閱我把上面這些情況整理成一個速查表現(xiàn)象可能原因快速排查解決辦法command not found軟件未安裝或命令名錯誤ls /usr/bin/命令*安裝對應(yīng)軟件或換正確命令Permission denied文件缺執(zhí)行權(quán)限ls -l 文件名chmod x 文件名換行符導(dǎo)致的報錯文件是 Windows 格式cat -v 文件名sed -i s/\r$// 文件名pip 裝包受限制系統(tǒng) Python 受管理which pip創(chuàng)建虛擬環(huán)境再安裝端口被占用另一進(jìn)程占用端口ss -ltnp換端口或結(jié)束對應(yīng)進(jìn)程虛擬環(huán)境失效未正確激活或配置沖突which pip重新source activate并檢查5.7 兩個排查思路層面的建議最后補充兩個我自己總結(jié)的排查哲學(xué)。第一遇到問題先看報錯信息本身。報錯信息里往往已經(jīng)告訴了你原因和位置不要急著去改代碼或重新安裝環(huán)境。新手最常犯的毛病是看到報錯就慌然后卸載重裝。其實大多數(shù)問題都是一行命令就能解決的小事情。第二學(xué)會用最小復(fù)現(xiàn)去定位問題。如果你不知道 bug 出在哪就創(chuàng)建一個最簡腳本逐步添加邏輯看哪一步觸發(fā)問題。這個思路不只是排查技巧也是調(diào)試代碼和設(shè)計系統(tǒng)的核心思維。很多經(jīng)驗豐富的開發(fā)者之所以解決問題快不是因為記憶力好而是因為他們懂得把大問題拆成小步驟逐一驗證。6. 經(jīng)驗感想與后續(xù)路徑6.1 我踩過的一些坑說幾個我早期學(xué)習(xí) Python 和 Linux 時印象深刻的經(jīng)歷也算給你們提個醒。最開始我用的是 Windows裝了一個很老版本的 Python然后按照網(wǎng)上教程裝了一堆包。后面配合 Linux 使用時發(fā)現(xiàn)很多命令行為不一致最后才明白是 Python 版本差異造成的。當(dāng)時浪費了一個下午排查一個同一個代碼兩個環(huán)境結(jié)果不一樣的問題。現(xiàn)在回想起來如果早點用虛擬環(huán)境、早點統(tǒng)一版本可能五分鐘就解決了。后來我慢慢形成一個習(xí)慣每個新項目的第一件事是寫好說明文檔把 Python 版本、系統(tǒng)版本、依賴包列表記清楚。有了這份說明書項目在任何新環(huán)境上都能快速重建。你們現(xiàn)在可能覺得這個動作多余但等到你同時維護(hù)三個項目、并且每隔幾個月就要換電腦或重裝系統(tǒng)的時候會發(fā)現(xiàn)它是真正的救命稻草。6.2 下一步可以怎么走這一期內(nèi)容屬于整個路線的起步覆蓋了 Linux 基本操作、Python 環(huán)境搭建、虛擬環(huán)境、簡單腳本以及常見問題排查。接下來我認(rèn)為有兩個明確方向可以繼續(xù)深入。第一個方向是繼續(xù)加深 Python 的項目能力。比如用 Flask 寫一個簡單的 Web 接口再把前面學(xué)的 Shell 命令和 Python 腳本結(jié)合起來做一個自動化的定時任務(wù)。第二個方向是往部署方向走學(xué)會用 Git 管理代碼再把項目部署到一臺遠(yuǎn)程服務(wù)器上讓它的服務(wù)真的跑起來。這兩個方向里前者更偏寫代碼后者更偏運維但都會用到這期的基礎(chǔ)功。這里我還特別想強調(diào)一個事情記筆記的方式。建議你從這期開始維護(hù)一個命令速查筆記把見過的每一條有用的命令和用法記錄下來。不要過分依賴搜索引擎因為很多知識你查過一遍后過段時間還是會忘但自己整理過的東西記憶會深刻許多。這個筆記不用很正式隨手記即可關(guān)鍵是堅持。6.3 保持節(jié)奏比天分重要我接觸過的很多學(xué)習(xí)者在前期都會有這樣的體驗第一周熱情高漲第二周開始被細(xì)節(jié)絆住第三周遇到一個卡住一晚上的問題就想放棄。這太正常了。Linux 和 Python 的知識體系是典型的面太廣、上限太高但入門門檻其實并沒有想象中那么高。你不需要一天內(nèi)掌握所有命令也不必對著復(fù)雜的權(quán)限模型死磕。把前面提到的核心流程走一遍每天積累一點點手感之后的進(jìn)階會是水到渠成的事情。這一期的內(nèi)容到這里就結(jié)束了。我的個人建議是先把環(huán)境搭起來把今天的腳本敲完然后嘗試著自己改一改——比如讓重命名腳本支持多個目錄或者把統(tǒng)計腳本的輸出排序。自己動手寫過一遍和看別人寫過一遍學(xué)到的深度完全不一樣。