一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Linux——Shell管理腳本(基礎(chǔ)詳解--精)

 惡之一眉 2012-02-06

一:Shell的作用及常見種類:

Shell是一個特殊的應(yīng)用程序,他介于操作系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)接受用戶輸入的操作指令(命令)并進行解釋,將需要執(zhí)行的操作傳遞給內(nèi)核執(zhí)行。因此,Shell程序在系統(tǒng)中充當(dāng)了一個“命令解釋器”的角色,eg:微軟的cmd.exe也屬于Shell程序;

在Unix/Linux操作系統(tǒng)中,能夠使用的Shell程序有很多種,功能也比微軟的“cmd.exe”要強大的多,下面就是常見到的Shell程序環(huán)境,(功能可以自己去找:)

Bsh:

Csh:

Ksh:

Bash:

Zsh:

1、Shell環(huán)境的切換:

為了提高系統(tǒng)的兼容性,在RHEL5系統(tǒng)中提供了對各種常見Shell程序的支持,通過配置文件“/etc/shells”可以了解系統(tǒng)所支持的shell程序的路徑;

查看當(dāng)前Linux系統(tǒng)中能夠使用的Shell程序的列表:

其中有一部分Shell程序?qū)嶋H上是其他Shell程序的符號鏈接文件,這樣做是為了更好地提供Shell程序之間的兼容性,eg:tcsh是csh的兼容升級版本,因此在系統(tǒng)運行csh時將直接運行tcsh。

確認(rèn)Shell程序中存在的部分鏈接文件:


用戶在執(zhí)行Linux命令操作的過程中,若希望使用其他的Shell程序環(huán)境,可以進行相應(yīng)的切換。

ksh即可切換到ksh程序環(huán)境                               //////echo $0

exit即可退回

1.2:更改用戶自己的登錄Shell

用戶每次登錄到Linux系統(tǒng)時系統(tǒng)自動加載的Shell程序即為該用戶的登錄Shell,用戶的登錄Shell信息記錄在“/etc/passwd”文件中,并允許用戶通過chsh命令進行修改。

使用chsh命令設(shè)置了新的登錄Shell后,新的登錄Shell將在該用戶下一次登錄系統(tǒng)時生效

1.3:由管理員(root)更改其他用戶的登錄Shell

usermod -s /bin/bash teacher 即可!

2、Bash的常用功能:(Tab 鍵的自動補齊。。。。。。)

2.1:命令歷史:history

2.2:命令別名:alias

查看已設(shè)置的的所有命令別名:


eg:設(shè)置一個命令別名dir,以便執(zhí)行“l(fā)s -ld --color=tty”的命令,并進行確認(rèn)。

取消上一步設(shè)置的dir命令別名:

unalias dir 即可 ///////////alias -a 取消了所有的命令別名

2.3:標(biāo)準(zhǔn)輸入輸出和重定向、管道操作等等!

3、Shell變量應(yīng)用:

在各種Shell程序環(huán)境中,都使用到了“Shell變量”的概念,Shell變量用于保存系統(tǒng)和用戶需要使用的特定參數(shù)(值),而且這些參數(shù)可以根據(jù)用戶的設(shè)定或系統(tǒng)環(huán)境的變化而相應(yīng)變化,通過使用變量,Shell程序能夠提供更加靈活的功能,適應(yīng)性更強。

常見的Shell變量的類型包括用戶自定義變量,環(huán)境變量,預(yù)定義編譯,位置變量。

3.1:用戶自定義變量

用戶自定義變量是由系統(tǒng)用戶自己定義的變量,只在用戶自己的Shell環(huán)境中有效,因此又稱為本地變量。在編寫Shell腳本程序時,通常會需要設(shè)置一些特定的自定義變量,以適應(yīng)程序執(zhí)行過程中的各種變化,滿足不同的需要。

>:定義新的變量,Bash中的變量操作相對比較簡單,沒有其他高級編程語言(如:C/C++、java等)那么復(fù)雜,在定義一個新的變量時,一般不需要提前聲明,而是直接指定變量名及初始化值(內(nèi)容)即可,定義變量操作的基本格式如下(等號兩邊都沒有空格)。

變量名=變量值

eg:DAY=Sunday

>:查看及引用變量的值

echo $DAY              即可

注:在變量DAY的內(nèi)容后緊跟“Morning“字符串并一起顯示。

echo ${DAY]Morning                       //錯誤引用為       echo $DAYMorning          (當(dāng)變量名稱容易和緊跟其后的其他字符相混淆時,需要添加大括號“{}”將其包圍起來,否則將無法確定正確的變量名稱)

