網(wǎng)站開發(fā)的前臺開發(fā)工具武漢seo百度
1. Shell的介紹
在Linux中,Shell 是一種命令行解釋器,它是用戶與操作系統(tǒng)內(nèi)核之間的接口,它負(fù)責(zé)解釋用戶輸入的命令,并將其轉(zhuǎn)換成系統(tǒng)調(diào)用或其他操作系統(tǒng)能夠執(zhí)行的指令。
Shell 提供了一種交互式的方式來與操作系統(tǒng)進(jìn)行通信,用戶可以通過輸入命令來執(zhí)行各種操作。
- 如文件操作、進(jìn)程管理、網(wǎng)絡(luò)通信等。
- 常見的 Shell 包括 Bash、Zsh、Fish 等。
Bash(Bourne Again SHell)是一種常用的shell,是基于Bourne shell(sh)的一個擴展版本,提供了更多的功能和特性,比如命令歷史記錄、命令補全、變量替換等。因此,可以說bash是一種shell,它是Linux系統(tǒng)中最常用的shell之一。
不同的操作系統(tǒng)有不同的shell解釋器,例如Linux中常用的Shell解釋器是Bash,而Windows使用的是Cmd或者PowerShell。
- Windows中存在
*.bat
批處理腳本 - Linux中常用
*.sh
表示shell腳本
2. Bash的特性
Bash 是Linux系統(tǒng)中最常用的shell之一,Bash也是許多Linux系統(tǒng)默認(rèn)的命令行解釋器,它允許用戶通過命令行界面與操作系統(tǒng)內(nèi)核進(jìn)行交互,并執(zhí)行各種命令和腳本。由于其強大的功能和廣泛的應(yīng)用,Bash在Linux和其他類Unix系統(tǒng)中被廣泛使用。
2.1. 自動補全
Bash可以根據(jù)用戶輸入的部分命令或文件名進(jìn)行自動補全,提高命令輸入的效率。
#1.輸入"ls /us",然后按下 Tab 鍵,Bash會自動補全為:ls /usr
ls /us#2.輸入"his",然后按下 Tab 鍵,Bash會自動補全為:history
his
2.2. 歷史命令記錄
Bash可以記錄用戶在命令行中輸入的命令歷史,用戶可以使用上下箭頭來瀏覽和重復(fù)之前輸入的命令。
- 用戶登錄Linux終端后,系統(tǒng)重新讀取命令歷史記錄
.bash_history
文件。
#1.linux默認(rèn)的歷史命令保存在用戶目錄下的“.bash_history”文件
/root/.bash_history
/home/jungout/.bash_history#2.查看歷史命令(-c清除歷史記錄,-r恢復(fù)歷史命令)
history
2.3. 別名和函數(shù)
Bash支持命令別名和自定義函數(shù),可以通過設(shè)置別名和定義函數(shù)來簡化命令行操作。
#1.輸入alias可以查看系統(tǒng)上所有別名
alias#2.創(chuàng)建命令別名(輸入ll就相當(dāng)于輸入ls -l)
alias ll='ls -l'
2.4. 元字符
Bash中支持元字符,是具有特殊含義的字符,用于匹配文本或執(zhí)行特定的操作。
- 常見的元字符包括通配符
*
和?
,定位符^
和$
,字符類[...]
,反向引用\1
等等。 - 這些元字符在正則表達(dá)式中也經(jīng)常使用,用于進(jìn)行文本匹配和替換操作。
在Shell中,轉(zhuǎn)義字符是反斜杠(\)。反斜杠用于轉(zhuǎn)義特殊字符(元字符),使其不再具有特殊含義,而是作為普通字符來處理。
- 常見的元字符:
''
單引號,""
雙引號,$
美元符號,\
反斜杠。 - 特殊的轉(zhuǎn)義字符:
\n
換行,\r
回車,\t
制表符,\b
退格 。
#1.要輸出雙引號字符(")
echo "This is a quote: \"" #輸出:This is a quote: "#2.要輸出反斜杠字符(\)
echo "The path is: /home\\documents" #輸出:The path is: /home\documents
2.5. 通配符
通配符擴展:Bash支持通配符(如*
和?
)來擴展文件名,用于匹配一系列文件名或者路徑名的特殊字符。
-
*
:匹配任意長度的任意字符(當(dāng)前目錄下存在file1.txt、file2.txt、file3.txt三個文件)# 列出所有以.txt結(jié)尾的文件 ls *.txt
-
?
:匹配任意單個字符ls file?.txt
-
[]
:匹配指定范圍內(nèi)的任意單個字符ls file[0-9].txt ls [a-z]ile[0-9].txt
-
{}
:匹配指定的一組字符中的任意一個(集合)mkdir {dir1,dir2}
-
!
:用于否定匹配# 列出所有不以.txt結(jié)尾的文件 ls !(*.txt)
2.6. 重定向
I/O 重定向(機制):Bash支持I/O重定向,可以將命令的輸入和輸出重定向到文件或其他命令。
>
:將命令的標(biāo)準(zhǔn)輸出重定向到文件,如果文件不存在則創(chuàng)建,如果文件已存在則覆蓋。>>
:將命令的標(biāo)準(zhǔn)輸出追加到文件末尾,如果文件不存在則創(chuàng)建。<
:將文件內(nèi)容重定向為命令的標(biāo)準(zhǔn)輸入。<<
:用來表示輸入重定向,可以將一個文本塊作為輸入傳遞給命令。
#1.使用 > 將命令的輸出重定向到文件(強制覆蓋文件)
ls > filelist.txt#2.使用 >> 將命令的輸出追加到文件末尾(文件不存在則創(chuàng)建)
ls >> filelist.txt#3.從文件中讀取內(nèi)容作為命令的輸入(讀取unsorted內(nèi)容排序后再寫入到sorted)
sort < unsorted.txt > sorted.txt#4.把文本塊作為輸入傳遞給cat命令。
cat << EOF
This is a multiline
message that is input
to the cat command
EOF
2.7. 管道
管道(機制):Bash支持管道操作符 |
,可以將一個命令的輸出作為另一個命令的輸入(執(zhí)行效果較慢)。
- 將一個命令的輸出作為另一個命令的輸入,實現(xiàn)多個命令的協(xié)作。
- 在數(shù)據(jù)處理過程中,可以通過管道將多個命令連接起來,實現(xiàn)復(fù)雜的數(shù)據(jù)處理任務(wù)。
- 通過管道,可以將命令的輸出結(jié)果傳遞給另一個命令進(jìn)行進(jìn)一步處理,從而實現(xiàn)數(shù)據(jù)的篩選、轉(zhuǎn)換和匯總。
#1.列出當(dāng)前目錄的文件,并過濾出帶有后綴txt的文件
ls -l | grep "txt"