Shell概述1、 Shell是什么 l Shell是一個命令行解釋器,它為用戶提供了一個向Linux內(nèi)核發(fā)送請求以便運(yùn)行程序的界面系統(tǒng)級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。 l Shell還是一個功能相當(dāng)強(qiáng)大的編程語言,易編寫,易調(diào)試,靈活性較強(qiáng)。Shell是解釋執(zhí)行的腳本語言,在Shell中可以直接調(diào)用Linux系統(tǒng)命令。 2、 Shell的分類 l Bourne Shell:從1979起Unix就開始使用Bourne Shell,Bourne Shell的主文件名為sh。 l C Shell: C Shell主要在BSD版的Unix系統(tǒng)中使用,其語法和C語言相類似而得名 l Shell的兩種主要語法類型有Bourne和C,這兩種語法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh l Bash: Bash與sh兼容,現(xiàn)在使用的Linux 就是使用Bash作為用戶的基本Shell。 3、 Linux支持的Shell l /etc/shells Shell腳本的執(zhí)行方式1、 echo輸出命令 [root@localhost ~]# echo [選項] [輸出內(nèi)容] 選項: -e: 支持反斜線控制的字符轉(zhuǎn)換 [root@localhost ~]# echo -e 'ab\bc' #刪除左側(cè)字符 [root@localhost ~]# echo -e 'a\tb\tc\nd\te\tf' #制表符與換行符 [root@localhost ~]# echo -e '\x61\t\x62\t\x63\n\x64\t\x65\t\x66' #按照十六進(jìn)制ASCII碼也同樣可以輸出 [root@localhost ~]# echo -e '\e[1;31m abcd \e[0m' #輸出顏色 #30m=黑色,31m=紅色,32m=綠色,33m=黃色 #34m=藍(lán)色,35m=洋紅,36m=青色,37m=白色 2、 第一個腳本 [root@localhost sh]# vi hello.sh #!/bin/Bash #The first program # Author: shenchao (E-mail: shenchao@lampbrother.net) echo -e 'Mr. Shen Chao is the most honest man in LampBrother' 3、 腳本執(zhí)行 l 賦予執(zhí)行權(quán)限,直接運(yùn)行 ? chmod 755 hello.sh ? ./hello.sh [t1] l 通過Bash調(diào)用執(zhí)行腳本 ? bash hello.sh ? sh hello.sh Bash的基本功能歷史命令與命令補(bǔ)全1、 歷史命令 [root@localhost ~]# history [選項] [歷史命令保存文件] 選項: -c: 清空歷史命令 -w: 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history l 歷史命令默認(rèn)會保存1000條,可以在環(huán)境變量配置文件/etc/profile中進(jìn)行修改 歷史命令的調(diào)用 l 使用上、下箭頭調(diào)用以前的歷史命令 l 使用“!n”重復(fù)執(zhí)行第n條歷史命令 l 使用“!!”重復(fù)執(zhí)行上一條命令 l 使用“!字串”重復(fù)執(zhí)行最后一條以該字串開頭的命令 2、 命令與文件補(bǔ)全 l 在Bash中,命令與文件補(bǔ)全是非常方便與常用的功能,我們只要在輸入命令或文件時,按“Tab”鍵就會自動進(jìn)行補(bǔ)全 命令別名與常用快捷鍵1、 命令別名 [root@localhost ~]# alias 別名='原命令' #設(shè)定命令別名 [root@localhost ~]# alias #查詢命令別名 命令執(zhí)行時順序 1 第一順位執(zhí)行用絕對路徑或相對路徑執(zhí)行的命令。 2 第二順位執(zhí)行別名。 3 第三順位執(zhí)行Bash的內(nèi)部命令。 4 第四順位執(zhí)行按照$PATH環(huán)境變量定義的目錄查找順序找到的第一個命令。 讓別名永久生效 [root@localhost ~]# vi /root/.bashrc 刪除別名 [root@localhost ~]# unalias 別名 2、 Bash常用快捷鍵 10.3.3 輸入輸出重定向1、 標(biāo)準(zhǔn)輸入輸出 2、 輸出重定向[t2] 3、 輸入重定向 [root@localhost ~]# wc [選項] [文件名] 選項: - c 統(tǒng)計字節(jié)數(shù) - w 統(tǒng)計單詞數(shù) - l 統(tǒng)計行數(shù) l 命令<文件 把文件作為命令的輸入 l 命令<< 標(biāo)識符 … 標(biāo)識符 把標(biāo)識符之間內(nèi)容作為命令的輸入 多命令順序執(zhí)行與管道符1、 多命令順序執(zhí)行 例子: [root@localhost ~]# ls ; date ; cd /user ; pwd [root@localhost ~]# dd if=輸入文件 of=輸出文件 bs=字節(jié)數(shù) count=個數(shù) 選項: if=輸入文件 指定源文件或源設(shè)備 of=輸出文件 指定目標(biāo)文件或目標(biāo)設(shè)備 bs=字節(jié)數(shù) 指定一次輸入/輸出多少字節(jié),即把這些字節(jié)看做一個數(shù)據(jù)塊 count=個數(shù) 指定輸入/輸出多少個數(shù)據(jù)塊 例子: [root@localhost ~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date [root@localhost ~]# ls anaconda-ks.cfg && echo yes [root@localhost ~]# ls /root/test || echo 'no [root@localhost ~]# 命令 && echo yes || echo no 2、 管道符 命令格式: [root@localhost ~]# 命令1 | 命令2 #命令1的正確輸出作為命令2的操作對象 顏色顯示 例子: [root@localhost ~]# ll -a /etc/ | more [root@localhost ~]# netstat -an | grep 'ESTABLISHED' [root@localhost ~]# grep [選項] '搜索內(nèi)容' 文件名 選項: -i: 忽略大小寫 -n: 輸出行號 -v: 反向查找 --color=auto 搜索出的關(guān)鍵字用顏色顯示 通配符與其他特殊符號1、通配符 [root@localhost ~]# cd /tmp/ [root@localhost tmp]# rm -rf * [root@localhost tmp]# touch abc [root@localhost tmp]# touch abcd [root@localhost tmp]# touch 012 [root@localhost tmp]# touch 0abc [root@localhost tmp]# ls ?abc [root@localhost tmp]# ls [0-9]* [root@localhost tmp]# ls [^0-9]* 3、 Bash中其他特殊符號 反引號與$() [root@localhost ~]# echo `ls` [root@localhost ~]# echo $(date) 單引號與雙引號 [root@localhost ~]# name=sc [root@localhost ~]# echo '$name' [root@localhost ~]# echo '$name' [root@localhost ~]# echo ‘$(date)' [root@localhost ~]# echo “$(date)' date與--之間有空格; +與%s之間不能有空格 groupdel改為gpasswd |
|