3.2:為變量賦值的常用方法

在等號“=”后邊直接指定變量內(nèi)容是為變量賦值的最基本方法,除此以外,管理員通常還會使用到其他的一些賦值操作,從而使變量內(nèi)容獲取更加靈活多變,以便適用于各種復(fù)雜的系統(tǒng)管理任務(wù)。常用的幾種變量賦值操作包括雙引號、單引號、反撇號、read命令。

>:雙引號(“)

使用雙引號時,允許在雙引號的范圍使用”$“符號來引用其他變量的值(變量引用)。在簡單的賦值操作中,雙引號有時候可以省略。

>:單引號(’)

使用單引號時,將不允許在單引號的范圍內(nèi)引用其他變量的值,”$“符號或者其他任務(wù)將作為普通字符看待;

>:反撇號(`)

使用反撇號時,允許將執(zhí)行特定命令的輸出結(jié)果賦給變量(命令替換),反撇號內(nèi)包含的字串必須是能夠執(zhí)行的命令,執(zhí)行后會用輸出結(jié)果替換該命令字串。

>:read 命令

除 了上述賦值操作以外,還可以使用Bash的內(nèi)置命令read來給變量賦值。read命令可以從終端(鍵盤)讀取輸入,實現(xiàn)簡單的交換過程。read將從標(biāo) 準(zhǔn)輸入讀入一行內(nèi)容,并以空格為分隔符,將讀入的各字段分別賦值給指定列表中的變量(多余的內(nèi)容賦值給最好一個變量)。若指定的變量只有一個,則將賦值內(nèi) 容賦值給該變量。

為了使交互式操作的界面更加友好,提高易用性,read命令可以結(jié)合“-p”選項來設(shè)置提示信息,用于告知用戶應(yīng)該輸入的內(nèi)容等相關(guān)事項。

3.3:設(shè)置變量的作用范圍i對于用戶自行定義的變量,默認(rèn)情況下只能在當(dāng)前的Shell環(huán)境中使用,因此稱為局部變量。局部變量在新開啟的子Shell環(huán)境中是無效的(無法引用定義的變量)

eg:在Bash環(huán)境定義的變量是不能在csh使用的。

為了使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用,減少重復(fù)設(shè)置工作,可以使用export命令將指定的變量設(shè)置為“全局變量”。export命令可以同時使用多個變量名作為參數(shù)(不需要使用“$”符號),變量名之前以空格分隔。

export haha   即可!

>:export命令還可以在輸出變量的同時對指定名稱的變量進程賦值(創(chuàng)建),這樣在使用export命令之前就不需要單獨為變量進行賦值了

eg:定義兩個變量MONTH、YEAR,并將其設(shè)置為全局變量。

3.4:清除自定義變量:當(dāng)用戶不再需要使用定義變量時,可以使用unset命令對已定義的用戶變量進行清除,指定一個或多個變量名稱作為參數(shù)即可(以空格分隔)

unset DAY MONTH YEAR         //即可!

3.5:數(shù)值變量的運算

Bash程序并不適合進行強大的數(shù)學(xué)運算(如小數(shù)、指數(shù)等),一般只適合進行簡單的整數(shù)運算??梢允褂胑xpr 表達(dá)式命令,格式如下:

expr 變量1 運算符 變量2                            +              -          \*      / 

4、環(huán)境變量

這里說的環(huán)境變了是指用戶登錄后Linux系統(tǒng)預(yù)先設(shè)定好的一類Shell變量,其功能是設(shè)置用戶的工作環(huán)境,包括用戶宿主目錄,命令查看路徑,用戶當(dāng)前目錄,登錄終端等,在實際使用過程中,環(huán)境變量并沒有嚴(yán)格的區(qū)分定義,用戶自己設(shè)置的變量也可以作為環(huán)境變量。

環(huán)境變量的名稱比較固定,通常使用大寫字母,數(shù)字和其他字符組成,而不使用小寫字母。環(huán)境變量的值一般由Linux系統(tǒng)自行維護、會隨著用戶狀態(tài)的改變而改變,用戶可以通過讀取環(huán)境變量來了解自己當(dāng)前的環(huán)境。

4.1>:查看環(huán)境變量;set  即可!

根據(jù)當(dāng)前環(huán)境變量用戶可以知道好多內(nèi)容喔!

確認(rèn)當(dāng)前的命令搜索路徑,并將“/opt/bin”目錄添加帶現(xiàn)有的搜索路徑中去。

4.2>:環(huán)境環(huán)境配置文件

在Linux系統(tǒng)中,用戶環(huán)境變量的設(shè)置工作習(xí)慣上在"/etc/profile"文件及用戶宿主目錄中的“.bash_profile”文件中進行,前者稱為全局配置文件(對所有用戶起作用),后者成為用戶配置文件(允許覆蓋 全局配置)。

5:位置變量

所謂位置變量也就是一些$n變量

$12345689

6:預(yù)定義變量

預(yù)定義變量是由Bash程序預(yù)先定義好的一些特殊變量。用戶只能使用預(yù)定義變量,而不能創(chuàng)建新的預(yù)定義變量,或直接修改預(yù)定義變量賦值。所有的預(yù)定義變量都是由“$”符號和另一個符號組成的,較常用的Shell預(yù)定義變量包括以下這些。

$#:表示命令行中位置參數(shù)的數(shù)量。

$*:表示所有位置參數(shù)的內(nèi)容。

$?:表示命令執(zhí)行后返回的狀態(tài),用戶檢查上一個命令的執(zhí)行是否正確。在Linux中,命令推出狀態(tài)為0表示命令執(zhí)行正確,任何非0值的表示命令執(zhí)行錯誤。

$$:表示當(dāng)前進程的進程號。

$!:表示后臺運行的最后一個進程的進程號。

$0:表示當(dāng)前執(zhí)行的進程的進程名。

預(yù)定義變量通常使用在Shell腳本程序中,在命令行界面中的應(yīng)用并不多見(盡管也可以使用)。

7:腳本的概念:

Bash 程序不僅可以作為用戶管理Linux系統(tǒng)的命令操作環(huán)境,同時也可以作為一種優(yōu)秀的腳本程序語言。凡是使用Shell編程的語言編寫的程序都可以稱為 Shell腳本,通俗一點說,只要將一些Linux命令按順序保存到一個文本文件中,并給予這個文件可執(zhí)行權(quán)限,那么這個文件就可以稱為Shell腳本。 當(dāng)然,Shell腳本是為了完成一定的管理任務(wù)才創(chuàng)建的,因此腳本文件中的各條命令并不是雜亂無章隨便放置的,這就需要用戶來進行組織和設(shè)計了。

7.1:編寫Shell腳本文件 (建立包含可執(zhí)行語句的文件文件)

使用文本編輯器程序(如:vi)創(chuàng)建腳本文件,文件名中可以使用擴展名(如:“.sh”),也可以不使用擴展名,并沒有強制的要求。腳本中可能包括的內(nèi)容如下:

>:運行環(huán)境設(shè)置:通常位于文件的第一行,用戶指定使用那一個Shell程序進行解釋。設(shè)置時以“#!”開始,后面緊跟上指定的Shell程序的完成路徑,如“#!/bin/bash”。

>: 注釋行:在腳本文件中,除了以“#!”開頭的Shell環(huán)境設(shè)置行以外,其他以“#”符號開頭的內(nèi)容將被視為注釋信息,執(zhí)行腳本時將予以忽略。編寫腳本程 序時,添加必要的注釋語句是一個良好的習(xí)慣,這樣將大大增強腳本文件的易讀性,方便在不同時間,不同用戶間交流使用。

>:可執(zhí)行語句:可執(zhí)行語句是Shell腳本程序中最重要的組成部分,在命令行操作界面中可以執(zhí)行的命令都可以寫入到腳本當(dāng)中,程序運行時默認(rèn)情況下將會按照順序依次解釋執(zhí)行。除此以外,還可以添加一些程序結(jié)構(gòu)語句,用戶靈活控制執(zhí)行過程,提高程序執(zhí)行效率。

eg:使用vi編輯器編寫一個簡單的Shell腳本文件test.sh,用于報告當(dāng)前系統(tǒng)中“/boot”目錄所占用的空間大小,并列出其中的內(nèi)核文件的屬性信息。


為腳本文件添加可執(zhí)行權(quán)限

chmod a+x test.sh

執(zhí)行該腳本:bash test.sh

7.2:說到執(zhí)行Shell腳本有多種方式:

>:直接執(zhí)行帶"x"權(quán)限的腳本文件

為腳本文件設(shè)置了可執(zhí)行屬性后,在Shell命令行中可以直接通過腳本文件的路徑執(zhí)行腳本程序,這也是最常用的一種方式,


執(zhí)行時需要在文件名之前加入“./”路徑,明確執(zhí)行需要執(zhí)行當(dāng)前目錄下的腳本文件,這種方法也是出于對系統(tǒng)安全性的考慮。

>:使用Shell解釋器程序執(zhí)行腳本

這種方式可以將腳本文件作為指定Shell解釋器程序(如:bash、sh等)的參數(shù),由解釋器程序負(fù)責(zé)讀取腳本文件中的內(nèi)容并執(zhí)行,因此并不需要腳本文件具有可執(zhí)行屬性。此方法通常只在腳本的調(diào)試階段使用。

>:使用“.”命令執(zhí)行腳本

使用Shell解釋器程序(如:bash)執(zhí)行指定腳本文件時,是在當(dāng)前Shell中啟動一個子Shell來運行腳本程序,因此腳本程序中定義的環(huán)境變量只能在子Shell環(huán)境中使用,而無法在用戶當(dāng)前的Shell環(huán)境中使用。

使 用Bash的內(nèi)部命令“.”(或使用source命令,其作用相同)加載指定的腳本文件并執(zhí)行時,系統(tǒng)將不會開啟新的Shell環(huán)境。使用這種方式時,腳 本文件作為“.”命令的參數(shù),因此同樣不要求腳本文件具備“x”權(quán)限。例如,在修改完“/etc/profile”文件以后,可以執(zhí)行“. /etc/profile”命令,使得在文件中新設(shè)置的變量立即生效,而無需重新登錄。

test.sh腳本在/home/下喔!

實 例1:由于公司的文件服務(wù)器空間有限,需要完成一向定期任務(wù),即在每周五下班前(17:30)檢查公共共享目錄"/var/ftp/pub"中的內(nèi)容,并 將其中所有子目錄及文件的詳細(xì)列表和當(dāng)時的時間信息追加保存到“/var/log/pubdir.log”日志文件中,然后清空目錄中的內(nèi)容。

vim /opt/ftpclean.sh

chmod a+x /opt/ftpclean.sh

crontab -e

30 17 * * 5 /opt/ftpclean.sh

OK!     記得crond服務(wù)喔!

實 例2:公司內(nèi)網(wǎng)開發(fā)服務(wù)器中的數(shù)據(jù)庫目錄位于“/usr/local/mysql/lib/mysql”,根據(jù)數(shù)據(jù)安全管理要求,至少每隔三天要做一次完 成備份,備份前需要統(tǒng)計該目錄占用的總空間大小,并將備份日期、目錄空間大小等信息保存到臨時文件“/tmp/dbinfo.txt”中,然后使用tar 命令將dbinfo.txt文件隨數(shù)據(jù)庫目錄一起備份到"/opt/dbbak/"目錄中,備份包文件名要要求體現(xiàn)當(dāng)天的日期。

mkdir /opt/dbbak

vim /opt/dbbak.sh

chmod a+x /opt/dbbak.sh

crontab -e

55 23 */3 * * /opt/dbbak.sh

記得crond服務(wù)喔!

 

 

 



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    成人精品日韩专区在线观看| 99久久人妻精品免费一区| 亚洲精品日韩欧美精品| 亚洲日本久久国产精品久久| 国内外免费在线激情视频| 99久热只有精品视频免费看| 国产精品一区二区有码| 日本免费熟女一区二区三区 | 国产三级黄片在线免费看| 日韩中文字幕人妻精品| 日韩精品中文字幕亚洲| 欧美熟妇一区二区在线| 久久精品蜜桃一区二区av| 高跟丝袜av在线一区二区三区| 99久久人妻中文字幕| 国产高清三级视频在线观看| 日本午夜精品视频在线观看| 精品亚洲香蕉久久综合网| 日韩欧美综合中文字幕| 久久精品亚洲精品国产欧美| 老鸭窝精彩从这里蔓延| 精品人妻精品一区二区三区| 69久久精品亚洲一区二区| 亚洲一二三四区免费视频| 亚洲一区二区三区三州| 国产不卡免费高清视频| 日韩专区欧美中文字幕| 成人精品一区二区三区综合| 日韩国产中文在线视频| 亚洲最大的中文字幕在线视频| 不卡视频在线一区二区三区| 国产又猛又黄又粗又爽无遮挡| 久久热在线视频免费观看| 国产韩国日本精品视频| 国产黄色高清内射熟女视频| 激情五月激情婷婷丁香| 不卡中文字幕在线免费看| 欧美激情区一区二区三区| 精品女同在线一区二区| 久久精品国产亚洲av麻豆| 成年午夜在线免费视频|