成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Linux下Bashshell的功能是什么

這篇文章主要講解了“Linux下Bash shell的功能是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux下Bash shell的功能是什么”吧!

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供黔西南州網(wǎng)站建設(shè)、黔西南州做網(wǎng)站、黔西南州網(wǎng)站設(shè)計(jì)、黔西南州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、黔西南州企業(yè)網(wǎng)站模板建站服務(wù),10年黔西南州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

認(rèn)識(shí) BASH 這個(gè) Shell

Linux下Bash shell的功能是什么

Bash shell 的功能

  • 命令編修能力 (history):

    只要在命令行按“上下鍵”就可以找到前/后一個(gè)輸入的指令,這么多的指令記錄在哪里呢?在你的主文件夾內(nèi)的 .bash_history 啦。

  • 命令與文件補(bǔ)全功能: ([tab] 按鍵的好處)

  • 命令別名設(shè)置功能: (alias)

    alias lm='ls -al'

  • 程序化腳本: (shell scripts)

查詢指令是否為 Bash shell 的內(nèi)置命令: type

范例一:查詢一下 ls 這個(gè)指令是否為 bash 內(nèi)置?

[dmtsai@study ~]$ type ls
Shell 的變量功能

變量的取用與設(shè)置:echo, 變量設(shè)置規(guī)則, unset

echo $PATH

設(shè)置變量:

[dmtsai@study ~]$ echo ${myname}
<==這里并沒(méi)有任何數(shù)據(jù)~因?yàn)檫@個(gè)變量尚未被設(shè)置!是空的!
[dmtsai@study ~]$ myname=VBird
[dmtsai@study ~]$ echo ${myname}
VBird <==出現(xiàn)了!因?yàn)檫@個(gè)變量已經(jīng)被設(shè)置了
  • 變量與變量?jī)?nèi)容以一個(gè)等號(hào)“=”來(lái)鏈接,如下所示: “myname=VBird”

  • 等號(hào)兩邊不能直接接空白字符,如下所示為錯(cuò)誤: “myname = VBird”或“myname=VBird Tsai”

  • 變量名稱只能是英文字母與數(shù)字,但是開(kāi)頭字符不能是數(shù)字,如下為錯(cuò)誤: “2myname=VBird”

  • 若該變量為擴(kuò)增變量?jī)?nèi)容時(shí),則可用 "$變量名稱">

  • 若該變量需要在其他子程序執(zhí)行,則需要以 export 來(lái)使變量變成環(huán)境變量: “export PATH”

  • 取消變量的方法為使用 unset :“unset 變量名稱”例如取消 myname 的設(shè)置: “unset myname”

:如何進(jìn)入到您目前核心的模塊目錄?

[dmtsai@study ~]$ cd /lib/modules/$(uname -r)/kernel # 以此例較佳!

其實(shí)上面的指令可以說(shuō)是作了兩次動(dòng)作,亦即是:

  1. 先進(jìn)行反單引號(hào)內(nèi)的動(dòng)作“uname -r”并得到核心版本為 3.10.0-229.el7.x86_64

  2. 將上述的結(jié)果帶入原指令,故得指令為:“cd /lib/modules/3.10.0-229.el7.x86_64/kernel/”

環(huán)境變量的功能

用 env 觀察環(huán)境變量與常見(jiàn)環(huán)境變量說(shuō)明

用 set 觀察所有變量 (含環(huán)境變量與自訂變量)

影響顯示結(jié)果的語(yǔ)系變量 (locale)

變量鍵盤(pán)讀取、陣列與宣告: read, array, declare
  • read

范例一:讓使用者由鍵盤(pán)輸入一內(nèi)容,將該內(nèi)容變成名為 atest 的變量
[dmtsai@study ~]$ read atest
This is a test <==此時(shí)光標(biāo)會(huì)等待你輸入!請(qǐng)輸入左側(cè)文字看看
[dmtsai@study ~]$ echo ${atest}
This is a test <==你剛剛輸入的數(shù)據(jù)已經(jīng)變成一個(gè)變量?jī)?nèi)容!
  • declare / typeset

