Shell概述1、 Shell是什么 l Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。 l Shell還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強。Shell是解釋執行的腳本語言,在Shell中可以直接調用Linux系統命令。 2、 Shell的分類 l Bourne Shell:從1979起Unix就開始使用Bourne Shell,Bourne Shell的主文件名為sh。 l C Shell: C Shell主要在BSD版的Unix系統中使用,其語法和C語言相類似而得名 l Shell的兩種主要語法類型有Bourne和C,這兩種語法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh l Bash: Bash與sh兼容,現在使用的Linux 就是使用Bash作為用戶的基本Shell。 3、 Linux支持的Shell l /etc/shells Shell腳本的執行方式1、 echo輸出命令 [root@localhost ~]# echo [選項] [輸出內容] 選項: -e: 支持反斜線控制的字符轉換 [root@localhost ~]# echo -e 'ab\bc' #刪除左側字符 [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' #按照十六進制ASCII碼也同樣可以輸出 [root@localhost ~]# echo -e '\e[1;31m abcd \e[0m' #輸出顏色 #30m=黑色,31m=紅色,32m=綠色,33m=黃色 #34m=藍色,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、 腳本執行 l 賦予執行權限,直接運行 ? chmod 755 hello.sh ? ./hello.sh [t1] l 通過Bash調用執行腳本 ? bash hello.sh ? sh hello.sh Bash的基本功能歷史命令與命令補全1、 歷史命令 [root@localhost ~]# history [選項] [歷史命令保存文件] 選項: -c: 清空歷史命令 -w: 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history l 歷史命令默認會保存1000條,可以在環境變量配置文件/etc/profile中進行修改 歷史命令的調用 l 使用上、下箭頭調用以前的歷史命令 l 使用“!n”重復執行第n條歷史命令 l 使用“!!”重復執行上一條命令 l 使用“!字串”重復執行最后一條以該字串開頭的命令 2、 命令與文件補全 l 在Bash中,命令與文件補全是非常方便與常用的功能,我們只要在輸入命令或文件時,按“Tab”鍵就會自動進行補全 命令別名與常用快捷鍵1、 命令別名 [root@localhost ~]# alias 別名='原命令' #設定命令別名 [root@localhost ~]# alias #查詢命令別名 命令執行時順序 1 第一順位執行用絕對路徑或相對路徑執行的命令。 2 第二順位執行別名。 3 第三順位執行Bash的內部命令。 4 第四順位執行按照$PATH環境變量定義的目錄查找順序找到的第一個命令。 讓別名永久生效 [root@localhost ~]# vi /root/.bashrc 刪除別名 [root@localhost ~]# unalias 別名 2、 Bash常用快捷鍵 10.3.3 輸入輸出重定向1、 標準輸入輸出 2、 輸出重定向[t2] 3、 輸入重定向 [root@localhost ~]# wc [選項] [文件名] 選項: - c 統計字節數 - w 統計單詞數 - l 統計行數 l 命令<文件 把文件作為命令的輸入 l 命令<< 標識符 … 標識符 把標識符之間內容作為命令的輸入 多命令順序執行與管道符1、 多命令順序執行 例子: [root@localhost ~]# ls ; date ; cd /user ; pwd [root@localhost ~]# dd if=輸入文件 of=輸出文件 bs=字節數 count=個數 選項: if=輸入文件 指定源文件或源設備 of=輸出文件 指定目標文件或目標設備 bs=字節數 指定一次輸入/輸出多少字節,即把這些字節看做一個數據塊 count=個數 指定輸入/輸出多少個數據塊 例子: [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 [選項] '搜索內容' 文件名 選項: -i: 忽略大小寫 -n: 輸出行號 -v: 反向查找 --color=auto 搜索出的關鍵字用顏色顯示 通配符與其他特殊符號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 ![]() |
|