日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bash脚本基础

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bash脚本基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.bash特性之命令補全與路徑補全

命令補全:敲擊Tab按鍵

shell程序在接收到用戶執行命令的請求且分析完成后,最左側字符串將被當作命令去分析$PATH標量所指定的各路徑下去查找

查找機制:

1.查找內部命令
2.查找外部命令:去$PATH變量下所指定的各路徑下,自左而右逐個搜索各目錄下的文件名:打頭的字符串如果能唯一標識,則直接補全;不能唯一標識,在敲擊一次Tab按鍵,可給出列表;
3.錯誤:沒有任何命令被識別,則無響應

路徑補全:

在給定的起始路徑的上級目錄下,以對應路徑下的打頭字符串來逐一匹配上級目錄下的每個文件

2.bash特性之命令行展開

把命令行給定的特殊符號自動轉化為相應的字符串的機制
例:
“~”:自動切換為家目錄
“~ username”:切換到指定用戶的家目錄
“{}”:可承載一個以逗號分割的路徑列表,能夠將其展開為多個獨立的路徑

#批量創建空文件夾 mkdir /tmp/{x,y,z} = mkdir /tmp/x /tmp/y /tmp/z mkdir /tmp/{x/y,m/{m,n}} = mkdir /tmp/x/y /tmp/m/m /tmp/m/n mkdir /tmp/{x,y}/z = mkdir /tmp/x/z /tmp/y/z

3.bash的特性:命令執行的狀態結果

命令的正常輸出結果,叫做命令的返回值
命令執行的狀態結果:成功,失敗
bash用一特殊變量來保存最接近一次的命令執行狀態結果:“$?”

echo $? #顯示命令執行的結果

顯示的結果中,0表示命令執行成功,1-255表示沒有成功
命令的輸出結果通過引用來保存下來或直接調用,例如:

mkdir -v `echo $?`

結果是創建以相應數字為文件名的空文件夾

使用“ ”(反引號) >"''"(引號):強引用 >""""(雙引號):弱引用 >""(反引號):命令引用

4.bash的特性之glob通配符

glob:文件名通配符,能夠快速引用多個文件,只指文件名,不包括路徑
、文件名匹配度檢測

元字符:基于元字符可編寫匹配模式(pattern)

"*"(米字符):匹配任意長度的任意字符

例:
p* :以p開頭的任意字符串,文件名。。。
pa:以pa開頭的
p:以p結尾的

  • p *a:中間有p,結尾為a的

"?"(問號):匹配任意單個字符

例:
p?a:代表三個字符,其中中間的為任意字符
p?兩個字符
p??,三個字符

“[ ]”(中括號):匹配指定集合內的任意單個字符

例:[a-z],[A-Z]:此時不區分大小寫
[0-9]:
[a-z0-9]:字母與數字
[[:upper:],[A-Z]]:所有大寫字母,只顯示大寫
[[:lower:]],只顯示小寫
[[:digit:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]:匹配指定集合外的任意單個字符,如[^[:alpha:]]

5.bash特性之變量

程序=指令+數據
數據:文件、變量
變量:內存空間,有名稱,名稱即為變量
變量賦值:NAME=VALUE
=:為賦值符號,把VALUE存儲到NAME指向的內存空間中

變量命名:只能使用字母、數字和下劃線;而且不能以數字開頭;
變量引用:${NAME}, $NAME
變量替換:把變量引用符號出現的位置替換為其指向的內存空間中的數據;

bash變量種類:

1.本地變量:作用域為當前shell進程;不包括其子進程;
2.環境變量:使用域為當前shell進程及其子進程;
3.局部變量:作用域:生效范圍,也即可引用到的范圍;
4.位置參數變量
5.特殊變量

6.bash特性之IO重定向

1.輸出重定向:重定向程序正常執行的結果

COMMAND > /PATH/TO/SOMEFILE 覆蓋重定向:覆蓋目標文件中的原有內容; COMMAND >> /PATH/TO/SOMEFILE 追加重定向:追加新產生的內容至目標文件尾部;

shell的一個功能開關:
set -C:禁止覆蓋輸出從定向至已存在的文件
注意:此時仍然可以使用“>|”至目標文件
set +C:關閉上述特性

2.錯誤重定向:重定向錯誤的執行結果

COMMAND 2> /PATH/TO/SOMEFILE 錯誤輸出覆蓋重定向; COMMAND 2>> /PATH/TO/SOMEFILE 錯誤輸出追加重定向;

3.合并標準輸出與錯誤輸出流

1.&>,&>>
2.command > /path/to/somefile 2>&1
3.command >> /path/to/somefile 2>&1

4.特殊設備

1.特殊輸出目標:/dev/null,垃圾桶
2.特殊的輸出文件:/dev/zero

5.輸入重定向

COMMAND < /PATH/FROM/SOMEFILE

7.bash特性之管道

COMMAND1 | COMMAND2 | COMMAND3 | ...

練習:
1.把/etc/passwd文件最后三行信息中所有小寫字符改為大寫后輸出

cat /etc/passwd | tr 'a-z' 'A-Z'

2.取出/etc/fstab的第六行

head -n 6 /etc/fstab | tail 1

3.取出/etc目錄下所有以p開頭的文件或目錄,只顯示前5個

ls -a /etc/p* | head 5

特殊命令:
1.tee命令:
tee [OPTION]... [FILE]...
-a:使用追加輸出,而非覆蓋

COMMAND | tee /PATH/TO/SOMEFILE

例:

ls -al /tmp | tee -a /tmp/bashrc 列出/tmp下的文件,并把結果追加導入到/tmp/bashrc文件中

2.tr命令:
tr [option] set1 [set2]
把輸出的數據當中的字符,實現對位轉換,即把數據中的存在于字符集中的字符,統統轉換為字符幾種對未的字符;

1.tr set1 set2 < /path/from/somefile #字符轉換 2.tr -d set1 < /path/to/somefile #刪除

轉載于:https://www.cnblogs.com/zhangpf/p/5657365.html

總結

以上是生活随笔為你收集整理的bash脚本基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。