范例一:讓變量 sum 進(jìn)行 100+300+50 的加總結(jié)果

declare 或 typeset 是一樣的功能,就是在“宣告變量的類型”。如果使用 declare 后面并沒(méi)有接任何參數(shù),那么 bash 就會(huì)主動(dòng)的將所有的變量名稱與內(nèi)容通通叫出來(lái),就好像使用 set 一樣啦!

[dmtsai@study ~]$ sum=100+300+50
[dmtsai@study ~]$ echo ${sum}
100+300+50 <==咦!怎么沒(méi)有幫我計(jì)算加總?因?yàn)檫@是文字體態(tài)的變量屬性啊!
[dmtsai@study ~]$ declare -i sum=100+300+50
[dmtsai@study ~]$ echo ${sum}
450
  • 陣列 (array) 變量類型

范例:設(shè)置上面提到的 var[1] ~ var[3] 的變量。

[dmtsai@study ~]$ var[1]="small min"
[dmtsai@study ~]$ var[2]="big min"
[dmtsai@study ~]$ var[3]="nice min"
[dmtsai@study ~]$ echo "${var[1]}, ${var[2]}, ${var[3]}"
small min, big min, nice min

與文件系統(tǒng)及程序的限制關(guān)系: ulimit

變量?jī)?nèi)容的刪除、取代與替換

范例一:先讓小寫(xiě)的 path 自訂變量設(shè)置的與 PATH 內(nèi)容相同

[dmtsai@study ~]$ path=${PATH}
[dmtsai@study ~]$ echo ${path}
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

范例二:假設(shè)我不喜歡 local/bin,所以要將前 1 個(gè)目錄刪除掉,如何顯示?

[dmtsai@study ~]$ echo ${path#/*local/bin:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

范例六:將 path 的變量?jī)?nèi)容內(nèi)的 sbin 取代成大寫(xiě) SBIN:

[dmtsai@study ~]$ echo ${path/sbin/SBIN}
/usr/local/bin:/usr/bin:/usr/local/SBIN:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

#這個(gè)部分就容易理解的多了!關(guān)鍵字在于那兩個(gè)斜線,兩斜線中間的是舊字串 #后面的是新字串,所以結(jié)果就會(huì)出現(xiàn)如上述的特殊字體部分啰!

