一 概述
1 Shell是一個命令行解釋器,它為用戶提供了一個向內(nèi)核發(fā)送請求以便運(yùn)行程序的界面系統(tǒng)級程序
2 Shell的分類
Bourne Shell:從1979年起Unix就開始使用Bourne Shell,Bourne Shell的主文件名為sh
C Shell :主要在BSD版的Unix系統(tǒng)中使用,其語法和C語言相似而得名
Shell的兩種主要語法類型有Bourne 和C ,這兩種語法彼此不兼容,Bourne家族主要包括sh,ksh,Bash,psh,zsh,C家族主要包括csh,tcsh
Bash與sh兼容,現(xiàn)在使用的Linux就是使用Bash作為用戶的基本Shell
Linux支持的Shell我們可以通過查看/etc/shells文件進(jìn)行查看
二 腳本執(zhí)行方式
echo 輸出命令
echo 選項(xiàng) 輸出內(nèi)容
-e 支持反斜杠控制的字符轉(zhuǎn)換
好了,下面來寫我們的第一個shell腳本
三 Bash的基本功能
1 歷史命令與命令補(bǔ)全
history 這個命令可以查看用戶敲的歷史命令,注意,這里只是緩存
歷史命令默認(rèn)會是1000條,可以在/etc/profile中進(jìn)行修改
在Bash中,命令與文件補(bǔ)全是非常方便與常用的功能,我們只需要在輸入命令或文件時,按TAB鍵就會自動補(bǔ)全,如果遇到多個文件匹配,按兩次TAB鍵,所有匹配的就都會顯示出來
2 命令別名與常用快捷鍵
我們可以用alias查看系統(tǒng)中已經(jīng)設(shè)定了哪些別名
Bash常用快捷鍵
3 輸入輸出重定向
標(biāo)準(zhǔn)輸入輸出
設(shè)備 設(shè)備文件名 文件描述符 類型
鍵盤 /dev/stdin 0 標(biāo)準(zhǔn)輸入
顯示器 /dev/stdout 1 標(biāo)準(zhǔn)輸出
顯示器 /dev/stderr 2 標(biāo)準(zhǔn)錯誤輸出
輸出重定向
類型 符號 作用
標(biāo)準(zhǔn)輸出重定向 命令 > 文件 以覆蓋的方式把命令的正確輸出輸出到指定文件或設(shè)備中
命令 >> 文件 以追加的方式把命令的正確輸出輸出到指定文件或設(shè)備中
舉個例子 ls > abc 把ls的輸出結(jié)果保存到abc這個文件中
標(biāo)準(zhǔn)錯誤輸出重定向 錯誤命令 2> 文件 以覆蓋的方式把命令的錯誤輸出輸出到指定文件或設(shè)備中
錯誤命令 2>> 文件 以追加的方式把命令的錯誤輸出輸出到指定文件或設(shè)備中
lsd 2> bcd
lsd 2>> bcd
正確輸出和錯誤輸出同時保存
命令 > 文件 2>&1 以覆蓋的方式把命令的正確輸出和錯誤輸出同時保存到文件中
命令 &> 文件 等同于命令 > 文件 2>&1
命令 &>> 文件 等同于命令 >> 文件 2>&1
命令 >>文件1 2>>文件2 把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中
輸入重定向
命令 < 文件 把文件作為命令的輸入
我們先說下wc命令
這個命令的意思是統(tǒng)計(jì)字節(jié)數(shù),單詞數(shù),行數(shù)
-c 統(tǒng)計(jì)字節(jié)數(shù) -w 統(tǒng)計(jì)單詞數(shù) -l統(tǒng)計(jì)行數(shù) 什么都不加就都統(tǒng)計(jì)
wc命令執(zhí)行后,隨便輸入,以Ctrl+Shift +D結(jié)束
命令<<標(biāo)示符
。。。
標(biāo)示符
把標(biāo)示符之間內(nèi)容作為輸入
4 多命令順序執(zhí)行與管道符
命令1;命令2 多個命令順序執(zhí)行,命令之間沒有任何邏輯關(guān)系
命令1&&命令2 邏輯與 當(dāng)命令1正確執(zhí)行,命令2才會執(zhí)行
當(dāng)命令1執(zhí)行不正確,命令2不會執(zhí)行
命令1 || 命令2 邏輯或 當(dāng)命令1執(zhí)行不正確,命令2才會執(zhí)行
當(dāng)命令1執(zhí)行正確,命令2不會執(zhí)行
來看一個經(jīng)常用到的例子
命令&& echo yes || echo no 這樣就可以判斷命令是否正確執(zhí)行
管道符
命令1 | 命令2
命令1的正確輸出作為命令2的操作對象
ll -a /etc/ | more
5 通配符和其他特殊符號
? 匹配一個任意字符
* 匹配0個或多個任意字符
[]匹配括號中的任意一個字符 [abc]代表或者是a,或者是b,或者是c
[-]匹配括號中的任意一個字符,-代表范圍 [a-z] a到z的任意一個字符
[^] 邏輯非 [^0-9]匹配一個不是數(shù)字的字符
其他特殊符號
” 單引號 在單引號中的所有特殊字符,都沒有特殊含義
“”雙引號 在雙引號中的特殊字符,沒有特殊含義,但是””“‘”“\”例外,分別擁有調(diào)用變量的值,引用命令,轉(zhuǎn)義符的特殊含義 () 用來引用系統(tǒng)變量
“反引號 反引號括起來的內(nèi)容是系統(tǒng)命令,在Bash中會先執(zhí)行它,作用和()一樣,但是推薦使用 (),因?yàn)榉匆柸菀卓村e
先來看看單引號和雙引號的區(qū)別
反引號于$()
好了,Linux Shell基礎(chǔ),腳本執(zhí)行方式和Bash基本功能就總結(jié)到這里,如有問題,歡迎指正,謝謝。
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2016-11/137252.htm