系统服务及shell编程
?
防火墻(ufw)
-
說明:簡單版本的防火墻,底層依賴于iptables。
-
安裝:sudo apt-get install ufw
-
查看狀態(tài):sudo ufw status
-
開啟/關(guān)閉:sudo ufw enable|disable
-
默認(rèn)允許/禁止:sudo ufw default allow|deny
-
允許/禁止:sudo ufw allow|deny 服務(wù)|port,如:sudo ufw deny ssh
-
移除規(guī)則:sudo ufw delete deny ssh
管道及xargs
-
|:管道,將前面命令的輸出作為后面命令的輸入?yún)?shù),如:ls /bin | grep '^m'
-
xargs:有些命令無法接收管道參數(shù),可以通過xargs解決,如:find -name 1.sh | xargs rm -rf
重定向
-
三個(gè)數(shù)據(jù)流:標(biāo)準(zhǔn)輸入(stdin)、標(biāo)準(zhǔn)輸出(stdout)、標(biāo)準(zhǔn)錯(cuò)誤(stderr)
-
在linux,啟動(dòng)任意的進(jìn)程,系統(tǒng)會(huì)自動(dòng)創(chuàng)建上面三個(gè)數(shù)據(jù)流,其實(shí)就是三個(gè)文件
-
三個(gè)文件的描述符分別是:0、1、2,都指向了終端
-
重定向就是改變?cè)瓉淼谋憩F(xiàn)位置。
-
輸出重定向:
ls > 1.txt # 將ls的輸出結(jié)果保存到1.txt文件中,會(huì)新建文件1.txt,若文件存在則會(huì)清空
ls >> 1.txt # 將ls的輸出結(jié)果追加到1.txt文件中,文件不存在也會(huì)創(chuàng)建
錯(cuò)誤重定向:
ls /xxx 2> 2.txt # 將錯(cuò)誤信息保存到2.txt
同時(shí)重定向輸出和錯(cuò)誤:
ls /xxx /home &> 3.txt # 同時(shí)將錯(cuò)誤和輸出保存到3.txt文件中
shell簡介
-
什么是shell編程?
-
將終端下編寫的命令等保存到文件中,就稱為shell編程。
-
-
shell類型?
-
ash、bash、csh、ksh
-
查看系統(tǒng)shell解析器:echo $SHELL
-
當(dāng)前系統(tǒng)可以shell解析器:/etc/shells文件
-
-
shell腳本的執(zhí)行
-
指定shell解析器執(zhí)行指定腳本:bash hello.sh,不需要添加可執(zhí)行權(quán)限
-
將shell腳本作為可執(zhí)行文件執(zhí)行,必須添加可執(zhí)行權(quán)限
-
添加可執(zhí)行權(quán)限:sudo chmod +x world.sh
-
在腳本開頭指定shell解析器:#! /bin/bash,其他位置的#表示注釋
-
執(zhí)行腳本:
-
在當(dāng)前目錄:./world.sh
-
不在當(dāng)前目錄:/home/jerry/shell/world.sh
-
-
-
shell變量
-
變量定義:name='dahua','='兩邊不能有空格
-
打印變量:echo $name 或 echo ${name}
-
銷毀變量:unset name,之后就不能再使用
-
聲明常量:readonly name='dahua'
-
使用說明:'='兩邊不能有空格,只讀變量不能修改
變量分類
-
本地變量:只適用于當(dāng)前shell的變量
-
環(huán)境變量:適用于整個(gè)系統(tǒng),通常都是純大寫的
-
查看系統(tǒng)環(huán)境變量:env
-
查看指定環(huán)境變量:echo $PATH
-
若想在任意位置都可執(zhí)行指定程序,可以將程序所在的路徑添加到環(huán)境變量PATH。
-
修改:
-
單次:export PATH=$PATH:/home/jerry/shell
-
永久:
-
系統(tǒng):/etc/profile
-
用戶:~/.profile、~/.bashrc、~/.bash_profile
-
把導(dǎo)出的語句添加到文件末尾即可
-
使文件生效:重啟終端 或 source ~/.bashrc
-
-
-
-
位置變量:
-
$0:執(zhí)行腳本的名字
-
$1 ~ $9:傳遞給腳本的參數(shù)
-
-
特殊變量:
-
$#:傳遞給腳本的參數(shù)個(gè)數(shù)
-
$*:傳遞給腳本的所有參數(shù)
-
$?:上次命令的執(zhí)行情況,0表示正確,其他表示錯(cuò)誤
-
字符串類型
-
單引號(hào):其中的字符都會(huì)原樣輸出,不會(huì)被解析
-
雙引號(hào):可以放除了$、`、\、"以外任意字符,其中的變量等會(huì)被解析
-
反引號(hào):將其中的內(nèi)容作為命令執(zhí)行,如:
echo `date` -
'':轉(zhuǎn)義特定的字符,如:$、*、\、?、|、`、^、&
-
字符串長度:${#name}
-
字符串提取:${name:2:3},從變量name中下表為2的地方提取3個(gè)字符
數(shù)組類型
-
定義:a=(1 2 3)
-
成員訪問:echo ${a[2]}
-
個(gè)數(shù)統(tǒng)計(jì):echo ${#a[@]}
-
所有元素:echo ${a[*]}
seq
-
說明:生成指定范圍的連續(xù)整數(shù)
-
示例:seq 10,生成1~10的連續(xù)整數(shù),seq 2 10,生成2~10的連續(xù)整數(shù)
expr
-
說明:運(yùn)算一個(gè)表達(dá)式
-
示例:
expr 2 + 3 結(jié)果為5
echo `expr 3 + 5` 結(jié)果會(huì)打印8
expr 3 \* 5 結(jié)果為15,*需要轉(zhuǎn)義
各種運(yùn)算
-
test命令:成功為真,失敗為假。
-
數(shù)值比較運(yùn)算
-
-lt:小于
-
-le:小于等于
-
-gt:大于
-
-ge:大于等于
-
-eq:等于
-
-ne:不等于
-
-
字符串測(cè)試
-
=:相等
-
!=:不相等
-
-z:字符串的長度是否為0
-
-n:字符串的長度是否不為0
-
-
文件判斷
-
-f:普通文件
-
-d:目錄文件
-
-c:字符設(shè)備文件
-
-b:塊設(shè)備文件
-
-w:是否可寫
-
-x:是否可執(zhí)行
-
-s:文件存在,并且至少有一個(gè)字符
-
-
邏輯運(yùn)算
-
-a:邏輯與(and),也可以使用&&來代替
-
-o:邏輯或(or),也可以使用||來代替
-
!:邏輯非
-
示例:
-
分支結(jié)構(gòu)
-
if-elif-else:
-
case:
循環(huán)結(jié)構(gòu)
-
for-in 及 for
-
while
-
until:條件成立,循環(huán)停止
-
break、continue自行學(xué)習(xí)
函數(shù)使用
- demo(){
?echo 'for func'
}
? ?
demo
arg(){ echo ?2 echo ?# return 250 }
arg abc def
$?表示函數(shù)的返回值
echo $?
??
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/542684416-qq/p/9897136.html
總結(jié)
以上是生活随笔為你收集整理的系统服务及shell编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell脚本常用参数与格式
- 下一篇: 使用PLSQL客户端登录ORACLE时报