[dmtsai@study ~]$ echo ${path//sbin/SBIN}
/usr/local/bin:/usr/bin:/usr/local/SBIN:/usr/SBIN:/home/dmtsai/.local/bin:/home/dmtsai/bin

#如果是兩條斜線,那么就變成所有符合的內(nèi)容都會(huì)被取代喔!

我們將這部份作個(gè)總結(jié)說(shuō)明一下:

學(xué)習(xí) Shell Scripts

撰寫(xiě)第一支 script
[dmtsai@study ~]$ mkdir bin; cd bin
[dmtsai@study bin]$ vim hello.sh
#!/bin/bash

# Program:

# This program shows "Hello World!" in your screen.

# History:

# 2015/07/16 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World! \a \n"
exit 0
簡(jiǎn)單范例
[dmtsai@study bin]$ vim create_3_filename.sh
#!/bin/bash
# Program:
# Program creates three files, which named by user's input and date command.
# History:
# 2015/07/16 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1\. 讓使用者輸入文件名稱,并取得 fileuser 這個(gè)變量;
echo -e "I will use 'touch' command to create 3 files." # 純粹顯示信息
read -p "Please input your filename: " fileuser # 提示使用者輸入
# 2\. 為了避免使用者隨意按 Enter ,利用[變量功能](../Text/index.html#variable_other_re)分析文件名是否有設(shè)置?
filename=${fileuser:-"filename"} # 開(kāi)始判斷有否配置文件名
# 3\. 開(kāi)始利用 date 指令來(lái)取得所需要的文件名了;
date1=$(date --date='2 days ago' +%Y%m%d) # 前兩天的日期
date2=$(date --date='1 days ago' +%Y%m%d) # 前一天的日期
date3=$(date +%Y%m%d) # 今天的日期
file1=${filename}${date1} # 下面三行在配置文件名
file2=${filename}${date2}
file3=${filename}${date3}
# 4\. 將文件名創(chuàng)建吧!
touch "${file1}" # 下面三行在創(chuàng)建文件
touch "${file2}"
touch "${file3}"

$(command) 取得變量

touch 創(chuàng)建文件

數(shù)值運(yùn)算:簡(jiǎn)單的加減乘除

var=$((運(yùn)算內(nèi)容))

[dmtsai@study bin]$ echo $(( 13 % 3 ))
1

利用 source 來(lái)執(zhí)行腳本:在父程序中執(zhí)行 如果你使用 source 來(lái)執(zhí)行指令那就不一樣了!同樣的腳本我們來(lái)執(zhí)行看看:

[dmtsai@study bin]$ source showname.sh
Please input your first name: VBird
Please input your last name: Tsai
Your full name is: VBird Tsai
[dmtsai@study bin]$ echo ${firstname} ${lastname}
VBird Tsai <==嘿嘿!有數(shù)據(jù)產(chǎn)生喔!
善用判斷式

利用 test 指令的測(cè)試功能

Linux下Bash shell的功能是什么

Linux下Bash shell的功能是什么

[dmtsai@study bin]$ vim file_perm.sh
#!/bin/bash

# Program:

# User input a filename, program will check the flowing:

# 1.) exist? 2.) file/directory? 3.) file permissions

# History:

# 2015/07/16 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# 1\. 讓使用者輸入文件名,并且判斷使用者是否真的有輸入字串?

echo -e "Please input a filename, I will check the filename's type and permission. \n\n"
read -p "Input a filename : ">除了我們很喜歡使用的 test 之外,其實(shí),我們還可以利用判斷符號(hào)“ [ ] ”(就是中括號(hào)啦) 來(lái) 進(jìn)行數(shù)據(jù)的判斷呢! 舉例來(lái)說(shuō),如果我想要知道 ${HOME} 這個(gè)變量是否為空的,可以這樣 做:[dmtsai@study ~]$ [ -z "${HOME}" ] ; echo $? 使用中括號(hào)必須要特別注意,因?yàn)橹欣ㄌ?hào)用在很多地方,包括萬(wàn)用字符與正則表達(dá)式等等, 所以如果要在 bash 的語(yǔ)法當(dāng)中使用中括號(hào)作為 shell 的判斷式時(shí),必須要注意中括號(hào)的兩端 需要有空白字符來(lái)分隔喔!Shell script 的默認(rèn)變量($0, $1...)舉例來(lái)說(shuō),如果你想要重新啟動(dòng)系統(tǒng)的網(wǎng)絡(luò),可以這樣做:[dmtsai@study ~]$ file /etc/init.d/network
/etc/init.d/network: Bourne-Again shell script, ASCII text executable

# 使用 file 來(lái)查詢后,系統(tǒng)告知這個(gè)文件是個(gè) bash 的可執(zhí)行 script 喔!

[dmtsai@study ~]$ /etc/init.d/network restart script 是怎么達(dá)成這個(gè)功能的呢?其實(shí) script 針對(duì)參數(shù)已經(jīng)有設(shè)置好一些變量名稱了!對(duì)應(yīng)如下:/path/to/scriptname opt1 opt2 opt3 opt4
$0 $1 $2 $3 $4 執(zhí)行的腳本文件名為 $0 這個(gè)變量,第一個(gè)接的參數(shù)就是 $1 啊~ 所以,只要我們?cè)?nbsp;script 里面善用 $1 的話,就可以很簡(jiǎn)單的立即下達(dá)某些指令功能了!除了這些數(shù)字的變量之外, 我們還有一些較為特殊的變量可以在 script 內(nèi)使用來(lái)調(diào)用這些參數(shù)喔! $# :代表后接的參數(shù)“個(gè)數(shù)”,以上表為例這里顯示為“ 4 ”; $@ :代表“ "$1" "$2" "$3" "$4" ”之意,每個(gè)變量是獨(dú)立的(用雙引號(hào)括起來(lái)); $* :代表“ "$1c$2c$3c$4" ”,其中 c 為分隔字符,默認(rèn)為空白鍵, 所以本例中代表“ "$1 $2 $3 $4" ”之意。shift:造成參數(shù)變量號(hào)碼偏移shift 會(huì)移動(dòng)變量,而且 shift 后面可以接數(shù)字,代表拿掉最前 面的幾個(gè)參數(shù)的意思。條件判斷式單層、簡(jiǎn)單條件判斷式如果你只有一個(gè)判斷式要進(jìn)行,那么我們可以簡(jiǎn)單的這樣看:if [ 條件判斷式 ]; then
當(dāng)條件判斷式成立時(shí),可以進(jìn)行的指令工作內(nèi)容;
fi <==將 if 反過(guò)來(lái)寫(xiě),就成為 fi 啦!結(jié)束 if 之意! 多重、復(fù)雜條件判斷式# 多個(gè)條件判斷 (if ... elif ... elif ... else) 分多種不同情況執(zhí)行

