四天精通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 ...