shell 編程:
shell 開頭必須指定bash:#!/bin/bash
shell 的執行方式:
1. ./1.sh 執行當前目錄下的1.sh,1.sh要是可執行文件
2. bash /usr/local/1.sh
定義變量 aa=’qqq’ =兩側不能有空格,使用變量 ${aa}
Shell特殊含義變量
$$ 取當前腳本的進程id,就是pid
$0 取當前文件名
$n n是大於0的數字,n是幾就是第幾個參數
$# 取參數的個數
$* 取所有參數
$? 取最有命令的退出狀態,0為沒錯誤
例如:
./1.sh a b c
Echo $$
Echo $0
Echo $1 ,$2
Echo $#
Echo $@
Echo $?
Shell 運算符 + - * % 加減乘除
Shell 變量運算 $(()) ,$((4-2)),$(($a-$b))
Shell 關系運算符
-eq等於判斷,相等返還true
-ne 不等於判斷,不相等返回true
-gt大於判斷,如果大於返回true
-lt小於判斷,小於返回true
-ge大於等於,返回true
-le 小於等於,返回true
Shell 布爾運算
!取反,[!false] =true
-o 或運算 , [$a –lt 20 –o $b –gt 100]
-a 與預算,[$a –lt 20 –a $b –gt 100]
Shell 字符串運算
== 判斷兩個字符串是否相等,相等返回true [$a ==$b]
!= 兩個字符串不相等,返回true [$a != $b]
-z 檢測字符串長度是否為0,是返回true [-z $a]
-n 檢測字符串長度是否不為0,不為0 返回true [-n $a]
Str檢測字符串是否為空,不為空返回true ,[$a]
Shell 文件測試運算符
-d file 檢測文件是否是目錄文件,是返回true,[-d file]
-f file 檢測文件是否普通文件,是返回true
-r file 檢測文件是否可讀,是返回true
-w file 檢測文件是否可修改
-x file 檢測文件是否可執行
-s file 檢測文件是否問空,文件大小大於0,不為空,返回true
-e file 檢測文件是否存在,包含目錄文件
Shell 單引號和雙引號的使用
‘’中不能包含單引號,單引號中的轉譯字符\和變量$字符會原樣輸出,無實際意義
“”中不能包含雙引號,雙引號在的轉譯字符\和變量$字符是有實際含量的,可轉譯后和取變量后輸出
Shell 常見通賠符
“*”匹配0或多個字符
?匹配任意一個字符,a?b可匹配acb ,不能匹配ab
A[xyz]b 可匹配 ab之間有x,y,z任何一個的字符串,有且只能有一個,0和多個都不行
A[!xyz]b 匹配 ab之間只能有一個,且非x,y,z中的數據,如abb
A[1-9] 匹配1-9的任意一個,如a1,a9
A{abc,123} 匹配列表中的任何一個,如aabc,a123
Shell 特殊字符
= 變量賦值 a=1
$ 取變量 $a
“>”輸出重定向 cat 1.txt 2.txt >3.txt,會覆蓋3.txt
“>>”輸出追加重定向 cat 1.txt 2.txt >> 3.txt ,追加到3.txt后
“<”輸入重定向
&后台運行命令
;命令分割符,允許一行寫多條命令
&&若前一條命令執行成功,繼續執行下一條命令
|| 前一條命令執行不成功,執行下一條命令
!4 執行history中的第4條命令
Shell數組操作
Array=(a1 a2 a3) 數組元素用空格分割,shell只支持1維數組
A[0]=1 ;A[1]=2 通過賦值的方式定義數組
數組的取值方式
${數組名[index]} 如 ${a[0]}
${a[*]},${a[@]} 獲取數組的所有元素
Len=${#a[*]} 獲取數組的長度
Shell 的if 判斷
格式:
If [條件成立]
Then
語句
Else
不成立執行語句
Fi
例:
#!/bin/bash
File=”/usr/local/1.sh”
If [-x $file]
Then
Echo $file
Else
Touch $file
Chmod +x $file
Fi
Shell 的 case esac判斷
格式:
Case 值 in
值1)
命令
;;;;同break,跳出語句
值2)
命令
;;
*)
命令
;;
Esac
例:
#/bin/bash
a=$1
Case $a in
r)
bash /usr/local/1.sh
;;
c)
touch /usr/local/2.sh
;;
d)
rm–rf /usr/local/2.sh
;;
*)
Bash /usr/local/1.sh
;;
Esac
Shell for 循環
格式:
For 變量 in 列表
Do
命令
命令
Done
例:用for和if,遍歷/root目錄下的所有文件,打印出來可執行的文件
#!/bin/bash
Path=’/root’
For file in $path/*
Do
If [-x $file –a –f $file] #file是可執行文件and file是普通文件
Then
Echo $file
Fi
done
shell while循環
格式:
while 條件
do
命令
done
shell中的函數
function 函數名()
{
命令
Return x
}
例:
#!/bin/bash
functionshowsh()
{
for file in $1/*.sh
do
echo $file
done
}
showsh $1
配置定時任務:
vi /etc/crontab 定時任務配置
crontab 文件配置 M H D m d cmd M 分鍾(0-59) H 小時(0-23) D 天(1-31)
m 月(1-12),d 一星期的天數(0-6,0位星期天)
*/5 * * * * sh /usr/locat/1.sh 沒隔5分鍾執行一次
30 21 * * * /usr/local/apache/bin/apachectl restart 每晚21:30重啟apache
軟件安裝:
rpm -ivh jdk.rmp 安裝jdk ,-i 安裝,-v 顯示安裝信息,-h 顯示安裝進度
rpm -e jdk.rpm 卸載jdk
rpm -qa 查詢已安裝的軟件包
yum install httpd 安裝apache
yum list|grep httpd 從yum列表查詢需要的包
yum update httpd 升級apache
yum list installed |grep httpd 查詢是否安裝了apache
yum remove mysql 卸載yum安裝的mysql
源碼安裝:
yum install gcc* gcc c++的編譯器
1.生成makefile 編譯文件
./configure 一般安裝包下都有一個configure 文件,用來生成makefile 編譯文件
./configure --prefix= /usr/local/apache --with= /aa/cc --prefix 指定安裝目錄,--with 指定倚賴文件目錄
2.make 編譯 makefile文件
make 也需要安裝,yum install make,makec,makeg
3.make install
make install 把編譯好的文件復制到--prefix 指定的目錄,如果未指定就是當前目錄
linux相關目錄文件存放內容:
bin 存放普通程序,所有用戶都可以用
boot 存放內核及啟動所需要的文件
dev 存放設備相關文件
etc 存放系統配置文件
home 存放用戶文件的主目錄
lib 存放啟動時的庫文件
mnt 存放臨時的映射文件,可以用來掛載usb
proc 存放當前系統狀態,進程
root 超級用戶主目錄
sbin 存放需要的系統管理程序
tmp 存放啟動產生的臨時文件
var 存放系統產生的經常變化的文件
系統cpu及內存的信息文件:
/proc/cpuinfo cpu信息
/proc/dma dma通道
/proc/filesystems 文件系統信息
/proc/interrupts 主機中段信息
/proc/ioports i/o 端口信息
/proc/meminfo 查看內存信息
/etc/passwd 用戶詳細信息