1. 程式人生 > 其它 >bash的特性

bash的特性

bash的特性(study01)

1.常用的萬用字元(重點)

*: 匹配0或多個任意字元
?: 匹配任意單個字元
[list]: 匹配[list]中的任意單個字元,或者一組單個字元
[!list]: 匹配除list中的任意單個字元
{string1,string2,...}: 匹配string1,string2或更多字串

2.bash中的引號(重點)

  • 雙引號 "" : 會把引號的內容當成整體來看待,允許通過$符號引用其他變數值

  • 單引號 ' ' : 會把引號的內容當成整體來看待,禁止引用其他變數值,shell中特殊符號都被視為普通字元

  • 反撇號 `` : 反撇號和$()一樣,引號或括號裡的命令會優先執行,如果存在巢狀,反撇號不能用

[root@shell test]# date +%F
2022-02-24
[root@shell test]# echo "hello world"
hello world
[root@shell test]# echo 'hello world'
hello world
[root@shell test]# echo $(date +%F)
2022-02-24
[root@shell test]# echo "$(date +%F)"
2022-02-24
[root@shell test]# echo '$(date +%F)'
$(date +%F)
[root@shell test]# echo `date +%F`
2022-02-24
[root@shell test]# echo "`date +%F`"
2022-02-24
[root@shell test]# echo `"echo `date +%F`"`
-bash: command substitution:行1: 尋找匹配的 `"' 是遇到了未預期的檔案結束符
-bash: command substitution:行2: 語法錯誤: 未預期的檔案結尾
-bash: command substitution:行1: 尋找匹配的 `"' 是遇到了未預期的檔案結束符
-bash: command substitution:行2: 語法錯誤: 未預期的檔案結尾
date +%F

3.shell簡介

  • shell就是人機互動的一個橋樑

[root@shell test]
/bin/sh      #是bash的一個快捷方式
/bin/bash    #bash是大多數Linux預設的shell,包含的功能幾乎可以涵蓋shell所有的功能
/sbin/nologin #表示非互動,不能登入作業系統
/bin/dash   #小巧,高效,功能相比少一些
/bin/csh    #具有C語言風格的一種shell,具有許多特性,但也有一些缺陷
/bin/tcsh    #是csh的增強版,完全相容csh

4.shell指令碼

(1)什麼是shell指令碼?

  • 一句話概括

    簡單來說就是將 需要執行的命令 儲存到文字中,按照順序執行,從上至下。它是解釋型的,意味著不需要編譯。

  • 準確敘述

    若干命令 + 指令碼的基本格式 + 指令碼特定語法 + 思想 = shell指令碼

(2)什麼時候用到指令碼?

遇到重複化、複雜化的工作,通過把工作的命令寫成指令碼,以後通過執行指令碼就能完成這些工作。

(3)shell指令碼能幹啥?

①自動化軟體部署 LAMP/LNMP/Tomcat

②自動化管理 系統初始化指令碼、批量更改主機密碼、推送公鑰...

自動化分析處理 統計網站訪問量

自動化備份 資料庫備份、日誌轉儲...

⑤自動化監控指令碼

(4)如何學習shell指令碼?

1.儘可能記憶更多的命令

2.掌握指令碼的標準格式(指定魔法位元組、使用標準的執行方式執行指令碼)

3.必須熟悉掌握指令碼的基本語法

(5)學習shell指令碼的祕訣

多看(看懂)——> 模仿(多練)——> 多思考(多寫)

(6)shell指令碼的基本寫法

1)指令碼第一行,魔法字元 #!指定解析器

#!/bin/bash 表示以下內容使用bash直譯器解析

注意:

如果直接將直譯器路徑寫死在腳本里,可能在某些系統就會存在找不到直譯器 的相容性問題,所以可以使用

#!/bin/env bash

2)指令碼第二部分,註釋(#號)說明,對指令碼的基本資訊進行描述【可選】

#!/bin/bash

# Name: 名字
# Desc: 描述
# Path: 存放路徑
# Usage: 用法
# Update: 更新時間

#以下指令碼具體內容

3)指令碼第三部分,具體的程式碼