if [ 條件判斷式一 ]; then
當(dāng)條件判斷式一成立時(shí),可以進(jìn)行的指令工作內(nèi)容;
elif [ 條件判斷式二 ]; then
當(dāng)條件判斷式二成立時(shí),可以進(jìn)行的指令工作內(nèi)容;
else
當(dāng)條件判斷式一與二均不成立時(shí),可以進(jìn)行的指令工作內(nèi)容;
fi 利用 case ..... esac 判斷[dmtsai@study bin]$ vim show123.sh
#!/bin/bash

# Program:

# This script only accepts the flowing parameter: one, two or three.

# History:

# 2015/07/17 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "This program will print your selection !"

# read -p "Input your choice: " choice # 暫時(shí)取消,可以替換!

# case ${choice} in # 暫時(shí)取消,可以替換!

case ${1} in # 現(xiàn)在使用,可以用上面兩行替換!
"one")
echo "Your choice is ONE"
;;
"two")
echo "Your choice is TWO"
;;
"three")
echo "Your choice is THREE"
;;
*)
echo "Usage ${0} {one|two|three}"
;;
esac 利用 function 功能[dmtsai@study bin]$ vim show123-2.sh
#!/bin/bash

# Program:

# Use function to repeat information.

# History:

# 2015/07/17 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function printit(){
echo -n "Your choice is " # 加上 -n 可以不斷行繼續(xù)在同一行顯示
}
echo "This program will print your selection !"
case ${1} in
"one")
**printit**; echo ${1} | tr 'a-z' 'A-Z' # 將參數(shù)做大小寫(xiě)轉(zhuǎn)換!
;;
"two")
**printit**; echo ${1} | tr 'a-z' 'A-Z'
;;
"three")
**printit**; echo ${1} | tr 'a-z' 'A-Z'
;;
*)
echo "Usage ${0} {one|two|three}"
;;
esac 循環(huán) (loop)[dmtsai@study bin]$ vim yes_to_stop.sh
#!/bin/bash

# Program:

# Repeat question until user input correct answer.

# History:

# 2015/07/17 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while [ "${yn}" != "yes" -a "${yn}" != "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer." for...do...done (固定循環(huán))[dmtsai@study bin]$ vim show_animal.sh
#!/bin/bash

# Program:

# Using for .... loop to print 3 animals

# History:

