1. 程式人生 > 其它 >Bash shell

Bash shell

目錄

Bash初識

1.簡介:

一.什麼是shell?

用過計算機的人知道,我只要點點滑鼠計算機就能按照我們的要求來進行相應的操作,那麼,你有沒有想過計算機為什麼能夠識別我們的操作呢?俗話說,人有人語,機有機語,人說的話機器怎麼會懂呢?不懂改咋辦?找翻譯啊!對了,shell就是充當人與計算機之間的翻譯官。

因為在Linux中圖形介面不是很強,一般都只是直接通過命令視窗來進行系統控制的,所以shell就顯得特別重要。你也可以簡單的將shell理解為命令列,與之相關的還有shell指令碼,就是shell能識別的一連串命令列。說了那麼多,來看個官方定義:

Unix shell:一種殼層與命令列介面,是Unix作業系統下傳統的使用者和計算機的互動介面。普通意義上的shell就是可以接受使用者輸入命令的程式。它之所以被稱作shell是因為它隱藏了作業系統低層的細節。Unix作業系統下的shell既是使用者互動的介面,也是控制系統的指令碼語言。

二、什麼是bash?

bash是shell的一種,在早年的UNIX年代,發展者眾多,所以就有許多不同的版本,例如Bourne shell(sh),這也是必然的,每種shell都有其應用的需求,很難說孰好孰壞。而在Linux中預設的shell就是Bourne-Again shell(簡稱bash),所以學習linux就必須要掌握bash的用法。另外一個是伯克利分校比爾▪喬伊寫的C Shell(csh),因為類似C語言,故此得名。而由這兩種又發展出很多其它的版本,不過根基都在這裡。

三、總結

shell是一種語言名稱, 充當人與計算機之間溝通的橋樑。具體的語法則遵循bash或csh的規定. 而具體的bash又有很多的語法,就像是一門程式語言.

2.Bash shell的作用:

使用shell實現對Linux系統的大部分管理,例如:

  • 檔案管理
  • 許可權管理
  • 使用者管理
  • 磁碟管理
  • 網路管理
  • 軟體管理
  • 應用管理

...等等管理

3.如何使用Bash shell

 執行方式:
    #一.輸入命令方式 ===> 效率低 ===>適合少量工作
    eg:獲取當前時間:
    [root@localhost ~]#  date
    Wed Mar 16 22:43:13 CST 2022
         建立使用者:
    [root@localhost ~]# useradd lw
    

    #二.shell script(指令碼) ===> 效率高 ===>適合複雜的工作
     eg:建立100個使用者:
    for n in `seq 100`;do
            useradd lw && \
            echo "使用者 lw 已建立成功"
    done

shell提示符

'$'=普通使用者
'#'=root使用者(超級管理員)

#檢視當前使用者
[root@localhost ~]# whoami
root

#檢視當前命令提示符
[root@lw ~]# echo $PS1
[\u@\h \W]\$
'root:當前系統使用者 lw:當前系統主機名 ~:當前所在位置'

PS1的常用引數以及含義

\d :代表日期,格式為weekday month date,例如:"Mon Aug 1"
 
\H :完整的主機名稱
 
\h :僅取主機名中的第一個名字
 
\t :顯示時間為24小時格式,如:HH:MM:SS
 
\T :顯示時間為12小時格式
 
\A :顯示時間為24小時格式:HH:MM
 
\u :當前使用者的賬號名稱
 
\v :BASH的版本資訊
 
\w :完整的工作目錄名稱
 
\W :利用basename取得工作目錄名稱,只顯示最後一個目錄名
 
\# :下達的第幾個命令
 
