命令行入門
為什么會(huì)有命令行這東西?
通常認(rèn)為眷昆,命令行界面(CLI)沒有圖形用戶界面(GUI)那么方便用戶操作匣距。因?yàn)槭柚迹钚薪缑娴能浖ǔP枰脩粲洃洸僮鞯拿钍埽茄忍捎谄浔旧淼奶攸c(diǎn),命令行界面要較圖形用戶界面節(jié)約計(jì)算機(jī)系統(tǒng)的資源拂到。在熟記命令的前提下痪署,使用命令行界面往往要較使用圖形用戶界面的操作速度要快。所以兄旬,在現(xiàn)在的圖形用戶界面的操作系統(tǒng)中狼犯,通常都保留著可選的命令行界面。
雖然現(xiàn)在許多計(jì)算機(jī)系統(tǒng)都提供了圖形化的操作方式领铐,但是卻都沒有因而停止提供文字模式的命令行操作方式悯森,相反的,許多系統(tǒng)反而更加強(qiáng)這部分的功能绪撵,例如Windows就不只加強(qiáng)了操作命令的功能和數(shù)量瓢姻,也一直在改善Shell Programming的方式。而之所以要加強(qiáng)莲兢、改善汹来,自然是因?yàn)椴粔蚝眯牛徊僮飨到y(tǒng)的圖形化操作方式對(duì)單一客戶端計(jì)算機(jī)的操作改艇,已經(jīng)相當(dāng)方便,但如果是一群客戶端計(jì)算機(jī)坟岔,或者是24小時(shí)運(yùn)作的服務(wù)器計(jì)算機(jī)及路由器谒兄、交換器等電信設(shè)備,圖形化操作方式有時(shí)會(huì)力有未逮社付,所以需要不斷增強(qiáng)命令行界面的腳本語言和宏語言來提供豐富的控制與自動(dòng)化的系統(tǒng)管理能力承疲,例如Linux系統(tǒng)的Bash或是Windows系統(tǒng)的Windows PowerShell。(以上內(nèi)容來自維基百科)
其實(shí)說白了就是命令行也是用來操作計(jì)算機(jī)的,只不過換了一種方式而已鸥咖。
救命快捷鍵:ctrl + c 用來終止危險(xiǎn)的操作
1.查看文件的操作
- ~ 代表用戶目錄 例如: C:\Users\asus
- ~Desktop 桌面目錄
- clear 清空cmder窗口內(nèi)容
- cd 進(jìn)入某個(gè)文件夾
- cd ../ 返回上級(jí)目錄
- pwd 查看當(dāng)前的絕對(duì)路徑
- ls 查看當(dāng)前目錄的文件列表 默認(rèn)不顯示以‘ . ’開頭的文件
- ls -l ; 查看文件列表并顯示更新時(shí)間
- ls 路徑 ; 查看指定路徑文件的內(nèi)容列表
- cat 路徑 ; 查看指定文件的具體內(nèi)容(文字燕鸽,代碼) 內(nèi)容過多會(huì)一直滾動(dòng)頁面 因此不常用
- head 路徑 ; 查看指定文件的具體內(nèi)容(文字,代碼) 默認(rèn)前10行 可通過 -n 數(shù)字 修改
head 3/1.txt -n 15 // 查看前十五行內(nèi)容
tail 路徑 ; 查看指定文件的具體內(nèi)容(文字啼辣,代碼) 默認(rèn)后10行 可通過 -n 數(shù)字 修改
-
less 路徑 ; 查看指定文件的具體內(nèi)容(文字啊研,代碼) 適合多行內(nèi)容 可通過 上下鍵或 j,k鍵來控制查看的多少,q鍵退出
查看代碼選中高亮狀態(tài)下需要摁下esc才能摁q退出
2.增加文件的操作
-
touch 文件名加后綴 ; 創(chuàng)建一個(gè)指定文件名的空的文件
- 創(chuàng)建同一目錄的多個(gè)文件只需要加空格隔開即可 例 : touch 1.js 2.js 3.js
-
echo 內(nèi)容 > 文件名 ; 創(chuàng)建并添加指定內(nèi)容的文件 如果已經(jīng)有這個(gè)文件則覆蓋此文件內(nèi)容
- 如果想要追加要寫兩個(gè) > 例如 : echo 內(nèi)容 >> 文件名
- 追加兩行內(nèi)容 ; 例 : echo -e "1\n2" >> 1.txt
-
mkdir 文件夾名/ ; 創(chuàng)建指定名稱的文件夾
- mkdir -p 文件名/文件名/文件名...... 党远; 創(chuàng)建多層級(jí)的目錄文件
- 創(chuàng)建同一目錄的多個(gè)目錄只需要加空格隔開即可 例 : mkdir a b c
-
cp 被拷貝文件名 新建文件名 ; 復(fù)制一個(gè)新的文件
- cp -r 被拷貝目錄 新建目錄 ; 拷貝目錄
3.刪除文件的操作
- rm 文件名 ; 刪除指定的文件
- rm -r 目錄名 : 刪除指定的目錄
- rm -rf 目錄名 ; 強(qiáng)制刪除指定目錄
使用刪除命令時(shí)候削解,要注意自己的當(dāng)前路徑,避免刪除重要文件
4.修改文件的操作
-
code 文件名 ; 用vscode編輯器打開指定文件 進(jìn)行修改編輯
- 如果不能執(zhí)行就是vscode沒有加到PATH里面
start 文件名(mac使用open); 使用默認(rèn)程序打開文進(jìn)行編輯
echo ' ' > 文件名 ; 清空文件內(nèi)容
-
mv 文件名 目錄 ; 移動(dòng)指定文件到指定目錄
- mv 文件名 . ; 移動(dòng)到當(dāng)前目錄
mv 文件名1 文件名2 ; 把文件1重命名為文件名2
touch 文件名 ; 修改此文件的最后更新時(shí)間為當(dāng)前時(shí)間
echo $? ; 查看成功失敗返回值 因?yàn)槊钣谐晒蛘呤?: 成功會(huì)返回0沟娱,失敗會(huì)返回1
其他操作:
- 在命令行窗口中按上下方向鍵可復(fù)制之前的命令
- alt + . 可復(fù)制上一行命令的最后一個(gè)參數(shù)
獲取更多命令的方法:
yarn global add tldr // 下載后使用 tldr 命令 就可以查看詳細(xì)的用法
5.腳本文件
組合命令:
-
命令的組合使用 && 操作
&&的作用就是前面的命令執(zhí)行成功時(shí)才會(huì)接著執(zhí)行&&后面的命令
-
命令的組合使用 氛驮; 操作
; 的作用就是不管 ; 前面的命令執(zhí)行成功與否都會(huì)執(zhí)行后面的命令
在編輯器里面命令的回車換行就相當(dāng)于 ; 操作
把命令變成文件:
使用組合操作將多條命令放在一個(gè)文件中就是腳本文件。
步驟:
創(chuàng)建一個(gè)文件济似,后綴不要求矫废,也可以沒有
-
添加執(zhí)行權(quán)限(windows沒有這個(gè)要求,mac系統(tǒng)專有)
- chmod +x 腳本名
-
把要執(zhí)行的命令寫進(jìn)文件里面
腳本的傳參:
mkdir $1;cd $1;touch 1.js;touch 1.html; // $1 就是參數(shù)
-
運(yùn)行 【 sh 正確的路徑 】即可執(zhí)行,或者 【 ./ 正確的路徑 】 也可以運(yùn)行
-
如果加了 shebang ,刪掉 sh 也能執(zhí)行
shebang: 一個(gè)操作系統(tǒng)弄支持多種腳本砰蠢,需要指定用什么程序來執(zhí)行腳本磷脯,一行注釋
#!/usr/bin/env sh //使用bash執(zhí)行腳本
如果把腳本加了PATH,則可以用【文件名】 直接運(yùn)行,無論在那個(gè)目錄下
-
因此實(shí)際上所有命令都是可執(zhí)行文件娩脾,操作系統(tǒng)優(yōu)先找.exe可執(zhí)行文件赵誓,只不過都加了PATH可以直接運(yùn)行。
Git本地倉庫
Git是一個(gè)分布式版本控制系統(tǒng)柿赊,國內(nèi)有一個(gè)相似的叫做碼云
Git只能管理跟蹤文本文檔
基本命令
git init ; 初始化俩功,會(huì)在當(dāng)前目錄生成一個(gè) .git文件夾,用來存放代碼快照碰声。
-
.gitignore 文件用來保存不被提交的文件名诡蜓,描述哪些變動(dòng)不用提交
- 常見有 node_moudules ; .DS_Store ; .idea ; .vscode
-
git status ; 查看當(dāng)前文件的狀態(tài),會(huì)提示你哪些文件修改了沒有提交
- git status -sb胰挑; 簡略狀態(tài)信息
git add 路徑 ; 選擇哪些變動(dòng)是需要提交的蔓罚,路徑可以是相對(duì)路徑,也可以是絕對(duì)路徑瞻颂,. 或 *
git commit -m 字符串 ; 提交并說明提交的描述豺谈,字符串如果有空格需要用引號(hào)包起來
- git commit -v ; 提交的啰嗦版,運(yùn)行后打開vscode贡这,可以查看詳細(xì)的改動(dòng)茬末,并在添加版本描述后提交
- git log ;查看修改日志
- git reflog ; 查看包括回滾的日志記錄
-
git reset --hard 版本號(hào) ; 回滾到指定版本號(hào)的版本
注意盖矫,在回滾之前要確保沒有add了之后沒提交的文件丽惭,否則會(huì)被刪除
-
git branch 分支名 ; 基于當(dāng)前commit創(chuàng)建一個(gè)新的分支,在哪個(gè)分支提交辈双,代碼更新就在哪個(gè)分支
- git branch 责掏;查看分支情況,并顯示當(dāng)前分支
git checkout 分支名 ; 切換到另一個(gè)分支湃望,當(dāng)前的目錄有未提交的代碼换衬,只要跟另一個(gè)分支不沖突局义,就不用理會(huì),若有冗疮,可以用 git stash 或者合并沖突
git merge 分支名 ; 把指定分支名的分支合并到當(dāng)前分支萄唇,可能會(huì)有沖突
git branch -d 分支名 ; 刪除指定分支
沖突的解決
1.發(fā)現(xiàn)沖突
- 在合并分支時(shí),會(huì)得到conflict提示
- 使用 git status -sb 查看哪些文件沖突了
2.解決沖突
- 依次打開每個(gè)文件
- 搜素====四個(gè)等于號(hào)
- 在上下兩個(gè)部分選擇要保留的代碼术幔,并刪除 ==== <<<< >>>>這些標(biāo)記
- git add 對(duì)應(yīng)的文件
- 再次git status -sb 另萤,解決下一個(gè)文件的沖突
- 直到?jīng)]有沖突,運(yùn)行 git commit (不需要參數(shù))
注意: git add 處理的是文件的變化诅挑,而不是文件四敞,比如說刪除了一個(gè)文件,依然要用 git add 來提交到暫存區(qū)拔妥,之后基本只用 git add. 和 git commit -v ,其他很少用到忿危。
Github遠(yuǎn)程倉庫
github是一個(gè)基于git的代碼托管平臺(tái),付費(fèi)用戶可以建私人倉庫没龙,我們一般的免費(fèi)用戶只能使用公共倉庫铺厨,也就是代碼要公開。就是用來存儲(chǔ)代碼的一個(gè)平臺(tái)硬纤。
第一步生成 ssh key解滓,(用戶首次使用的情況下)
Github幫助文檔 ; https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
運(yùn)行 ssh-keygen -t rsa -b 4096 -C 你的郵箱
一直回車直到?jīng)]有提示
cat ~/.ssh/id_ras.pub 得到公鑰內(nèi)容
打開Github,在設(shè)置頁面填入公鑰
ssh -T git@github.com 查看是否成功
上傳代碼:
在github新建 GIthub Repo(repository 倉庫),復(fù)制其ssh地址
復(fù)制頁面里面的代碼
git remote add origin 加上 ssh 的內(nèi)容 使本地倉庫與遠(yuǎn)程倉庫聯(lián)系起來筝家,方便以后進(jìn)行后續(xù)的提交等操作
-
git push -u origin main(之前叫master) ; 含義如下
-
這句話的意思是推送本地的main分支到遠(yuǎn)程倉庫的main分支
這里有個(gè)坑洼裤,現(xiàn)在github新建的遠(yuǎn)程倉庫的默認(rèn)主分支名為main了
git push -f 強(qiáng)制推送,謹(jǐn)慎使用溪王,有可能會(huì)刪代碼
如果提示應(yīng)該 git pull ,就 git pull 一下
git pull 是先把遠(yuǎn)程分支合并到本地當(dāng)前的分支
如果遠(yuǎn)程分支沒有更新過腮鞍,才可以省略 git pull
-u origin main 的意思是設(shè)置上游分支,-u 選項(xiàng)執(zhí)行以下操作:對(duì)于每個(gè)最新或成功推送的分支莹菱,添加上游(跟蹤)引用移国,由無參數(shù)git pull和其他命令。所以呢芒珠,使用-u選項(xiàng)推送本地分支后桥狡,此本地分支將自動(dòng)與遠(yuǎn)程分支鏈接搅裙,并且您可以使用git pull而無需任何參數(shù)皱卓。
-
下載代碼:
git clone git@xxxxx[目標(biāo)路徑]
如果是不同的機(jī)器,要上傳新的 ssh key (一個(gè)機(jī)器一個(gè)key)
cd 目標(biāo)路徑
git add / git commit / [git pull] / git push 四連操作
單獨(dú)下載某個(gè)分支:
先下載整個(gè)倉庫部逮,然后git checkout 分支
或者使用一些特殊命令
git clone 的變式:
-
git clone git@?/xxx.git
這是默認(rèn)的復(fù)制命令后的方式娜汁,會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)xxx文件夾
xxx/.git 就是本地倉庫
-
git clone git@?/xxx.git yyy
這樣會(huì)在本地新建一個(gè)yyy名字的目錄
yyy/.git 就是本地倉庫
-
git clone git@?/xxx.git .
最后有個(gè)點(diǎn),點(diǎn)前面有空格
這種方式不會(huì)新建目錄兄朋,會(huì)在當(dāng)前目錄存放代碼和 .git
因此最好再開始前進(jìn)入一個(gè)空的目錄
git rebase -i xxxxxx ; 美化歷史命令
通靈術(shù)
git stash 掐禁; 用來隱藏文件
git stash pop ; 將隱藏文件召喚出來