9.1 shell概述
每個人在成功登陸linux後,系統會出現不同的提示符號,例如$、~、#等,然後你就可以開始輸入需要的命令,若是命令正確,系統就會依據命令的要求來執行,直到註銷系統爲止;在登錄到註銷期間,輸入的每個命令都會經過解釋及執行。而這個負責的機制就是shell
9.2 shell編程
其實作爲命令語言互動式地解釋和執行用戶輸入的命令只是shell功能的一個方面。shell還可以用來進行程序設計。它提供了定義變量和參數的手段以及豐富的程序控制結構。使用shell編程類似於DOS中批處理文件,稱爲shell script,又叫shell程序或shell命令文件
9.3 shell的分類
Shell名稱 | 開發者 | 命令名稱 |
Bourne | S.R.Bourne | /bin/sh |
C | Bill Joy | /bin/csh |
Korn | David | /bin/ksh |
9.4 shell的使用
命令歷史和互動:用上下箭頭鍵可以重複以前所輸入的命令
命令完成功能:用tab鍵能自動完成相關命令,再次按tab可得到清單
[Ctrl]+c 中斷當前命令的組合鍵,
[Ctrl]+d 鍵盤輸入結束,可以用來取代exit的輸入.
shell腳本文件:
- 是一個文本文件
- 命令的集合
- 有執行的權限
- 執行方式(./文件名)
用戶登錄後自動執行的shell腳本文件
- .bashrc位於主目錄下,它之前執行系統的腳本/etc/bashrc主要是基本配置數據
- 配置.bashrc文件可以指定某些程序在用戶登錄的時候就自動啓動
- .bash_profile位於主目錄下,它之前執行系統的腳本/etc/profile主要是配置環境變量
用export可以臨時加入一個系統路徑,如export PATH=$PATH:$HOME/bin:/root/test/t1,輸出環境PATH,引用原來的值$PATH,$HOME表示工作主目錄,:是路徑分隔符
- 已經定義好的環境變量
- SHELL:默認shell
- PATH:路徑
- USER:當前登錄用戶的用戶名
- 顯示變量內容
- echo $SHELL
- echo $USER
- echo $PATH
變量鍵盤讀取、數組、與聲明:read、array、declare
- read 格式:read [-pt] variable
- -p : 後面可以接提示符
- -t : 後面可以接等待秒數
【案例】read -p “Please keyin your name: ” –t 30 name
- declare/typeset 格式: declare [-aixr] variable
- -a : 將後面的variable定義爲數組(array)
- -i : 將後面的variable定義爲整數數字(integer)
- -x : 用法與export一樣,就是將後面的variable變成環境變量
- -r : 將一個variable的變量設置成只讀,變量不可以更改內容,也不能取消設置
【案例】delare –i sum=100+200+300
- array 格式:var[index]=content
- 輸入:
- var[1]=”small min”
- var[2]=”big min”
- var[3]=”nice min”
- 讀取: echo “${var[1]}, ${var[2]}, ${var[3]}”
shell通配符
- *代表多個字母或數字
- ?代表一個字母或數字
【案例】ls a* ls a? ls f080[1-6].tif
- 轉義字符\
【案例】ls /mnt/win1/My\Documents
引號
【案例】export NAME=Michael
echoWelcome $NAME, the date is date
- 單引號:不處理任何變量和命令
【案例】echo ‘Welcome $NAME, the date is date ’
- 雙引號:處理變量但不處理命令
【案例】echo “Welcome $NAME, the date is date “
- 反引號:把引號中的每個單詞作爲一個命令,如果是變量則先求值然後作爲一個命令處理
【案例】echo “Welcome $NAME, the date is `date` “
Linux echo命令。
功能說明:顯示文字。
語 法:echo [-ne][字符串]或 echo [--help][--version]
補充說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號。
參 數:-n 不要在最後自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
- \a 發出警告聲;
- \b 刪除前一個字符;
- \c 最後不加上換行符號;
- \f 換行但光標仍舊停留在原來的位置;
- \n 換行且光標移至行首;
- \r 光標移至行首,但不換行;
- \t 插入tab;
- \v 與\f相同;
- \\ 插入\字符;
- \nnn 插入nnn(八進制)所代表的ASCII字符;
- --help 顯示幫助
- --version 顯示版本信息
別名
- 命令:alias顯示系統當前定義的所有alias
【案例】alias cp=’cp -i’
【案例】alias li=’ls –l –color=tty’
補充說明:用戶可利用alias,自定指令的別名。若僅輸入alias,則可列出目前所有的別名設置。 alias的效力僅及於該次登入的操作。若要每次登入是即自動設好別名,可在/etc/profile或自己的~/.bashrc中設定指令的別名。
還有,如果你想給每一位用戶都生效的別名,請把alias la='ls -al' 一行加在/etc/bashrc最後面,bashrc是環境變量的配置文件 /etc/bashrc和~/.bashrc 區別就在於一個是設置給全系統一個是設置給單用戶使用有,如果你想給每一位用戶都生效的別名,請把alias la='ls -al' 一行加在/etc/bashrc最後面,bashrc是環境變量的配置文件 /etc/bashrc和~/.bashrc 區別就在於一個是設置給全系統一個是設置給單用戶使用
shell的修改
chsh –s 輸入新的shell
查閱歷史記錄
- history,查看使用過的命令的歷史記錄
- history 5,此項說明會顯示最近使用的5個命令
- !5,此項說明執行歷史編號爲5的命令
- !ls,此項說明執行最後一次以“ls”開頭的命令
環境變量的說明: env、set 可以用這兩個命令查看一些環境變量的說明,直接輸入即可。
提示符的設置:PS1=’[\u@\h \W \]\$’
$系統變量
$# : 命令行參數個數
$n : 命令行參數,n爲非負整數.
$0 : 表示程序名稱
$1 : 表示第一個命令行參數
$? : 前一條命令的返回碼
$$ : 本進程的進程ID
$! : 上一進程的進程ID