1. Linux中命令順序執行:
command1;command1
命令1結束,順序執行命令2
# echo Hello World! ; pwd ; ls
command1&&command2
第一個命令成功結束執行第二個命令
# ls /home/alex && cd /home/alex
command1||command2
第一個命令執行不成功才執行第二個命令
# ls /home/alex/copy || cp copy /home/alex
note: 只有當目錄/home/alex下不存在copy文件時,才將該文件復制到/home/alex目錄下,如果該目 錄下已經存在該文件,則不再進行復制
2. Linux $標識符意思
$0: 存儲命令名
$1~ $n: 存儲第1個到第n個命令參數
$#: 存儲參數個數
$*: 存儲所有參數,作為一個字符串
$@: 存儲所有參數,作為一個字符串數組
$$: 當前命令的進程號
$!: 前一個命令的進程號
$?: 前一個命令的返回結果
3. 變量賦值
${var:-value}: 如果變量var存在,返回變量var值,否則返回value
${var:=value}: 如果變量var存在,返回變量var值,否則var=value, 返回value
${var:?value}: 如果變量var存在,返回變量var值,否則輸出錯誤消息value
${var:+value}: 如果變量var存在,返回變量var值,否則不返回任何值
${var:offset[:length]}: 返回變量var中offset開始length長度字符串,第一位offset=0
4. Linux中軟鏈接與硬鏈接區別
1. 軟鏈接可以跨越文件系統,硬鏈接不可以
2. 關於I節點。硬鏈接不管有多少個,都指向的是同一個I節點,即inode number相同,會把節點連接 增加,只要節點連接數不是0,文件就一直存在,不管刪除的是源文件還是鏈接文件,只要有一個存 在,文件就存在,當修改源文件或鏈接文件中任何一個的時候,其它文件都會同步修改。軟鏈接不直接 使用I節點作為文件指針,而是使用文件路徑名作為指針,所以刪除鏈接文件對源文件無影響,但是刪 除源文件,鏈接文件就會找不到指向的文件,軟鏈接有自己的inode,並在磁盤上有一小片空間存放路 徑名
3. 軟鏈接可以對一個不存在的文件進行鏈接
4. 軟鏈接可以對目錄進行鏈接
5. Shell 通配符
?: 表示任意單個字符
*: 表示任意長度的任意字符串
[]: 表示匹配放在[]中的字符集中的任意一個字符
{}: 將大括號中 的字符串以及前導字符和後繼字符串作為匹配條件
# ls *.txt
#顯示當前目錄下所有以.txt結尾的文件
# ls 20.?
#顯示所有由四個字符組成的文件名,且前3個字符必須是“20.”
# ls 2[0, 1] *
#顯示當前目錄下所有以“20”或“21”開頭的文件, 通配符[]在表示一個連續的數字或字符時可 以使用“_”,例如[1_9]表示數字1~9,[1~3, 8, 9]表示1,2,3,8,9中任意一個數字。
# echo m{oon,op,ud}s
#顯示moons, mops, muds
6. 單引號、雙引號及反引號
雙引號(“ ”):在雙引號中的字符,除了“$”,""","'",和“\”以外的所有字符都被翻譯成字符本身
單引號('):在單引號中的所有字符(如“$”,""","'",和“\”)都失去特殊意義,而成為普通字符
反引號(`): Esc下面的那個鍵,在反引號中的的字符被解釋成命令
# echo "$PATH"
/usr/kerberos/sbin...
#echo "I am $USER"
I am root
# echo '$PATH'
$PATH
# echo Today \' year is `date +%y`
Today ' year is 10
7. 運行腳本
1. 通過chmod命令把文件權限設成可讀、可執行然後直接執行該可執行文件
$ chmod u+x 腳本文件名
$ ./腳本文件名及其參數
2. 直接使用shell的啟動命令來執行腳本
$ bash 腳本文件名及其參數
$ bash 腳本文件名及其參數
$ tcsh 腳本文件名及其參數
$ sh 腳本文件名及其參數
$ tcsh tcshsript
3. 使用bash內部命令“source”或“.”運行shell腳本
$ source 腳本文件名及其參數
$ . 腳本文件名及其參數
$ source hello
hello world!
8. 創建變量
1. declare 或 typeset 創建變量
如:declare -r x #創建只讀變量x
2. 直接給變量賦值來創建變量,為變量賦值,變量名前不應加美元符號"$", 如下
CITY=Beijing #"=" 前後不要有空格
3. 使用變量時,前面要加美元符號“$”
如:echo $SHELL
4. 變量使用舉例:
# order=22
# echo "Tom is ${order}nd"
輸出:Tom is 22nd
5. 清除變量
uset x #只能清楚非只讀變量
9. read命令賦值
1. 多個數據或變量之間用空格分隔
2. 若變量變量個數與輸入數據個數相等,則對應賦值
3. 若變量變量個數大於輸入數據個數相等,則沒有輸入數據的變量取空值
4. 若變量變量個數小於輸入數據個數相等,則多余的數據賦值給最後一個變量
10. 數組
1. 數組定義
name=(element1 element2 ...)
e.g.: name=("alex" "jim")
2. 顯示系統所有數組
# declare -a
3. 數組復制
all=("${name[*]}") //將數組name的全部內容作為一個元素復制到all中,即all=("alex jim")
list=(""${name[@]}) //將數組name的內容復制到一個新數組list中
4. 數組元素個數
${#name[*]}
5. 數組元素的長度
${#name[ num]}
11. 算數運算
expr: 表達式處理命令,5種算數運算:+ - * / %
# x=`expr $b / $a`
# x=`expr $b % $a`
let: 為變量賦值
# let y=x / 2
- Jul 14 Tue 2015 13:54
linux之shell拾零
close
全站熱搜
留言列表
發表留言