# 2015/07/17 VBird First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for animal in dog cat elephant
do
echo "There are ${animal}s.... "
done 我們可使用 sh -x script.sh 來(lái)進(jìn)行程序的 debug
說(shuō)明
${變量#關(guān)鍵 字} 
${變量##關(guān)鍵字}若變量?jī)?nèi)容從頭開(kāi)始的數(shù)據(jù)符合“關(guān)鍵字”,則將符合的最短數(shù)據(jù)刪除若變量?jī)?nèi)容從頭開(kāi)始的數(shù)據(jù)符合“關(guān)鍵字”,則將符合的最長(zhǎng)數(shù)據(jù)刪除
${變量%關(guān)鍵 字} 
${變量%%關(guān)鍵字}若變量?jī)?nèi)容從尾向前的數(shù)據(jù)符合“關(guān)鍵字”,則將符合的最短數(shù)據(jù)刪除 若變量?jī)?nèi)容從尾向前的數(shù)據(jù)符合“關(guān)鍵字”,則將符合的最長(zhǎng)數(shù)據(jù)刪除
${變量/舊字串/新字串} 
${變量//舊字串/新字串}若變量?jī)?nèi)容符合“舊字串”則“第一個(gè)舊字串會(huì)被新字串取代” 若變量?jī)?nèi)容符合“舊字串”則“全部的舊字串會(huì)被新字串取代”
Bash Shell 的操作環(huán)境:

bash 的環(huán)境配置文件

Linux下Bash shell的功能是什么

source :讀入環(huán)境配置文件的指令

萬(wàn)用字符與特殊符號(hào)

符號(hào)意義
*代表“ 0 個(gè)到無(wú)窮多個(gè)”任意字符
?代表“一定有一個(gè)”任意字符
[ ]同樣代表“一定有一個(gè)在括號(hào)內(nèi)”的字符(非任意字符)。例如 [abcd] 代表“一定有一個(gè)字符, 可能是 a, b, c, d 這四個(gè)任何一個(gè)
[ -]若有減號(hào)在中括號(hào)內(nèi)時(shí),代表“在編碼順序內(nèi)的所有字符”。例如 [0-9] 代表 0 到 9 之間的所有數(shù)字,因?yàn)閿?shù)字的語(yǔ)系編碼是連續(xù)的!
[^]若中括號(hào)內(nèi)的第一個(gè)字符為指數(shù)符號(hào) (^) ,那表示“反向選擇”,例如 [^abc] 代表一定有一個(gè)字符,只要是非 a, b, c 的其他字符就接受的意思。

除了萬(wàn)用字符之外,bash 環(huán)境中的特殊符號(hào)有哪些呢?下面我們先匯整一下:

Snipaste_2019-04-24_13-00-38

數(shù)據(jù)流重導(dǎo)向
  1. 標(biāo)準(zhǔn)輸入  (stdin) :代碼為 0 ,使用 < 或 << ;

  2. 標(biāo)準(zhǔn)輸出 ?。╯tdout):代碼為 1 ,使用 > 或 >> ;

  3. 標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr):代碼為 2 ,使用 2> 或 2>> ; 為了理解 stdout 與 stderr ,我們先來(lái)進(jìn)行一個(gè)范例的練習(xí): 范例一:觀察你的系統(tǒng)根目錄 (/) 下各目錄的文件名、權(quán)限與屬性,并記錄下來(lái)

[dmtsai@study ~]$ ll / ==此時(shí)屏幕會(huì)顯示出文件名信息
[dmtsai@study ~]$ ll / > ~/rootfile ==屏幕并無(wú)任何信息
[dmtsai@study ~]$ ll ~/rootfile ==有個(gè)新文件被創(chuàng)建了!
-rw-rw-r--. 1 dmtsai dmtsai 1078 Jul 9 18:51 /home/dmtsai/rootfile

1> :以覆蓋的方法將“正確的數(shù)據(jù)”輸出到指定的文件或設(shè)備上; 1>>:以累加的方法將“正確的數(shù)據(jù)”輸出到指定的文件或設(shè)備上; 2> :以覆蓋的方法將“錯(cuò)誤的數(shù)據(jù)”輸出到指定的文件或設(shè)備上; 2>>:以累加的方法將“錯(cuò)誤的數(shù)據(jù)”輸出到指定的文件或設(shè)備上;

范例五:將指令的數(shù)據(jù)全部寫(xiě)入名為 list 的文件中

[dmtsai@study ~]$ find /home -name .bashrc > list 2> list  ==錯(cuò)誤
[dmtsai@study ~]$ find /home -name .bashrc > list 2>&1  ==正確
[dmtsai@study ~]$ find /home -name .bashrc &> list  ==正確

