自學Linux系統的小總結(三)
shell的環境與功能:
shell是作業系統與使用者互動的一個介面
Ubuntu作業系統上的shell有bash,bash也是一個命令。
命令補全是對輸入命令的簡單臆想,用tab鍵,單擊補全,雙擊推測可能的命令,補全為操作命令。
命令歷史:對命令操作的痕跡,有條件儲存。命令歷史清空:history –c
上下鍵可以逐條呼叫以前的命令
命令別名:對原名的暱稱。別名在提交時會自動進行字元替換
別名檢視:alias
別名設定:alias ls=’ls- -color=auto’
萬用字元:通用匹配的一種特殊符號
*代表任意多個,ls –l test.* ?代表任意一個 ls –l test?.?
[ ]範圍中的一個 ls –l test[0-9].sh
命令後臺執行:脫離命令列互動程式的控制而獨立執行。
命令後臺發生:原有命令後加&,可將命令發生到後臺
命令作業控制操作:jobs 檢視當前後臺命令。bg當前命令切換到後臺。fg將最近一個後臺命令切回到前臺。
shell變數是shell程式在記憶體中儲存資料的容器
shell變數設定:eg:color=red shell變數引用:eg:echo $color echo ${color}{ball}
自定義變數:使用者自己定義的,不與系統重名
自定義變數設定:eg:Day=Friday(第一個字母一般大寫) 自定義變數引用:eg: echo “todayis ${Day}”
環境變數:用來儲存環境資訊資料的變數,通常系統配置初始提供
使用與自定義變數一致,只是變數名被約束。(變數名一般大寫)
環境變數匯出與儲存:export命令匯出當前shell環境中的環境變數匯出到子shell中。
環境變數可以儲存在配置檔案~/.bashrc中,供長期使用。
常用環境變數:PATH變數, PS*系列變數
PATH環境變數:儲存系統命令所在路徑,為絕對路徑。
PATH變數設定eg:PATH=/home/summer/bin:$PATH
PATH變數引用:eg:echo $PATH
預定義變數:shell程式提供的內建變數,儲存shell程式執行過程中的狀態資訊,無需設定,只能引用。
預定義變數的引用:
$$儲存當前程序的程序號 $0儲存當前程序的程序資訊 $?儲存當前命令的返回值資訊 $!儲存最近一個後臺程序的程序號資訊
位置變數:shell程式提供,引用傳遞給程式的引數。$1,$2,$3,,,,,$9總共九個。
標準裝置檔案:
標準裝置檔案:stdin,檔案描述符0
標準輸出檔案:stdout 檔案描述符1
標準錯誤檔案:stderr,檔案描述符2
管道:系統提供命令間傳遞資訊的裝置,從前到後單向傳遞
使用:eg: ps aux | grep “bash” | grep –v “grep”
重定向:將原本關聯的輸入或輸出到標準裝置檔案的資訊重新定向到指定的磁碟檔案的舉措。
標準重定向:eg:ls –l >output.txt
標準錯誤重定向:eg : ls –l sjfidji 2>output.txt
標準輸入重定向:eg:cat <output.txt
標準輸入重定向之here document技術 eg:cat <<EOF 輸入定義的結束符EOF之後結束
合併輸出重定向:eg:ls –l test.*filenotfound &>output.txt
管道過濾資訊重定向:eg:ls –l | grep“summer”>output.txt
重定向服務實現簡單CP:eg: cat < output.txt>output2.txt
Eg: cat >output.txt <<FF在螢幕直接輸入後儲存到檔案。
指令碼的概念:以解釋執行方式的程式語句的集合體。
用途:批量順序處理 非互動式命令
控制結構概念:順序,分支和迴圈
分支實現:1 符號級聯 條件語句 && echo “ok” || echo “failure”
2if-else if [ 條件語句 ]
then
真分支語句
elif [條件語句]
then
真分支語句
else
假分支語句
fi
3case分支 case $var in
a) echo “A”
;;
b) echo “B”
;;
*) echo ”C”
;;
Esac
迴圈結構
1 while [-x $1] 條件判斷
do
echo “running”
[ ]&&break
done
2 until [!-x $1]
do
echo “running”
[ ]&&break
done
3 for var in a b c d
do
echo $var
d
one
此迴圈由迴圈列表決定,如例子迴圈列表為4,則迴圈四次。
Shell函式的兩種表達形式:
一 函式名 ()
二 function 函式名 ()
呼叫函式,直接寫函式名
Shell變數替換
預設賦值替換:eg: ${Today:=Sunday}
單詞匹配替換:eg:${Session/Yes/yes}