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