standard input : < 與 << 了解了 stderr 與 stdout 后,那么那個(gè) < 又是什么呀?呵呵!以最簡(jiǎn)單的說(shuō)法來(lái)說(shuō), 那就 是“將原本需要由鍵盤(pán)輸入的數(shù)據(jù),改由文件內(nèi)容來(lái)取代”的意思。 我們先由下面的 cat 指令操 作來(lái)了解一下什么叫做“鍵盤(pán)輸入”吧!

范例六:利用 cat 指令來(lái)創(chuàng)建一個(gè)文件的簡(jiǎn)單流程

[dmtsai@study ~]$ cat < catfile
testing
cat file test
< ==這里按下 [ctrl]+d 來(lái)離開(kāi)
[dmtsai@study ~]$ cat catfile
testing
cat file test

命令執(zhí)行的判斷依據(jù): ; , &&, ||

  • cmd ; cmd (不考慮指令相關(guān)性的連續(xù)指令下達(dá))

在某些時(shí)候,我們希望可以一次執(zhí)行多個(gè)指令,例如在關(guān)機(jī)的時(shí)候我希望可以先執(zhí)行兩次sync 同步化寫(xiě)入磁盤(pán)后才 shutdown 計(jì)算機(jī),那么可以怎么作呢?這樣做呀:

[root@study ~]# sync; sync; shutdown -h now

在某些時(shí)候,我們希望可以一次執(zhí)行多個(gè)指令,例如在關(guān)機(jī)的時(shí)候我希望可以先執(zhí)行兩次 sync 同步化寫(xiě)入磁盤(pán)后才 shutdown 計(jì)算機(jī),那么可以怎么作呢?這樣做呀: [root@study ~]# sync; sync; shutdown -h now

$? (指令回傳值) 與 && 或 ||

cmd1&&cmd2

若 cmd1 執(zhí)行完畢且正確執(zhí)行($?=0),則開(kāi)始執(zhí)行 cmd2。 2. 若 cmd1 執(zhí)行完畢且為錯(cuò)誤 ($?≠0),則 cmd2 不執(zhí)行。

cmd1 ||cmd2

若 cmd1 執(zhí)行完畢且正確執(zhí)行($?=0),則 cmd2 不執(zhí)行。 2. 若 cmd1 執(zhí) 行完畢且為錯(cuò)誤 ($?≠0),則開(kāi)始執(zhí)行 cmd2。

范例一:使用 ls 查閱目錄 /tmp/abc 是否存在,若存在則用 touch 創(chuàng)建 /tmp/abc/hehe

[dmtsai@study ~]$ ls /tmp/abc && touch /tmp/abc/hehe
ls: cannot access /tmp/abc: No such file or directory

#ls 很干脆的說(shuō)明找不到該目錄,但并沒(méi)有 touch 的錯(cuò)誤,表示 touch 并沒(méi)有執(zhí)行

管線命令 (pipe)

擷取命令: cut, grep

范例一:將 PATH 變量取出,我要找出第五個(gè)路徑。

[dmtsai@study ~]$ echo ${PATH}
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
[dmtsai@study ~]$ echo ${PATH} | cut -d ':' -f 5
#如同上面的數(shù)字顯示,我們是以“ : ”作為分隔,因此會(huì)出現(xiàn) /home/dmtsai/.local/bin
#那么如果想要列出第 3 與第 5 呢?,就是這樣:
[dmtsai@study ~]$ echo ${PATH} | cut -d ':' -f 3,5
范例一:將 last 當(dāng)中,有出現(xiàn) root 的那一行就取出來(lái);
[dmtsai@study ~]$ last|grep 'root'
范例二:與范例一相反,只要沒(méi)有 root 的就取出!
[dmtsai@study ~]$ last | grep -v 'root'

排序命令: sort, wc, uniq

范例一:個(gè)人帳號(hào)都記錄在 /etc/passwd 下,請(qǐng)將帳號(hào)進(jìn)行排序。
[dmtsai@study ~]$ cat /etc/passwd | sort

范例一:使用 last 將帳號(hào)列出,僅取出帳號(hào)欄,進(jìn)行排序后僅取出一位;
[dmtsai@study ~]$ last | cut -d ' ' -f1 | sort| uniq