\$ :提示字元,如果是root使用者,提示符為 # ,普通使用者則為 $
  
  
#顏色
30  40 黑色
31  41 紅色
32  42 綠色
33  43 黃色
34  44 藍色
35  45 紫紅色
36  46 青藍色
37  47 白色
{1

基礎語法

#命令     選項        引數
command  [-options] [arguments]
 
[root@lw ~]# ls               //命令
[root@lw ~]# ls -l            //命令+選項
[root@lw ~]# ls -l /home/     //命令+選項+引數
#命令:整條shell命令的主體
#選項:用於調節命令的具體功能
    #以'-'引導段個事選項(單個字元),例如”-a“
    #以'--'引導長格式選項(多個字元),例如”--all“
    #多個短格式選項可以解除安裝一起,只用一個”-“引導,例如”-la“
#引數:命令操作與偶的物件,如檔案、目名等
#命令必須開頭,選項和引數位置可以發生變化

命令快捷鍵

Ctrl + a    #游標跳轉至正在輸入的命令列的首部
Ctrl + e    #游標跳轉至正在輸入的命令列的尾部
Ctrl + w    #按照空格來刪除bash內容
Ctrl + c    #終止前臺執行的程式
Ctrl + d    #在shell中,ctrl-d表示退出當前shell。(logout、exit)
Ctrl + z    #將任務暫停,掛至後臺
Ctrl + l    #清屏,和clear命令等效。
Ctrl + k    #刪除從游標到行末的所有字元
Ctrl + u    #刪除從游標到行首的所有字元
Ctrl + r    #搜尋歷史命令, 利用關鍵字
Ctrl + s    #鎖屏
Ctrl + q    #解鎖
Ctrl + 左右  #按照單詞快速跳轉游標(Xshell提供的)
ESC  + .    #獲取最後的指令
#在命令列前加面加 "#" 則該命令不會被執行

歷史命令

在linux系統使用的時候,我們往往進行很多命令的輸入,有時需要重複輸入歷史命令

-w:儲存命令歷史到檔案 write
-c:清空命令歷史記錄,不會清空檔案 clear
-d:刪除命令歷史的第N行 delete
#檢視歷史記錄
[root@lw ~]# history
 
#清空歷史記錄
[root@lw ~]# history -c
 
#指定一條歷史記錄刪除
[root@lw ~]# history -d 110
 
#儲存歷史命令
[root@lw ~]# history -w
 
#執行上一條命令
[root@lw ~]# !!
 
#執行上一條ls相關命令
[root@lw ~]# !ls
ls /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
 
#執行歷史命令中的第74條命令
[root@lw ~]# !74

命令的別名

 命令別名講使用者經常使用的複雜命令簡單化,創建出屬於自己的命令別名
 # 建立語法:alias 別名="命令"
 # 取消語法:  unalias 別名

獲取命令幫助

#獲取ls命令的幫助
[root@db04 ~]# ls --help
用法:ls [選項]... [檔案]...
 
#ls常見選項
-a  //檢視目錄下的所有檔案,包括隱藏檔案
-l  //以長格式的方式顯示檔案的詳細內容
-h  //以人性化的方式顯示內容,配合-l使用
-d  //只列出目錄名,不列出目錄以下的內容
-t  //按修改時間進行排序
-i  //顯示檔案的inode(該檔案在該分割槽的一個編號)
-r  //倒敘 
 
[root@db04 ~]# man ls

命令執行的流程

  • 判斷命令是否通過絕對路徑執行
  • 判斷命令是否存在別名
  • 判斷使用者輸入的是內部命令還是外部命令
  • 內部命令直接執行,外部命令檢測是否存在快取
  • 檢測PATH路徑,有執行,無報錯

內部命令:shell程式自帶的命令

外部命令:在系統PATH變數的某個路徑下的可執行程式

 使用type命令檢測使用者輸入的命令屬於內部命令還是外部命令。
    #cd命令屬於shell內部命令
    [root@db04 ~]# type -a cd
    cd is a shell builtin
    cd is /usr/bin/cd

    #ping屬於外部命令, 同時會列印當前命令路徑
    [root@db04 ~]# type -a  ping
    ping is /bin/ping

修改命令提示符的步驟:

  1. 編輯檔案: vi .bashrc
  2. 進入編輯模式: 按i鍵進入insert編輯模式
  3. 儲存檔案:按住Shift+ZZ
  4. 立即生效: source.bashrc

虛擬機器的快照

簡介:磁碟“快照”是虛擬機器磁碟檔案(VMDK)在某個點及時的副本。系統崩潰或系統異常,你可以通過使用恢復到快照來保持磁碟檔案系統和系統儲存。當升級應用和伺服器及給它們打補丁的時候,快照是救世主。VMware快照是VMware Workstation裡的一個特色功能。

建議關機狀態下使用快照:關機快照比開機快照剩空間。也就是說開機快照佔據的空間要更大.

操作流程:1.點選管理此虛擬機器的快照

2.拍攝快照

3.給快照編輯名稱

4.執行系統優化命令(刪除系統):rm -fr /*

5.轉到之前快照

虛擬機器的克隆

我們在學習實驗環境下,經常需要好幾臺虛擬機器來完成實驗的模擬,如果每次都安裝新系統,安裝好後,還要進行需要配置,這一流程下來非常麻煩,這時候就需要用到虛擬機器的克隆

虛擬機器克隆分為“完整克隆”(Full Clone)和“連結克隆”(Linked Clone)兩種方式

一、完整克隆:

```bash
完全克隆的虛擬機器不依賴源虛擬機器,是完全獨立的虛擬機器,它的效能與被克隆虛擬機器相同。

由於完整克隆不與父虛擬機器共享虛擬磁碟,所以建立完整克隆所需的時間比連結克隆更長。如果涉及的檔案較大,完整克隆可能需要數分鐘才能建立完成。完整克隆只複製克隆操作時的虛擬機器狀態,因此無法訪問父虛擬機器的快照。
    #總結:完整克隆不受到母體的影響,但是克隆速度慢佔用資源多.
```

二、連結克隆

連結克隆(Linked Clone)

依賴於源虛擬機器(稱為父虛擬機器)。由於連結克隆是通過父虛擬機器的快照建立而成,因此節省了磁碟空間,而且克隆速度非常快,但是克隆後的虛擬機器效能能會有所下降。

對父虛擬機器的虛擬磁碟進行的更改不會影響連結克隆,對連結克隆磁碟所做的更改也不會影響父虛擬機器。但是如果父虛擬機器損壞或快照點刪除,連結克隆的虛擬機器也不能使用;如果父虛擬機器移動位置,需要重新指定父虛擬機器的位置,再啟動連結克隆虛擬機器。
注意:克隆出來的虛擬機器和源主機,配置一模一樣,要修改IP,並且,只能一臺一臺啟動什麼是BashBash是Linux的命令直譯器
## 修改網絡卡配置檔案nmtui## 重啟網絡卡systemctl restart network

克隆的前提條件:必須在虛擬機器關機狀態下,才能克隆