一、shell和vi
Shell俗稱殼,用來區(qū)別于Kernel(核),是指“提供使用者使用界面”的軟件(命令解析器)

1、shell分類
- 圖形界面shell:通過提供友好的可視化界面,調(diào)用相應(yīng)應(yīng)用程序,如windows系列操作系統(tǒng),Linux系統(tǒng)上的圖形化應(yīng)用程序GNOME、KDE等。
- 命令行shell:通過鍵盤輸入特定命令的方式,調(diào)用相應(yīng)的應(yīng)用程序,如windows系統(tǒng)的cmd.exe、Windows PowerShell,Linux系統(tǒng)的Bourne shell ( sh)、Bourne Again shell ( bash)等。
2、bash和shell
各個(gè) shell 的功能都差不多, Linux 默認(rèn)使用 bash。
在window系統(tǒng)下使用bash,需要一個(gè)軟件
==bash命令格式==
命令 [-options] [參數(shù)]
==bash常見命令==
- pwd (Print Working Directory) 查看當(dāng)前目錄
- cd (Change Directory) 切換目錄,如 cd /etc
- ls (List) 查看當(dāng)前目錄下內(nèi)容,如 ls -al
- mkdir (Make Directory) 創(chuàng)建目錄,如 mkdir blog
- touch 創(chuàng)建文件,如 touch index.html
- cat 查看文件全部內(nèi)容,如 cat index.html
- more/less 查看文件,如more /etc/passwd、less /etc/passwd
- rm (remove) 刪除文件,如 rm index.html、rm -rf blog
- rmdir (Remove Directory) 刪除文件夾,只能刪除空文件夾,不常用
- mv (move) 移動文件或重命名,如 mv index.html ./demo/index.html
- cp (copy) 復(fù)制文件,cp index.html ./demo/index.html
- head 查看文件前幾行,如 head -5 index.html
- tail 查看文件后幾行 –n –f,如 tail index.html、tail -f -n 5 index.html
- tab 自動補(bǔ)全,連按兩次會將所有匹配內(nèi)容顯示出來
- history 查看操作歷史
- '>' 和 >>重定向
- curl 網(wǎng)絡(luò)請求,如curl http://www.baidu.com
- whoami 查看當(dāng)前用戶
- | 管道符可以將多個(gè)命令連接使用,上一次(命令)的執(zhí)行結(jié)果當(dāng)成下一次(命令)的參數(shù)
- grep 匹配內(nèi)容,一般結(jié)合管道符使用
3、vi編輯器
如同Windows下的記事本,vi編輯器是Linux下的標(biāo)配,通過它我們可以創(chuàng)建、編輯文件
三種模式
命令模式、插入模式、底行模式
命令行模式--i/a-->輸入模式
命令行模式--shift+:-->尾函數(shù)模式

