10分鐘精通shell編程!

10分鐘精通shell編程!


一、輸入輸出重定向

標準輸入 /dev/stdin  0 鍵盤

標準輸出 /dev/stdout 1 顯示器

標準錯誤輸出 /dev/stderr 2 顯示器

#設備文件名 #文件描述符 #默認設備

1)輸出重定向

把應該輸出到屏幕的輸出,重定向到文件。

覆蓋                  >> 追加

ls > aa 覆蓋到a           ls >> aa 追加到aa

ls gdlslga 2>>aa 錯誤信息輸出到aa 強調:錯誤輸出,不能有空格

ls &>aa 錯誤和正確都輸入到aa

掌握(查看系統版本:uname -r

ls >> aa 2>>bb 正確信息輸入aa,錯誤信息輸入bb

ls >> aa 2>&1 錯誤和正確都輸入到aa,可以追加

2>&1 把標準錯誤重定向到標準正確輸出

二、多命令順序執行

1)命令; 命令2;命令命令123順序執行。之間沒有任何關係如:cd;ls ;date #date 用於打印當前系統時間

2)命令1 && 命令命令1正確執行後,命令2纔會執行

3)命令1 || 命令命令1執行不正確,命令2纔會執行,也就是說:如果第一個命令正確執行,那麼第二個命令就不會執行了!

test測試

a)ls && echo "Yes" || echo "No"

b)ls skdjfkdj && echo "Yes" || echo "No"

lsaa && echo "cunzai" || echo "bu cunzai!" 執行ls aa,判斷如果正確,輸出“存在”。如果不存在,輸出“不存在”

三、管道符:兩個命令之間有聯繫,

命令1 | 命令命令1的執行結果,作爲命令2的執行條件

注意:第一條命令一定得有輸出

netstat-tlun | grep 80 查詢監聽的端口號,並查看80端口是否啓動。

附:netstat-tlun列出監聽了多少個端口;

grep提取命令,如 grep80 #提取包含有80的行

80Apache的端口

ls -l /etc/ | more 分屏顯示ls內容

ls-l /etc/ | grep vim


四、變量:

Linux的Shell將所有的變量都識別程字符串型

設置變量的目的:像程序腳本中傳值。

1分類

本地變量、環境變量、位置參數變量、預定義變量


2本地變量

1)聲明 變量名=變量值 注意:=號左右不能有空格 aa=123

2)調用               echo $變量名

3)查看變量             set 查看所有變量,包括環境變量和本地變量

4)刪除                unset 變量名


3變量設定規則

1)變量以等號連接值,等號不能有空格

2)變量名由數字和字母和下劃線組成,不能以數字開頭

3)變量值中有空格,用引號括起來如:aa=”helloworld” #其中不能有符號!!!

4雙引號內,有特殊字符。如$

5單引號中特殊字符無含義

6)在變量值中,可以使用\轉義符

7)變量值可以直接調用系統命令。 `命令` $(命令)

cc=`ls/dev` # ` 是反引號,Esc鍵下的那個

或者:cc=$(ls/dev) 作用相同,推薦!

調用:echo$cc

8)變量值可以累加 aa=123 aa="$aa"456 echo $aa --->123456

9)環境變量一定設爲大寫


環境變量配置文件

/etc/bashrc 所有用戶生效

/etc/profile

~/.bashrc只對指定用戶生效

~/.bash_profile


五、位置參數變量

$0 命令自己

$1 第一個參數

$2 第二個參數

$9 第九個參數

$? 上一個命令的返回值:上一個命令正確執行;非上一個命令不正確

$# 統計命令之後的參數個數   $* 返回所有參數   $n 位置參數變量


六、常見命令  常用命令


行提取命令grep

選項: -v 反向選擇

-n 提取時,顯示行號


舉例:

grep "[^a-z]hen" test.txt

oo前不是小寫字母的行匹配。 注意:和開頭沒有關係

附:也可以結合以前的內容:grep-n "[^a-z]hen" test_rule.txt

中括號代表一個字母,^代表取反,a-z代表小寫字母az


grep “\.$” test.txt

匹配以.結尾的行

附:在正則表達式中$代表行尾;

代表轉義符,表示,將其後緊跟字符的特殊含義消失!

Linux中行尾的空格附,也可以作爲一個字符,一定要記住!這是一些腳本發生錯誤的原因!

grep "^[^A-Za-z]" test.txt

匹配不以字母開頭的行 注意:所有字母不能這樣寫 A-z

附:

^在中括號外面代表行首

grep"^[^a-zA-Z]" test_rule.txt #這樣也可以


grep “^$” test.txt

匹配空白行


grep "oo*" test.txt

匹配最少一個o

附:o*代表着*前面的這個o可以重複0到無數多次

還可以這樣用:grep"hh*o" test_rule.txt

這樣: grep"ooo" test_rule.txt


echo命令

echo -e “輸出內容”

-e 識別格式化打印內容


echo -e “1\t2\t3” 打印tab


echo -e "\e[1;31m this is red text \e[0m" 輸出紅色字體

\e[ 格式標誌

1;31m 指定顏色 #3039之間的數字

0m 恢復顏色(重置)

附:30m=黑色,31m=紅色,32m=綠色,33m=黃色,34m=藍色,35m=洋紅, 36m=青色,37=白色


echo -e “\e[1;42 background \e[0m”



判斷字符串


[-z 字符串判斷字符串是否爲空,變量值沒有內容/爲空則是真




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章