shell+bash
shell基本概念
在計算機科學中,Shell俗稱殼,是指“提供使用者使用界面”的軟件(命令解析器)、比如window系統的cmd、linux系統中的bash。它可以接受用戶的命令,然後調用響應的應用程序。
創建文件、移動文件、調用計算器等計算機功能最終都依賴於計算機的硬件,用戶無法直接操作這些硬件。但是我們可以通過shell,輸入響應的命令,就可以讓計算機調用響應的硬件去執行響應的操作。因此我們把shell叫做殼。
shell的實質就是一個軟件,它可以接收用戶的命令,然後調用計算機相應的應用程序
shell分類
- 圖形界面shell:通過提供友好的可視化界面,調用相應應用程序,如windows系列操作系統,Linux系統上的圖形化應用程序GNOME、KDE等。
- 命令行shell:通過鍵盤輸入特定命令的方式,調用相應的應用程序,
- windows系統的cmd.exe、PowerShell
- Linux系統的Bourne shell ( sh)、Bourne Again shell ( bash)等。
圖形界面shell操作方便,直觀,但是更加消耗計算機的性能。命令行shell因爲不用渲染界面,效率更高,在linux服務器上使用非常的廣泛
關於bash
bash是linux操作系統默認的命令行shell。windows系統中並不支持bash。
想要在windows中使用bash,需要安裝軟件,這個軟件模擬集成 了bash的大部分命令。
常見的bash命令
- 在任意文件夾中,都可以使用右鍵,通過git bash here打開命令行窗口,此時的路徑就是當前目錄。
窗口上右鍵,通過options–>Text–>select可以調整字體的大小。
- 路徑操作
# cd 改變目錄 (change directory)
cd images #進入images文件夾
cd .. #進入上一層目錄
cd ~ #進入用戶根目錄
# tab 自動補全,當我們輸命令或者目錄很長時,可以使用tab鍵進行自動補全。
# 按兩次tab,會把所有符合要求的內容都列出來。
# pwd 打印當前目錄的路徑 (print work directory)
pwd
# ls 展示當前目錄列表(list)
ls # 展示當前目錄
ls -a # 展示全部內容,包括隱藏文件
ls -l # 以列表的形式展示內容
ls -al # 以列表的形式展示所有的內容,包括隱藏文件。
ls --help # 查看ls所有的參數。
ls -l images # 展示images目錄下的文件,如果沒有寫目錄,默認展示當前目錄。
# clear reset清屏
clear # 清除屏幕內容,滾動條,保留了歷史
reset # 重置,歷史記錄沒了。
# mkdir 創建一個文件夾 (make directory)
mkdir css # 創建一個css的文件夾
mkdir css img js # 創建了三個文件夾
# rmdir 刪除一個空的文件夾(沒啥用)
rmdir img # 刪除文件夾
# touch 創建文件
touch index.html #創建了一個index.html文件
touch css/index.css # 在css目錄下創建idnex.css文件
# rm 刪除一個文件獲取文件夾
rm index.html # 刪除index.html文件
rm js # 刪除空的js文件夾
rm -r css # 遞歸刪除一個文件夾
# mv 移動文件(move)
mv index.html js # 將html文件移動到js文件夾中
mv index.html index2.html # 將index.html重命名爲index2.html
# cp 複製文件(cp)
cp index.html index2.html # 複製index.html文件,命名爲index2.html
cp -r css css02 # 如果複製的是文件夾,需要使用-r參數。
# cat 查看文件全部內容
cat index.html
# less 查看文件部分內容
less index.html
# q退出查看
# > 重定向 將輸出結果重定向到某個文件中
ls > info.text # 將list的結果重定向到info.text文件中
echo "hello world" > info.text # 將hello world重定向到info.text文件中 會覆蓋原來的內容
echo "hello world1" >> info.text # 將hello world1追加到info.text文件中。
vi編輯器
vi編輯器的使用瞭解即可,除非真正在linux環境,不然是用不到的
vi info.txt # 使用vi編輯器打開info.txt文件,如果該文件不存在,將會被創建。
vi編輯器的三種模式:
{% asset_img vi3model.png [vi編輯器的三種模式] %}
命令模式
使用vi命令,默認進入的是命令模式,此時是無法編輯的。使用a
或者i
可以進入輸入模式
# 進入編輯模式,
i #光標前面插入(insert)
I #行首插入
a #光標後插入(append)
A #行末插入
o #當前行下面插入新行
O #當前行上面插入新行
# 保存並退出,大寫
ZZ
# 轍銷操作,可多次使用
u
# 刪除當前行
dd
# 複製當前行
yy
# 粘貼內容
p
# 向前翻頁
ctrl+b
# 向後翻頁
ctrl+f
輸入模式
在輸入模式下,可以任意的輸入內容
在輸入模式下,按esc
進入命令行模式。
末行模式
插入模式無法直接進入末行模式。
在命令行模式下按下shift+:
進入末行模式,在末行模式下,通常用來保存文件或者撤銷保存
# 使用 vi
vi 文件路徑
# 保存,
:w
# :w filenme #另存爲
# 退出
:q
# 保存並退出
:wq
# 撤銷更改,返回到上一次保存的狀態
:e!
# 不保存強制退出
:q!
# 展示行號
:set nu
練習:在js的目錄下新建一個文件,靜夜思.txt,輸入這首詩的內容,並且保存。
版本控制工具
什麼是版本控制系統?
版本控制系統(Version Control System):是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。版本控制系統不僅可以應用於軟件源代碼的文本文件,而且可以對任何類型的文件進行版本控制。
常見的版本控制系統有:svn、cvs、git
爲什麼要有版本控制系統?
- 在開發過程中,經常需要對一個文件進行修改甚至刪除,但是我們又希望能夠保存這個文件的歷史記錄,如果通過備份,那麼管理起來會非常的複雜。
- 在多人開發時,如果需要多人合作開發一個頁面,那麼修改以及合併也會非常的棘手。容易出現衝突。
版本控制系統分類
本地版本控制系統
本地版本控制系統就是在一臺機器上,記錄版本的不同變化,保證內容不會丟失
缺點:如果多人開發,每個人都在不同的系統和電腦上開發,沒辦法協同工作。
{% asset_img vcs.png [vcs] %}
集中式版本控制系統
svn/cvs都是集中式的版本控制系統
- 需要一箇中央服務器來管理代碼的的版本和備份
- 所有的用戶電腦都是從中央服務器獲取代碼或者是將本地的代碼提交到中央服務器
- 依賴與網絡環境,如果連不上中央服務器,就無法提交和獲取代碼。
- 如果中央服務器宕機,所有人都無法工作。
{% asset_img jzs.png [jzs] %}
分佈式版本控制系統
git是分佈式的版本控制系統。
- 需要一臺服務器作爲代碼倉庫
- 每個用戶電腦都是一個服務器,並且和代碼倉庫是鏡像的,用戶修改和獲取代碼都是提交到自己的服務器當中。
- 不需要網絡就可以進行工作。
- 當連接網絡時,用戶可以選擇將自己的服務器與代碼倉庫進行同步。
{% asset_img fbs.png [fbs] %}
git
git介紹
Git是一款免費、開源的分佈式 版本控制系統 ,用於敏捷高效地處理任何或小或大的項目。
Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
git安裝
安裝很簡單,一直下一步即可。在任意的目錄下右鍵,能夠出現下圖,表示安裝成功了。
{% asset_img gitinstall.png [gitinstall] %}
git是用法方式主要有兩種,
- git gui,即圖形化界面的方式
- git bash,命令行的方式
bash是linux系統的命令,因此學習git前,我們先學習一下bash
基本方法
- 初始化git倉庫
git init
- 查看當前git倉庫的狀態
git status
- 將文件添加到git的暫存區
git add 文件名
- 將文件由暫存區提交到倉庫區
git commit -m '提交說明'
- 查看提交日子
git log
# 初始化git倉庫,會在當前目錄生成一個隱藏文件夾 .git 不要去修改這個文件夾下的任意東西。
git init
# 查看git的狀態 ,如果此時新建一個文件,那麼這個文件是沒有被追蹤的,說白了git還沒有管理這個新建的文件
git status
# 讓git管理這個新建的文件
git add index.html
# 讓文件由暫存區提交到倉庫區。此時文件才真正的被git管理了。
#
# 如果提交日誌亂碼,右鍵-->options-->Text-->將編碼改成utf-8
git commit -m '第一次提交'
# 查看提交日誌
git log
配置郵箱和用戶名
如果第一次使用git,會要求設置用戶名和郵箱
# git config user.name 你的目標用戶名
# git config user.email 你的目標郵箱名
# 這種配置方式只有在當前倉庫生效
git config user.name hcc
git config user.email flycc@163.com
# 可以使用--global參數,配置全局的用戶名和郵箱,這樣別的git倉庫就不需要重新配置了。
# 如果同時配置了局部的和全局的,那麼局部的用戶名和郵箱將會生效。
git config --global user.name hucc
git config --global user.email 111111@qq.com
# 查看配置信息
git config --list
git的工作原理
{% asset_img gityl.png [gityl] %}
git命令詳解
git add
- 作用:將文件由 工作區 添加到 暫存區,暫存文件
- 命令:
git add 文件名
- 例如:
git add index.html
- 例如:
git add --all
或者git add -A
(簡寫) 添加所有文件git add a.txt b.txt
同時添加兩個文件git add *.js
添加當前目錄下的所有js文件
git checkout 文件名
- 作用:暫存區的內容恢復到工作區。
git checkout 1.txt
將暫存區中1.txt文件恢復到工作區
git commit
- 作用:將文件由 暫存區 添加到 倉庫區
git commit -m "提交說明"
git status
作用:查看文件的狀態
命令:
git status
- 命令:
git stauts -s
簡化日誌輸出格式
git log
- 作用:查看提交日誌
git log
只能查看當前head以及以前的日誌git log --oneline
簡潔的日誌信息git reflog
查看所有的提交變更日誌
git reset
- 作用:版本回退,將代碼恢復到已經提交的某一個版本中。
git reset --hard 版本號
將代碼回退到某個指定的版本(版本號只要有前幾位即可)git reset --hard head~1
將版本回退到上一次提交
- ~1:上一次提交
- ~2:上上次提交
- ~0:當前提交
git忽視文件
在倉庫中,有些文件是不想被git管理的,比如數據的配置密碼、寫代碼的一些思路等。git可以通過配置從而達到忽視掉一些文件,這樣這些文件就可以不用提交了。
- 在倉庫的根目錄創建一個
.gitignore
的文件,文件名是固定的。 - 將不需要被git管理的文件路徑添加到
.gitignore
中
# 忽視idea.txt文件
idea.txt
# 忽視.gitignore文件
.gitignore
# 忽視css下的index.js文件
css/index.js
# 忽視css下的所有的js文件
css/*.js
# 忽視css下的所有文件
css/*.*
# 忽視css文件夾
css