范例一:那個(gè) /etc/man_db.conf 里面到底有多少相關(guān)字、行、字符數(shù)?
[dmtsai@study ~]$ cat /etc/man_db.conf | wc
131 723 5171

#輸出的三個(gè)數(shù)字中,分別代表: “行、字?jǐn)?shù)、字符數(shù)”

雙向重導(dǎo)向: tee

[dmtsai@study ~]$ last | tee last.list | cut -d " " -f1

#這個(gè)范例可以讓我們將 last 的輸出存一份到 last.list 文件中;

字符轉(zhuǎn)換命令: tr, col, join, paste, expand

tr 可以用來(lái)刪除一段訊息當(dāng)中的文字,或者是進(jìn)行文字訊息的替換!

范例一:將 last 輸出的訊息中,所有的小寫(xiě)變成大寫(xiě)字符:

[dmtsai@study ~]$ last | tr '[a-z]' '[A-Z]'

#事實(shí)上,沒(méi)有加上單引號(hào)也是可以執(zhí)行的,如:“ last | tr [a-z] [A-Z] ”

join 看字面上的意義 (加入/參加) 就可以知道,他是在處理兩個(gè)文件之間的數(shù)據(jù), 而且, 主要是在處理“兩個(gè)文件當(dāng)中,有 "相同數(shù)據(jù)" 的那一行,才將他加在一起”的意思。

這個(gè) paste 就要比 join 簡(jiǎn)單多了!相對(duì)于 join 必須要比對(duì)兩個(gè)文件的數(shù)據(jù)相關(guān)性, paste 就 直接“將兩行貼在一起,且中間以 [tab] 鍵隔開(kāi)”

expand 這玩意兒就是在將 [tab] 按鍵轉(zhuǎn)成空白鍵啦。

分區(qū)命令: split

范例一:我的 /etc/services 有六百多K,若想要分成 300K 一個(gè)文件時(shí)?

[dmtsai@study ~]$ cd / | split -b 300k /etc/services services
[dmtsai@study tmp]$ ll -k services*
-rw-rw-r--. 1 dmtsai dmtsai 307200 Jul 9 22:52 servicesaa
-rw-rw-r--. 1 dmtsai dmtsai 307200 Jul 9 22:52 servicesab
-rw-rw-r--. 1 dmtsai dmtsai 55893 Jul 9 22:52 servicesac

參數(shù)代換: xargs

關(guān)于減號(hào) - 的用途

管線命令在 bash 的連續(xù)的處理程序中是相當(dāng)重要的!另外,在 log file 的分析當(dāng)中也是相當(dāng) 重要的一環(huán), 所以請(qǐng)?zhí)貏e留意!另外,在管線命令當(dāng)中,常常會(huì)使用到前一個(gè)指令的 stdout 作為這次的 stdin , 某些指令需要用到文件名稱 (例如 tar) 來(lái)進(jìn)行處理時(shí),該 stdin 與 stdout 可以利用減號(hào) "-" 來(lái)替代, 舉例來(lái)說(shuō):

[root@study ~]# mkdir /tmp/homeback
[root@study ~]# tar -cvf - /home | tar -xvf - -C /tmp/homeback

上面這個(gè)例子是說(shuō):“我將 /home 里面的文件給他打包,但打包的數(shù)據(jù)不是紀(jì)錄到文件,而是 傳送到 stdout; 經(jīng)過(guò)管線后,將 tar -cvf - /home 傳送給后面的 tar -xvf - ”。后面的這個(gè) - 則 是取用前一個(gè)指令的 stdout, 因此,我們就不需要使用 filename 了!這是很常見(jiàn)的例子喔! 注意注意!

感謝各位的閱讀,以上就是“Linux下Bash shell的功能是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Linux下Bash shell的功能是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站欄目:Linux下Bashshell的功能是什么
路徑分享:http://jinyejixie.com/article4/podsoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、App開(kāi)發(fā)、App設(shè)計(jì)、用戶體驗(yàn)、品牌網(wǎng)站建設(shè)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)