vi編輯器的使用
- 底行模式 : w保存,:w filenme另存為
- 底行模式 : q退出
- 底行模式 : wq保存并退出
- 底行模式 : e! 撤銷更改,返回到上一次保存的狀態(tài)
- 底行模式 : q! 不保存強(qiáng)制退出
- 底行模式 : set nu 設(shè)置行號
- 命令模式 : ZZ(大寫)保存并退出
- 命令模式: u轍銷操作,可多次使用
- 命令模式: dd刪除當(dāng)前行
- 命令模式: yy復(fù)制當(dāng)前行
- 命令模式: p 粘貼內(nèi)容
- 命令模式: ctrl+f向前翻頁
- 命令模式: ctrl+b向后翻頁
- 命令模式: i進(jìn)入編輯模式,當(dāng)前光標(biāo)處插入
- 命令模式: a進(jìn)入編輯模式,當(dāng)前光標(biāo)后插入
- 命令模式: A進(jìn)入編輯模式,光標(biāo)移動到行尾
- 命令模式: o進(jìn)入編輯模式,當(dāng)前行下面插入新行
- 命令模式: O進(jìn)入編輯模式,當(dāng)前行上面插入新行
4、SSH
SSH是一種網(wǎng)絡(luò)協(xié)議,用于計(jì)算機(jī)之間的加密登錄。
如果要在Windows系統(tǒng)中使用SSH,會用到另一種軟件PuTTY,我們后面用到的Git客戶也集成了SSH
格式:ssh user@host
user 代表真實(shí)存在的用戶 host代表要登錄的遠(yuǎn)程計(jì)算機(jī)
加密技術(shù)
常見有兩種加密技術(shù),分別是對稱性加密和非對稱性加密
SSH屬于后者
非對稱加密算法需要兩個(gè)密鑰來進(jìn)行加密和解密,這兩個(gè)秘鑰分別是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
工作原理
公鑰和私鑰是成對出現(xiàn),可以通過ssh-keygen -t rsa來創(chuàng)建
免密登錄
- ssh-keygen -t rsa會創(chuàng)建公鑰和密鑰(默認(rèn)在用戶目錄/.ssh目錄下)
- ssh-copy-id user@host添加到對應(yīng)遠(yuǎn)程主機(jī)的用戶目錄/.ssh目錄下
- 也可以登錄遠(yuǎn)程主機(jī),進(jìn)入到用戶目錄/.ssh目錄下手動創(chuàng)建authorized_keys文件,并將自已的公鑰粘入該文件。
二、版本控制VCS
版本控制(Version Control Systems)
是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)
本地版本控制系統(tǒng)、集中式版本控制系統(tǒng)、分布式版本控制系統(tǒng)
本地版本控制
借助軟件我們可以記錄下文件的每一次修改
功能比較單一,比如很難實(shí)現(xiàn)多人協(xié)同開發(fā),
集中式VCS
通過單一的集中管理的服務(wù)器,保存所有文件的修訂版本,協(xié)同工作的開發(fā)者都通過客戶端連到這臺服務(wù)器,取出最新的文件或者提交更新。其代表為SVN
分布式VCS
分布式版本控制系統(tǒng),則不需要中央服務(wù)器,每個(gè)協(xié)同開發(fā)者都擁有一個(gè)完整的版本庫,任何協(xié)同開發(fā)者用的服務(wù)器發(fā)生故障,事后都可以用其它協(xié)同開發(fā)者本地倉庫恢復(fù)。
代表為git
==git沒網(wǎng)也可以,svn需要網(wǎng)絡(luò)==
三、Git
1、git工作原理
git三種狀態(tài)
- 已提交(committed)
- 已修改(modified)
- 已暫存(staged)
三個(gè)工作區(qū)域
- Git 倉庫(Repository)
Git用來保存項(xiàng)目的元數(shù)據(jù)和對象數(shù)據(jù)庫的地方
- 工作目錄(working Directory)
對項(xiàng)目的某個(gè)版本獨(dú)立提取出來的內(nèi)容
- 暫存區(qū)域(Staging Area)
保存了下次將提交的文件列表信息,一般在Git倉庫目錄中
Git工作流程
- 在工作目錄中修改文件
- 暫存文件,將文件的快照放入暫存區(qū)域
- 提交文件,找到暫存區(qū)域的文件,將快照永久性存儲到Git倉庫目錄。
2、Git本地倉庫
配置用戶
git config --global user.name "自已的名字"
git config --global user.email "自已的郵箱地址"
--global 配置當(dāng)前用戶所有倉庫
--system 配置當(dāng)前計(jì)算機(jī)上所有用戶的所有倉庫
注:配置用戶只需要執(zhí)行1次,可以重復(fù)使用。
初始化倉庫
需要將現(xiàn)有項(xiàng)目初始化為一個(gè)倉庫,或者將一個(gè)已有的使用git進(jìn)行版本控制的倉庫克隆到本地。
- git init
git init只是創(chuàng)建了一個(gè)名為.git的隱藏目錄,這個(gè)目錄就是存儲我們歷史版本的倉庫,ls -al 可以查看。
- git clone 倉庫地址
假如公司已有項(xiàng)目用了Git,那我們就利用克隆
執(zhí)行完這個(gè)命令,會在當(dāng)前目錄下生成一個(gè)Monment目錄(默認(rèn)和倉庫名稱相同),這個(gè)便是已有一個(gè)使用Git管理的項(xiàng)目。
查看文件狀態(tài)
- git status可以檢測當(dāng)前倉庫文件的狀態(tài)
==注:git會忽略空的目錄==
==所以倉庫中的文件夾里要有東西==
添加文件到暫存區(qū)
- git add 文件名/ 文件路徑 “*”或-A代表所有
- 放到暫存區(qū)的文件被標(biāo)記成了==綠色==,等待提交。(不同的工具不一樣)
撤銷更改
- git status可以再次查看倉庫狀態(tài)
- 修改的文件會被標(biāo)記==紅色==。
- git checkout 文件名可以 回到之前狀態(tài) ==從暫存區(qū)還原原到工作區(qū)==
提交文件
- git commit -m '備注信息'
- 將暫存區(qū)被標(biāo)記成綠色的文件,全部提交到本地倉庫存儲。
查看提交歷史
- git log查看提交的歷史
- 按鍵盤q鍵退出
恢復(fù)上次提交的狀態(tài)
- 通過SHA值可以回到之前某一次的提交
- git reset --hard c888a614e072e2
Git分支
第1次提交時(shí),Git會默認(rèn)幫我們創(chuàng)建了一個(gè)master的分支,并且有指針(HEAD)指到了末端
==指針(HEAD)用來標(biāo)明當(dāng)前處于哪個(gè)分支的哪個(gè)版本==
- 創(chuàng)建分支 git branch hotfix
- 切換分支 git checkout hotfix
- 刪除分支 git branch -d hotfix
3、Git遠(yuǎn)程倉庫
創(chuàng)建共享倉庫
- Git要求共享倉庫是一個(gè)以.git結(jié)尾的目錄
- git init ==--bare== 初始化一個(gè)共享倉庫,也叫裸倉庫
向共享倉庫共享(同步)內(nèi)容
- 進(jìn)入到y(tǒng)ike目錄
- git push
從共享倉庫里取出內(nèi)容
- 新創(chuàng)建一個(gè)目錄(模擬另一個(gè)開發(fā)者)
- git clone ./repo.git demo
通過demo倉庫向repo.git共享內(nèi)容
4、獲取員遠(yuǎn)程計(jì)算機(jī)權(quán)限
生成密匙
- ssh-keygen -t rsa 然后一路回車,這里會在當(dāng)前用戶生成了一個(gè).ssh的文夾
- 將id_rsa.pub公鑰的內(nèi)容復(fù)制
- 打開gitHub的個(gè)人中心
- 打到SSH keys
- id_rsa.pub公鑰粘貼即可
5、Gitlab
gitLab是免費(fèi)的管理倉庫的網(wǎng)站程序,我們可以把它架設(shè)到公司自已的服務(wù)器上,實(shí)現(xiàn)倉庫私有化,這也是大部分公司通常采用的方法,其使用方法與gitHub十分相似。
6、命令匯總
- git config配置本地倉庫
- 常用git config --global user.name、git config --global user.email
- git config --list查看配置詳情
- git init 初始一個(gè)倉庫,添加--bare可以初始化一個(gè)共享(裸)倉庫
- git status 可以查看當(dāng)前倉庫的狀態(tài)
- git add“文件” 將工作區(qū)中的文件添加到暫存區(qū)中,其中file可是一個(gè)單獨(dú)的文件,也可以是一個(gè)目錄、“*”、-A
- git commit -m '備注信息' 將暫存區(qū)的文件,提交到本地倉庫
- git log 可以查看本地倉庫的提交歷史
- git branch查看分支
- git branch“分支名稱” 創(chuàng)建一個(gè)新的分支
- git checkout“分支名稱” 切換分支
- git checkout -b deeveloper 新建并切換到developer分支
- git merge“分支名稱” 合并分支
- git branch -d “分支名稱” 刪除分支
- git clone “倉庫地址”獲取已有倉庫的副本
- git push origin “本地分支名稱:遠(yuǎn)程分支名稱”將本地分支推送至遠(yuǎn)程倉庫,
- 本地倉庫分支名稱和遠(yuǎn)程倉庫分支名稱一樣的情況下可以簡寫成一個(gè),即git push “倉庫地址” “分支名稱”,如果遠(yuǎn)程倉庫沒有對應(yīng)分支,將會自動創(chuàng)建
- git remote add “主機(jī)名稱” “遠(yuǎn)程倉庫地址”添加遠(yuǎn)程主機(jī),即給遠(yuǎn)程主機(jī)起個(gè)別名,方便使用
- git remote 可以查看已添加的遠(yuǎn)程主機(jī)
- git remote show “主機(jī)名稱”可以查看遠(yuǎn)程主機(jī)的信息
四、bower
基于NodeJS的一個(gè)靜態(tài)資源管理工具,由twitter公司開發(fā)維,解決大型網(wǎng)站中靜態(tài)資源的依賴問題。
- 依賴NodeJS環(huán)境和git工具。
- npm install -g bower安裝bower(全局安裝)
- bower search 查找資源信息
- bower install 安裝(下載)資源,通過#號可以指定版本號
- bower info 查看資源信息
- bower uninstall 卸載(刪除)資源
- bower init初始化,用來記錄資源信息及依賴。