沈超 shell課件 四天精通shell程式設計(一)

2021-10-12 15:24:57 字數 3695 閱讀 9971

四天精通shell程式設計(一)

閱讀:981

沈超:微博:weibo.com/lampsc

一shell簡介

1概念命令直譯器

2常見shell

bash linux標準shell

附:她儲存在/etc/bash裡面,是乙個二進位制可執行檔案,所以不能直接:

vim/bin/bash會是亂碼

sh早期shell,較簡單

csh(unix預設的shell!)ksh tcsh unix shell

附:他們的大部分是相同的,但是也會有所區別,比如配置檔案的儲存位置

vi /etc/shells linux支援的shell

直接輸入csh並不報錯,因為他已經從bash切換到了csh

(返回exit)

3 shell指令碼

附:建立資料夾/檔案目錄:mkdirsh

linxu並不區分副檔名,這點與windows不同!

#!/bin/bash

例1:列印時間

#!/bin/bash

echo"hello world!"

指令碼執行方式:

1)賦予執行許可權(慣用法)

如:chmod755 hello.sh

路徑執行/root/shell/hello.sh#絕對路徑

./hello.sh #相對路徑

2)不賦予執行許可權

bash指令碼名

如:bashecho.sh

4 bash常見功能

1)歷史命令

預設儲存1000條歷史命令:

vi /etc/profile修改環境變數配置檔案,要生效,必須登出

histsize=1000修改預設歷史命令條數

history查詢系統歷史命令

歷史命令儲存檔案

~/.bash_history

history -w把記憶體中命令歷史,儲存入檔案

history -c清空所有的歷史命令

重複歷史命令

!n重複第n條命令

!str重複最後乙個以str開頭的命令

上箭頭呼叫上面的命令

2)別名

附:linux預設使用ls之後會以藍色顯示資料夾

但是也可以使用:ls-- color=never來取消顯示顏色

alias檢視系統中生效的別名

附:alias ls='ls --color=never'手工設定別名,臨時生效:相當與個人操作習慣

aliasls='ls –color=tty' #改回來了

vi ~/.bashrc寫入別名,永久生效#第二個環境變數配置檔案

5輸入輸出重定向

標準輸入/dev/stdin 0鍵盤

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

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

#裝置檔名#檔案描述符#預設裝置

1)輸出重定向

把應該輸出到螢幕的輸出,重定向到檔案。

>覆蓋

>>追加

ls > aa覆蓋到aa

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把標準錯誤重定向到標準正確輸出

6多命令順序執行

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

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

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

類test測試:

a)ls && echo "yes" || echo "no"

b)ls skdjfkdj && echo "yes" || echo "no"

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

7管道符:兩個命令之間有聯絡,

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

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

netstat-tlun | grep 80查詢監聽的埠號,並檢視80埠是否啟動。

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

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

80是apache的埠

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

ls-l /etc/ | grep vim

附:more分屏顯示檔案內容

二變數:linux將所有的變數都識別程字串型#應該是shell吧?idon『t know!

設定變數的目的:像程式指令碼中傳值。

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鍵下的那個

呼叫:echo$cc

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

9)環境變數一定設為大寫

4環境變數:

附:pstree:查詢程序樹

一般不要宣告環境變數

1)宣告

export變數名=變數值

export aa #變數已經存在的情況

2)檢視

set檢視所有變數

env或者export只能檢視環境變數,並且export能夠看清本質-_-

declare宣告變數型別的,如果不特別宣告,所有變數為字串型

-i宣告為int

-x宣告為環境變數

3)刪除

unset變數名

4)常見環境變數

echo$path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

系統查詢命令的路徑

path="$path":/root/shell在系統預設路徑後,追加/root/shell目錄作為命令查詢路徑

5)環境變數配置檔案

/etc/bashrc所有使用者生效

/etc/profile

~/.bashrc只對指定使用者生效

~/.bash_profile

四天精通shell程式設計(二)

二 變數5 位置引數變數 0 命令自己 1 第乙個引數 2 第二個引數 9 第九個引數例2 輸出位置引數變數,指令碼後要接引數 bin bash echo the command is 0 echo canshu1 is 1 echo canshu2 is 2 6 預定義變數 0 上乙個命令正確執行...

shell程式設計 四

linux中bash的變數值是以字串的形式儲存的,所以如果想當作數字使用的話需要進行轉換 前面已經用到了一些,但沒有系統的總結 此外,shell中所有的算術運算都被當作整數運算,所以在有浮點數參與時要特別處理 計算算式的值,使用shell變數的值的時候不用 bin bash x 5 y 6 let ...

shell程式設計筆記(四)

case語句 語法 case 字串 in 值1 值2 操作 值3 值4 操作 值5 值6 操作 操作 esac case的作用就是當字串與某個值相同是就執行那個值後面的操作。如果同乙個操作對於多個值,則使用 將各個值分開。在case的每乙個操作的最後面都有兩個 分號是必須的。例 case user ...