若想知道您的操作系統(tǒng)支持哪些 Shell 類型,可在終端中輸入命令:
$ cat /etc/shells
顯示當(dāng)前目錄名 pwd
我們可以使用ls -l命令來(lái)羅列出所有文件和目錄
使用cd命令移動(dòng)至目標(biāo)目錄。
---------------------------------------------------------
Bash 文件系統(tǒng)及權(quán)限
在正式進(jìn)入 Bash 教程之前,我們需要來(lái)了解一下 Linux 的文件系統(tǒng)及文件權(quán)限。
文件系統(tǒng)
Linux 文件系統(tǒng)中的所有文件都可以被稱為目錄,這些文件的類別可劃分為以下三種:
普通文件(數(shù)據(jù)、文本、圖像、程序指令)
特殊文件(用于訪問硬件設(shè)備)
目錄(包含普通文件和特殊文件的文件夾)
我們可以使用ls -l命令來(lái)羅列出所有文件和目錄
上圖共有七列,其意如下:
代表文件類型及權(quán)限,每個(gè)文件均以類型開頭,接著指定訪問權(quán)限。以特定字符表示:
常規(guī)文件(-)
特殊檔案(c)
命名管道(p)
塊設(shè)備(b)
套接字(s)
目錄(d)
鏈接(l)
代表存儲(chǔ)塊的數(shù)量。
代表文件的所有者或具有管理權(quán)限的超級(jí)用戶。
代表所有者、超級(jí)用戶組
代表文件大小
代表文件的最后修改日期(具體到分鐘)
代表文件或目錄的名稱
文件權(quán)限
Linux 通過(guò)以下兩個(gè)授權(quán)屬性來(lái)保護(hù)其文件系統(tǒng):
權(quán)限
閱讀權(quán)限(r),該權(quán)限允許查看文件內(nèi)容。
寫入權(quán)限(w),該權(quán)限允許修改文件內(nèi)容。
執(zhí)行權(quán)限(x),該權(quán)限允許運(yùn)行編程文件或腳本。
在調(diào)用權(quán)限的情況下會(huì)提供(-)
所有權(quán)
所有者是創(chuàng)建文件的超級(jí)用戶,具有訪問與文件關(guān)聯(lián)的任何權(quán)限。
用戶組是超級(jí)用戶創(chuàng)建的一或多用戶,與超級(jí)用戶一樣具有訪問與文件關(guān)聯(lián)的任何權(quán)限。
其他用戶是排除在超級(jí)用戶和用戶組之外的用戶,只具有前兩者創(chuàng)建或擁有的任何文件或目錄關(guān)聯(lián)的權(quán)限。
舉個(gè)例子
在上圖紅色框體內(nèi)的第一列共有十個(gè)字符,我們先排除第一個(gè)字符(文件類型),往后的九個(gè)字符均表示權(quán)限。 第2-4個(gè)字符(rw-)指定了超級(jí)用戶的讀取和寫入權(quán)限。 第5-7個(gè)字符(r--)指定了用戶組的讀取權(quán)限。 第8-10個(gè)字符(r--)指定了其他用戶的讀取權(quán)限,但在這里,讀寫均被拒絕。
更改權(quán)限
使用chmod命令可以更改用不同用戶類型的文件權(quán)限。添加或刪除任何用戶類型的任何權(quán)限的基本形式:
chmod [class][operator][permission] file_namechmod [ugoa][+or-][rwx] file_name
class由u(超級(jí)用戶),g(用戶組),o(其他用戶),a(所有類型)表示。
operator(+或-)表示添加或刪除權(quán)限。
permission由指示符r(讀?。?w(修改),x(運(yùn)行)表示。
為所有類型添加運(yùn)行權(quán)限
以上內(nèi)容是-------------------------------------------
----------------
入門指南
打開終端,使用cd命令移動(dòng)至目標(biāo)目錄。
使用touch命令創(chuàng)建一個(gè)空文件命名為bash_script.sh作為shell腳本的容器。
查看bash_script.sh文件的所有權(quán)限屬性,在下圖中可以看到該文件沒有運(yùn)行權(quán)限。
使用任意編輯器打開bash_script.sh,此處以gedit作為例子:
$ gedit bash_script.sh
編寫腳本代碼,打印Hello World!。
#!/bin/bash# This is the basic bash scriptecho " Hello World!"
第一行是#!(SheBang)指定Ball Shell的路徑
第二行是注釋行
第三行是echo命令執(zhí)行打印輸出內(nèi)容
將運(yùn)行權(quán)限添加到文件。
$ chmod +x bash_script.sh
使用./執(zhí)行腳本,打印輸出。
$ ./bash_script.shHello World!
以上內(nèi)容是否Bash 腳本
在編程中,腳本是用于控制軟件應(yīng)用程序的一組命令,這些命令在被調(diào)用時(shí)自動(dòng)執(zhí)行任務(wù)。
Bash腳本
Bash Shell腳本是用Bash編寫的計(jì)算機(jī)程序,它是一個(gè)包含了自定義數(shù)量命令的純文本文件,用于在Linux系統(tǒng)上自動(dòng)循環(huán)執(zhí)行重復(fù)性任務(wù)。
Bash腳本的創(chuàng)建
使用cd命令進(jìn)入將要保存腳本的目錄。使用文本編輯器(如gedit/vi/vim命令),并鍵入shell命令
使用touch命令創(chuàng)建腳本
touch file_name
在文本編輯器中打開腳本,鍵入以下命令(編輯器命令可根據(jù)個(gè)人更改)
gedit file_name.sh
腳本的第一行一般如下:
#!/bin/bashecho "Hello World!"注:
#!(SheBang)是一個(gè)約定的標(biāo)記(解釋器指令),它告訴系統(tǒng)這個(gè)腳本使用哪一種Shell
echo是Bash中的內(nèi)置命令,用于通過(guò)傳遞參數(shù)來(lái)顯示標(biāo)準(zhǔn)輸出,將文本或字符串打印到屏幕上。
Bash腳本的運(yùn)行
作為可執(zhí)行程序
chmod +x ./file_name.sh./file_name.sh注:
第一行給予腳本執(zhí)行權(quán)限
第二行執(zhí)行腳本
作為解釋器參數(shù)
/bin/sh file_name.sh注:
該方式不需要在第一行指定解釋器信息
以上內(nèi)容是否Bash 變量
變量的定義
變量是一個(gè)容器,用于臨時(shí)存儲(chǔ)數(shù)據(jù)(整數(shù)、浮點(diǎn)數(shù)、字符串等類任意類型的數(shù)據(jù))
變量名可包含字母,數(shù)字,下劃線,并且只能以字母和下劃線開頭。
Bash 變量聲明
語(yǔ)法:
Variable_name=value
Bash 變量的定義規(guī)則:
變量名區(qū)分大小寫,a和A為兩個(gè)不同的變量。
變量名可以使用大小寫字母混編的形式進(jìn)行編寫。
變量名與值之間的=兩側(cè)都不能有空格。
在讀取或打印變量時(shí),需使用$+變量名。
變量可以寫在Bash腳本中的任何地方,在運(yùn)行時(shí),Bash會(huì)自動(dòng)將其替換為變量值。
Bash 數(shù)據(jù)類型
在 Bash 中聲明變量后賦值,它會(huì)自動(dòng)判斷數(shù)據(jù)類型,不必在聲明的同時(shí)去定義變量的數(shù)據(jù)類型。 如果您將數(shù)字值賦值給變量,它將會(huì)自動(dòng)轉(zhuǎn)換為整數(shù)工作;如果您將字符串賦值給該變量,那么它將會(huì)轉(zhuǎn)換為字符串類型。
Bash 變量類型
Bash 變量有兩種類型:
1. 系統(tǒng)定義的變量 由 Linux 操作系統(tǒng)本身創(chuàng)建和維護(hù)的預(yù)定義變量。它們的命名標(biāo)準(zhǔn)通常是以大寫字母對(duì)變量進(jìn)行命名。
BASH 表示 Shell 名稱,示例:
BASH=/user/bin/bash
BASH_VERSION 指定 Bash 持有的 shell 版本,示例:
BASH_VERSION=4.2.46(2)
COLUMNS 指定編號(hào),屏幕的列數(shù),示例:
COLUMNS=80
HOME 為用戶指定主目錄,示例:
HOME=/home/W3Cschool
LOGNAME 指定日志記錄用戶名,示例:
LOGNAME=W3Cschool
若要了解更多的系統(tǒng)定義變量,您可以在終端輸入命令set,env,printenv以獲取這些變量的列表。
2. 用戶定義的變量 由用戶自行創(chuàng)建和維護(hù)的變量。這些類型的變量多數(shù)以小寫字母參與命名,但不具有大小寫強(qiáng)制性規(guī)定。
#!/bin/bashsay=Hello user
Comment=welcome to W3Cschoolecho "$say,$Comment!"
執(zhí)行結(jié)果:
Hello user,welcome to W3Cschool!
Bash 變量使用
我們通常對(duì) Bash 中的變量執(zhí)行兩個(gè)操作:
為變量賦值
comment=Welcome to W3Cschool
讀取變量的值
comment=Welcome to W3Cschool
echo $comment
注意:如果通過(guò)單引號(hào)將變量或字符串進(jìn)行任意拼接組合,那么將無(wú)法成功讀取它們。
命令行參數(shù)
命令行參數(shù)通過(guò)將數(shù)據(jù)輸入傳遞給代碼功能塊,使腳本更具動(dòng)態(tài)性,如下示例:
./bash_script.sh parameter1 parameter2...
注:腳本名稱與所有傳遞的參數(shù)之間不能存在空格,本處使用空格便于閱讀。
如何使用命令行參數(shù)
在 Bash 中,命令行參數(shù)與以下默認(rèn)參數(shù)或特殊變量的引用一同使用。
$0 ——指定要調(diào)用的腳本名稱。
$1-9 ——存儲(chǔ)前9個(gè)自變量的名稱,或可用作自變量的位置。
$# ——指定傳遞給腳本的參數(shù)總數(shù)。
$* ——將所有命令行參數(shù)連接在一起來(lái)存儲(chǔ)它們。
$@ ——將參數(shù)列表存儲(chǔ)為數(shù)組。
$? ——指定當(dāng)前腳本的進(jìn)程 ID 。
$$ ——指定最后一個(gè)命令或最近執(zhí)行過(guò)程的推出狀態(tài)。
$! ——顯示最后一個(gè)后臺(tái)作業(yè)的 ID 。
傳遞命令行參數(shù)的兩種方法:
使用位置編號(hào) 使用默認(rèn)參數(shù)($1-9)來(lái)訪問命令行參數(shù)。
#!/bin/bashecho $0 '> echo $0'echo $1 $2 $3 $4 $5 $6 $7 $8 $9'> echo $1 $2 $3 $4 $5 $6 $7 $8 $9'
執(zhí)行結(jié)果:
$ chmod +x bash_script.sh
$ ./bash_script.sh Here is the W3Cschool
./bash_script.sh > echo $0Here is the W3Cschool >echo $1 $2 $3 $4 $5 $6 $7 $8 $9
使用數(shù)組 將參數(shù)作為數(shù)組傳遞,按照給定的算法來(lái)應(yīng)用此方法。
聲明變量名,將值分配為$@。
variable_name=("$@"```)
通過(guò)指定數(shù)組索引來(lái)顯示參數(shù)的值。
${variable_name[i]}
保存腳本,并通過(guò)傳遞參數(shù)來(lái)執(zhí)行腳本。
#!/bin/bashparameter=("$@")echo ${parameter[0]} ${parameter[1]} ${parameter[2]}
命令替換
在 Bash 中,命令替換允許命令的輸出替換命令本身。 命令替換是指Bash執(zhí)行的擴(kuò)展,它獲取Bash命令的輸出,存儲(chǔ)在一個(gè)變量中并顯示回顯。 命令替換在腳本和變量分配方面增強(qiáng)了數(shù)據(jù)的靈活性。
語(yǔ)法:
將命令替換為變量(命令替換的經(jīng)典形式)是使用反引號(hào),如下示例:
variable_name=`command_name`variable_name=`command_name [option...] argument1 argument2...`variable_name=`/path/to/command`
以$開頭,將命令放在方括號(hào)內(nèi)進(jìn)行命令i換,如下示例:
variable_name=$(command_name)variable_name=$(command_name [option...] argument1 argument2...)variable_name=$(path/to/command)
以上內(nèi)容是否Bash 引號(hào)
字符串
當(dāng)您輸入的內(nèi)容為簡(jiǎn)單的字符串或文本時(shí),單引號(hào)和雙引號(hào)的作用沒有任何區(qū)別。請(qǐng)仔細(xì)閱讀以下示例:
#!/bin/bashecho 'Hello World!'echoecho "Welcome to W3Cschool!"
執(zhí)行結(jié)果:
$ ./bash_script.sh
Hello World!
Welcome to W3Cschool!
變量
當(dāng)您想打印輸出一個(gè)已定義的變量,則需要使用雙引號(hào)。這時(shí)若使用單引號(hào)不會(huì)將其視為變量。請(qǐng)仔細(xì)閱讀以下示例:
#!/bin/bashcomment="Welcome to W3Cschool!"echo "$comment"echo '$comment'
執(zhí)行結(jié)果:
$ ./bash_script.sh
Welcome to W3Cschool!
$comment
復(fù)合示例
請(qǐng)仔細(xì)閱讀以下示例,以幫助您更好的理解在 Bash 中,引號(hào)的概念及使用。
$ ./bash_script.shechoecho "Hello World!"comment='Welcome to W3Cschool!'echo $commentechoecho "Hello World!"comment="Welcome to W3Cschool!"echo $commentechoecho "Hello World!"remark="Hello User, $comment"echo $remarkechoecho "Hello World!"remark='Hello User, $comment'echo $remark
執(zhí)行結(jié)果:
$ ./bash_script.sh
Hello World!
Welcome to W3Cschool!
Hello World!
Welcome to W3Cschool!
Hello World!
Hello User, Welcome to W3Cschool!
Hello World!
Hello User, $comment
以上內(nèi)容是否對(duì)您有幫助
?