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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM