這是一本講解如何快速上手現(xiàn)代軟件開發(fā)所需的三個核心工具:Unix命令行、文本編輯器和Git版本控制的實戰(zhàn)性著作。 通過閱讀本書,你將學(xué)習(xí): 運行終端、輸入和編輯命令 操作和檢查文件 使用Atom和VS Code等編輯器的基本和高級編輯技巧 使用Markdown語言編寫快速文檔 格式化源代碼并編寫可執(zhí)行腳本 Git和GitHub基礎(chǔ)知識 使用關(guān)鍵的Git工作流程提交、推送、分支、合并 在Git項目上協(xié)作并解決代碼沖突 開發(fā)環(huán)境macOS、Linux、Windows和云的設(shè)置。 本書通過針對性的練習(xí)來幫助讀者掌握命令行工具、文本編輯器和Git的重點知識,讀者無須學(xué)習(xí)它們的全部內(nèi)容,只要跟隨本書,便能高效地運用它們來解決實際問題。
由淺入深,內(nèi)容全面從基礎(chǔ)知識到應(yīng)用實戰(zhàn),對現(xiàn)代軟件開發(fā)所需的工具:Unix命令行、文本編輯器和Git版本控制進行了詳細闡述,既是一本學(xué)習(xí)指南,又是一本實戰(zhàn)手冊。通俗易懂,快速上手內(nèi)容通俗易懂,既適合軟件開發(fā)的初學(xué)者,也適合經(jīng)驗豐富的開發(fā)人員。理論與實踐的完美結(jié)合除了主要的知識闡述之外,本書還包含大量的練習(xí),以幫助測試讀者對當(dāng)前對知識的理解和掌握程度,并擴展所學(xué)的理論知識。本書還有大量的實例來幫助讀者實踐所學(xué)技能,以盡快上手軟件編程。
現(xiàn)代軟件開發(fā)必不可少的三個基本工具是Unix命令行、文本編輯器和Git版本控制。這三個工具在現(xiàn)代技術(shù)領(lǐng)域中使用十分普遍,然而令人驚訝的是,幾乎沒有專門介紹它們以及如何將它們結(jié)合在一起使用的書。本書除了需要具備一般的計算機知識,沒有任何門檻,并且能夠填補這個空白。
無論你想成為一名開發(fā)者,或是與開發(fā)者合作,你在本書中學(xué)到的知識都是非常有價值的。如果你想提升當(dāng)前的工作水平,開啟一段新的職業(yè)旅程,或者想自己創(chuàng)辦公司,本書也將是一個好的起點。
如果對本書涵蓋的三個主題深入討論,每個主題都可以寫一本書。但這樣的巨著可能會讓讀者難以承受,尤其是對初學(xué)者來說。因此,本書著重各個主題中最重要的方面,這樣讀者就不需要去學(xué)習(xí)所有的內(nèi)容,只需要學(xué)習(xí)本書就可以了。
本書還可以幫助讀者提高技術(shù)熟練度,即包括命令行、文本編輯器和Git版本控制在內(nèi)的處理復(fù)雜問題的技能,以及查詢報錯信息和何時需要重啟等。這些技能貫穿全書,并附有許多真實案例來幫助你提高技術(shù)水平。
盡管本書三個部分是自成一體的,但它們之間也有大量的參照和廣泛的交叉引用,以展示不同的工具是如何組合在一起使用的。你將學(xué)習(xí)如何使用命令行啟動文本編輯器和在文本編輯器中如何進行修改,然后返回命令行通過Git來記錄修改。因此本書是對軟件開發(fā)基礎(chǔ)的綜合介紹,這是獨一無二的。
命令行
本書的第一部分(第1~4章)是命令行,面向初學(xué)者介紹Unix命令行。對于這部分內(nèi)容,你只需要具備基礎(chǔ)的計算機技能(能夠在系統(tǒng)中安裝軟件)就能開始學(xué)習(xí)。這部分以技術(shù)敘事的形式編寫,每一步都配有真實案例。第1章介紹了Unix命令的基本概念,并展示了如何通過系統(tǒng)來了解更多信息。第2章介紹了如何使用命令行來執(zhí)行一些操作,如移動、重命名和刪除文件。第3章介紹了如何查看內(nèi)部文件(甚至是大文件),以及如何搜索文件。第4章介紹了如何使用命令行創(chuàng)建和導(dǎo)航目錄(文件夾),以管理系統(tǒng)中的文件。
讀完本部分,你將掌握開發(fā)工具的基本知識,以及那些很少被系統(tǒng)講解但在現(xiàn)代計算機系統(tǒng)尤其是類Unix系統(tǒng)中大量用到的知識,包含Linux、Android、macOS和iOS等操作系統(tǒng)(幾乎除了Windows以外的所有系統(tǒng),盡管現(xiàn)在在Windows操作系統(tǒng)中也能夠運行Linux)。這意味著如果你對Web或者移動端開發(fā)感興趣的話,你將領(lǐng)先一大步。
文本編輯器
第二部分(第5~7章)是文本編輯器,涵蓋了對于專業(yè)軟件開發(fā)來說是至關(guān)重要的一類應(yīng)用程序。文本編輯器用于編寫包含純文本的文件,純文本是幾乎所有Web技術(shù)(如HTML和CSS)和編程語言(JavaScript、Ruby、Python等)的文檔格式。因此,掌握文本編輯器是學(xué)習(xí)其他重要主題的必要前提。
文本編輯器和用戶配置種類繁多,本部分主要聚焦編輯器的通用功能。第5章介紹了功能強大的Vim文本編輯器,它幾乎能夠在所有類Unix系統(tǒng)中使用。第6章介紹了所謂的現(xiàn)代文本編輯器,主要基于免費、開源的Atom編輯器,重點介紹了與Sublime Text和Visual Studio Code等其他編輯器共有的功能。另外,第6章也對流行的Markdown格式語言進行了介紹。第7章介紹了更多先進的技術(shù),如選項卡觸發(fā)器和編輯源代碼,并展示了如何編寫一個shell腳本來擴展第一部分中所講到的命令行功能。
Git
第三部分(第8~11章)是Git,介紹了如何使用Git進行版本控制。和前兩部分一樣,學(xué)習(xí)這部分內(nèi)容不需要你知道什么是版本控制。作為一種用于追蹤項目變化的軟件系統(tǒng),版本控制在21世紀初可能還被認為是可有可無的,但是對于現(xiàn)代軟件開發(fā)來說,它絕對是必不可少的,而Git則是當(dāng)之無愧的贏家。
這部分介紹了如何使用Git來追蹤一個真實小型網(wǎng)站項目的變更(為學(xué)習(xí)Web開發(fā)奠定了基礎(chǔ))。第8章展示了如何由簡單的HTML(超文本標(biāo)記語言)組成的文件創(chuàng)建一個新的Git存儲庫來作為項目的容器。第9章介紹了如何在GitHub(一個受歡迎的代碼分享網(wǎng)站)為項目創(chuàng)建一個遠程備份。第10章接著介紹了如何使用Git項目并記錄項目的更改,包括branching(分支)和merging(合并)等重要技術(shù)。第11章展示了如何使用Git來與其他用戶協(xié)作,包括如何解決不可避免的文件沖突。此外,你將學(xué)習(xí)如何使用GitHub Pages這個免費服務(wù)來將你的網(wǎng)站部署到Web上。
其他說明
本書包含了大量的練習(xí),以幫助測試你的學(xué)習(xí)情況和鞏固學(xué)習(xí)內(nèi)容。為了保持完整性,本書還增加了關(guān)于配置開發(fā)環(huán)境的附錄,包括對操作系統(tǒng)(macOS、Linux、 Windows)的說明和一個預(yù)配置的云端集成開發(fā)環(huán)境的說明。
邁克爾·哈特爾(Michael Hartl)畢業(yè)于哈佛大學(xué),擁有加州理工學(xué)院的物理學(xué)博士學(xué)位,并且是Y Combinator企業(yè)家計劃的成員。他曾任教加州理工學(xué)院,并獲得了教學(xué)卓越終身成就獎。
前言
第一部分 命令行
第1章 命令行基礎(chǔ)知識2
1.1 介紹2
1.2 運行終端3
1.3 第一條命令6
1.4 幫助文檔(man page)8
1.5 編輯命令行10
1.6 清除12
1.7 命令總結(jié)12
第2章 操作文件14
2.1 重定向和追加14
2.2 列表16
2.3 重命名、復(fù)制、刪除19
2.4 命令總結(jié)22
第3章 檢查文件24
3.1 下載文件24
3.2 對文件使用head和tail命令26
3.3 少即是多(less is more)28
3.4 檢索目標(biāo)行命令31
3.5 命令總結(jié)35
第4章 目錄36
4.1 目錄結(jié)構(gòu)36
4.2 創(chuàng)建目錄38
4.3 導(dǎo)航目錄39
4.4 重命名、復(fù)制、刪除目錄42
4.5 命令總結(jié)45
4.6 本章小結(jié)45
第二部分 文本編輯器
第5章 文本編輯器簡介48
5.1 最小可運行編輯器Vim50
5.2 啟動Vim51
5.3 編輯小文件53
5.4 保存并退出文件54
5.5 刪除內(nèi)容57
5.6 編輯大文件58
5.7 命令總結(jié)60
第6章 現(xiàn)代文本編輯器62
6.1 選擇文本編輯器63
6.2 打開文件64
6.3 移動70
6.4 選擇文本73
6.5 剪切、復(fù)制、粘貼77
6.6 刪除和撤回80
6.7 保存82
6.8 查找和替換84
6.9 命令總結(jié)87
第7章 高級文本編輯器88
7.1 自動補全和Tab觸發(fā)器88
7.2 輸入源代碼92
7.3 編寫可執(zhí)行腳本100
7.4 編輯項目105
7.5 定制化113
7.6 命令總結(jié)116
7.7 本章小結(jié) 117
第三部分 Git
第8章 Git入門120
8.1 安裝和配置121
8.2 初始化Repo123
8.3 第一次提交124
8.4 查看差異126
8.5 添加一個HTML標(biāo)簽128
8.6 添加HTML結(jié)構(gòu)131
8.7 命令總結(jié)134
第9章 備份和共享135
9.1 注冊GitHub賬號135
9.2 遠程存儲庫135
9.3 添加自述文件139
9.4 命令總結(jié)143
第10章 中間工作流程144
10.1 提交、推送、重復(fù)144
10.2 忽略文件148
10.3 分支與合并149
10.4 恢復(fù)156
10.5 命令總結(jié)160
第11章 協(xié)作161
11.1 克隆、推送、拉取161
11.2 拉取和合并沖突168
11.3 推送分支178
11.4 意外驚喜184
11.5 命令總結(jié)187
11.6 高級設(shè)置188
11.7 本章小結(jié)190
附錄A 開發(fā)環(huán)境191