Linux bash 特性、相關變量以及編程
bash 特性之:命令hash
緩存此前執行過的命令(都是外部命令,不記錄內嵌命令),加速命令的執行
hash -d 清空指定命令記錄 -r 直接清空hash表
bash 特性之一: 變量 程序=指令+數據 指令是有文件提供 數據是由:IO設備,文件,變量,管道
程序:算法+數據結構
變量類型:存儲格式、表示數據范圍、參與的運算
編程語言
bash把所有變量統稱為作為字符型 bash中變量無需事先聲明;相當于,把聲明和賦值過程同時實現 變量替換,變量名指定的內存數據空間賦值給另外一個變量 變量引用:$(var_name),$var_name 變量命名:字母,數字,下劃線,但是不能以數字開頭,見名之意,且不能用程序的關鍵 bash變量類型 本地變量(當前shell),環境變量(當前shell以及子進程),局部變量(當前shell的某個進程的變量),位置參數變量(執行腳本傳遞的參數,特殊變量(shell內置的有特殊功能的變量比如"?" 查看變量:set ,撤銷變量:unset NAME 環境變量 1),export name=value 2),name=value;export name 3),name=value; declare -x name 4),declare -x name=value 注意:bash內嵌了許多環境變量,用于定義bash工作環境(基本都是大寫,PATH,HOME,HISTFILE...) 查看環境變量:env,declare -x,printenv 撤銷環境變量:unset name 只讀變量:declare -r name;或者 readonly name ;生命周期隨shell結束而結束
bash特性之多命令執行
~]# COMMAND1;COMMAND2;COMMAND3;....... 邏輯運算 與,或,非,異或(相同為0,不同則為1) 與:短路法則:COMMAND1 && COMMAND2,第一個命令執行狀態是否成功,決定后一個 反
shell編程
編程的語言的分類:根據運行分類
編譯運行:源代碼---> 編譯器(編譯) ---> 程序文件 C語言, 解釋運行:源代碼--->運行時啟動解釋器,由解釋器邊解釋邊運行
根據編程過程中功能實現是調用庫還是外部程序文件
shell腳本編程 利用系統上的命令及組件進行編程
完整編程 利用庫或者編程組件進行編程
編程模型:過程式編程語言和面向對象編程語言 過程式:以指令為中心來組織代碼,數據服務于代碼 順序執行,選擇執行,循環執行 對象式:以數據為中心來組織代碼,圍繞數據來組織指令 類(class):實例化對象,method
shell 編程:過程式編程,解釋運行,依賴于外部程序文件運行
如何寫shell腳本: 腳本第一個行:頂格:給出shebang,解釋器路徑,用于指明解釋執行當前腳本的解釋器程序文件
常見的解釋器
#!/bin/bash #!/usr/bin/python #!/usr/bin/perl
編輯器:nano,sed, vim,vi
命令的堆積:但是很多命令不具有冪等性,需要用程序邏輯來判斷運行條件是否滿足,以避免其運行過程發生錯誤而終止
運行腳本: 運行的過程:是先啟動/bin/bash (#!/bin/bash),才開始執行這個腳本文件內的命令(堆積的命令) 1),賦予執行權限,并直接運行此腳本程序文件 2),直接用解釋器運行,將腳本以命令行參數傳遞給解釋器程序;~]# bash 腳本文件 3)"." 或者 source 注意:空白行直接被忽略,如果要直接加入echo,注釋用"#",
bash 配置文件 profile類:為交互式登陸的shell進程提供配置 su – username ;終端輸入賬號和密碼登陸的終端 bashrc類:為非交互式登陸shell進程提供配置 su username ;圖形界面下打開終端:運行腳本也是(執行腳本是打開了一個子shell)
profile類: 全局:對所有用戶都生效 /etc/profile /etc/profile.d/*.sh 用戶個人:僅對當前用戶有效:~/.bash_profile 功能:1,用于定義環境變量 2,運行命令或腳本 bashrc類: 全局:多有所有用戶生效 /etc/bashrc 用戶個人:僅對當前用戶有效:~/.bashrc 功能: 1,定義本地變量 2,定義命令別名
配置文件讀取次序:
交互式登陸shell:/etc/profile --> /etc/profile.d/*---> ~/.bash_profile--> ~/.bashrc --> /etc/bashrc 非交互式登陸shell: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/* ~]# source 配置文件 或者 ~]# . 配置文件 #重啟配置文件,讓當前shell生效
原創文章,作者:不忘初衷,如若轉載,請注明出處:http://www.www58058.com/65254