shell腳本編程:
編程語言的分類:根據運行方式
編程運行:源代碼->編譯器(編譯)--程序文件
解釋運行:源代碼-->運行啟動時解釋,由解釋器邊解釋運行;
根據其編程過程中功能的實現是調用庫還是調用外部的程序文件:
?。螅瑁澹欤炷_本編程:
利用系統上的命令編程組件進行編程:
完整的編程:
利用庫或編程組件進行編程;
編程模型:過程是編程語言,面向對象編程語言
程序=指令+數據
過程是:以指令為中心來組織代碼,數據是服務于代碼;
順序執行
選擇執行
循環執行 代表:C, bash
對象式:以數據為中心來組織代碼,圍繞數據來組織指令;
類(class)實例化對象,method:
代表:java C++,python
shell腳本編程:過程編程,解釋運行,以來外部程序運行;
如何寫shell腳本:
腳本文件的第一行,頂格:給出shebang,解釋器路徑,用于指明解釋執行當前腳本的解釋器程序文件常見的解釋器:
#?。猓椋睿猓幔螅?/pre>#?。酰螅颍猓椋睿穑簦瑁铮?/pre>#?。酰螅颍猓椋睿穑澹颍?/pre>文本編程器:nano行編輯器:sed全屏幕編程器:nano.vi.vimshell腳本是什么?命令的堆積;但很多命令布局有冪等性,需要程序邏輯來判斷運行條件是否滿足,以避免其運行中發生錯誤;如何運行腳本:(1)賦予執行權限,并直接運行此程序文件;chmod?。。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>?。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>(2)直接運行解釋器,將腳本以命令行參數傳遞給解釋器程序;?。猓幔螅琛。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>注意:腳本中的空白行會被解釋器忽略:腳本中,除了shebang,余下所有以#開頭的行,都會被是做注釋行而被忽略;此即為注釋行;shell腳本的運行時通過運行一個子shell進程實現的;練習:寫一個腳本,實現如下功能(1)顯示/etc目錄下所有以大小寫開頭的文件或目錄本身;(2)顯示/var目錄下的所有文件或目錄本身,并肩顯示結果中的小寫字母轉換為大寫顯示;(3)創建臨時文件/tmp/myfileXXXX;bash的配置文件:兩類:profile類:為交互式登錄的shell進程提供配置bashrc類:為非交互式登錄的shell進程提供配置登錄類型:交互式登錄shell進程:直接通過某終端輸入賬號和密碼后登錄打開的shell進程:使用su命令:su-USERNAME,或者使用su-USERNAME執行的登錄切換;非交互式登錄shell進程:su USERNAME執行的登錄切換;圖形界面下打開的終端;運行腳本profile類:全局:對所有用戶都生效/etc/profile/etc/profild.d/*.sh用戶個人:僅對當前用戶有效:-/.bash_profile功用:1、用于定義環境變量;2、運行命令或腳本:bashrc類:全局:/etc/bashre用戶個人:-/.bashrc功用:1,,定義本地變量;2.定義命令別名;注意:僅管理員可修改全局配置文件;交互式登錄shell進程:/etc/profile.d/*-/.bash_profile->/.bashrc->/etc/bashrc非交互式登錄shell進程:-/.bashrc-->/etc/bashrc-->etc/profile.d/*]命令行中第那樣的特性,例如變量和別名作用域為當前shell進程的生命周期;配置文件定義的特性,至對隨后新啟動的shell進程有效;
讓通過配置文件定義的特性立即生效:(1)通過命令重復定義一次;(2)讓shell進程重讀配置文件;~]# suource /PATH/FROM/CONF_FILE~]#./PATH/FROM/CONF_ FILE問題1:定義對所有用戶都生效的命令別名,例如‘Iftps='Iftp 172.16.0.1/pub'?問題2,:讓centos 用戶登錄時,提供其已經登錄,并顯示當前系統時間?
原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/64531