用於打開或建立文檔,格式爲「vim [文件名]」。若是存在該文檔,則打開它;若不存在,則建立一個臨時輸入文檔。 html
命令模式:控制光標移動,可對文本進行復制、粘貼、刪除和查找等工做,vim命令執行後默認先到命令模式。linux
輸入模式:正常的文本錄入。正則表達式
末行模式:保存或退出文檔,以及設置編輯環境。shell
命令模式==》輸入模式 a、i、o(其中a鍵是在光標後一位切換到輸入模式;i鍵是在光標當前位置切換到輸入模式;o鍵是在光標的下面建立一個空行切換到輸入模式)編程
輸入模式==》命令模式 esc鍵vim
命令模式==》末行模式 :鍵數組
末行模式==》命令模式 esc鍵bash
dd 刪除(剪切)光標所在整行網絡
5dd 刪除(剪切)從光標處開始的5行編程語言
yy 複製光標所在整行
5yy 複製從光標處開始的5行
n 顯示搜索命令定位到的下一個字符串
N 顯示搜索命令定位到的上一個字符串
u 撤銷上一步操做
p 將以前刪除(dd)或複製(yy)過的數據粘貼到光標後面
:w 保存
:q 退出
:q! 強制退出(放棄對文檔的修改內容)
:wq! 強制保存退出
:set nu 顯示行號
:set nonu 不顯示行號
:命令 執行該命令
:整數 跳轉到該行
:s/one/two 將當前光標所在行的第一個one替換成two
:s/one/two/g 將當前光標所在行的全部one替換成two
:%s/one/two/g 將全文中的one替換成two
?字符串 在文本中從下至上搜索該字符串
/字符串 在文本中從上至下搜索該字符串
在Linux系統中一切皆是文件,所以配置網絡服務也就是編輯網卡配置文件。
Linux系統中,主機名大多保存在/etc/hostname文件中,網卡信息保存在/etc/sysconfig/network-scripts/中,RHEL7中,網卡配置文件名爲ifcfg-eno16777728
用於查看網絡配置信息
查看DNS:cat /etc/resolv.conf
查看GATEWAY:netstat -rn
命令行的#與$的區別:
#爲管理員(root)登陸,切換到$: su - username(不忽略空格)
$爲普通用戶登陸,切換到#:su - root (而後輸入root密碼)
用於測試網絡可否聯通,自己不會中止,需Ctrl+C中止
經常使用參數:
-c 規定嘗試次數
-i 定義每一個數據包的發送間隔
-W 定義等待超時時間
ping -c 3 -i 0.2 -W 3
Yum配置文件在/etc/yum.repos.d/,yum配置文件後綴名必須爲.repo
yum install httpd -y 檢查軟件倉庫是否可用
mount /dev/cdrom /media/cdrom 掛載
Yum配置文件註解:
[rhel-media] Yum軟件倉庫惟一標識符,避免與其餘倉庫衝突
name=liunxprobe Yum軟件倉庫的名稱描述,易於識別倉庫用處
baseurl=file:///media/cdrom/ 提供的方式包括:FTP(ftp://……)、HTTP(http://……)、本地(file:///……)
enabled=1 設置此源是否可用;1爲可用,0爲禁用
gpgcheck=1 設置此源是否校驗文件;1爲校驗,0爲不校驗
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release 若校驗開啓,需指定公鑰文件地址
1 % cd /etc/yum.repos.d/
2 % vim rhel7.repo
1 % mkdir -p /media/cdrom 2 % mount /dev/cdrom /media/cdrom 3 % vim /etc/fstab 4 #輸入/dev/cdrom /media/cdrom iso9660 defaults 0 0 5 % yum install httpd
shell腳本命令工做方式:
交互式(Interactive):用戶輸入一條命令就當即執行。
批處理(Batch):由用戶事先編寫好一個完整的Shell腳本,Shell會一次性執行腳本中諸多命令。
腳本文件名稱通常加上.sh後綴
1 % vim example.sh 2 #!/bin/bash #腳本聲明,用來指定SHELL解釋器 3 #For Example BY liang #註釋信息,用於介紹腳本功能和命令 4 pwd 5 ls -al
方式一:
% bash example.sh
方式二:
1 % chomd u+x example.sh #增長執行權限
2 % ./example.sh
用戶可使用chmod指令去變動文件與目錄的權限,設置方式採用文字或數字代號皆可。符號鏈接的權限沒法變動,若是用戶對符號鏈接修改權限,其改變會做用在被鏈接的原始文件。格式爲
chmod(選項)(參數)
權限範圍的表示法以下:
u
User,即文件或目錄的擁有者; g
Group,即文件或目錄的所屬羣組; o
Other,除了文件或目錄擁有者或所屬羣組以外,其餘用戶皆屬於這個範圍; a
All,即所有的用戶,包含擁有者,所屬羣組以及其餘用戶;
r
讀取權限,數字代號爲「4」;
w 寫入權限,數字代號爲「2」; x
執行或切換權限,數字代號爲「1」; -
不具任何權限,數字代號爲「0」; s
特殊功能說明:變動文件或目錄的權限。
% ./example.sh one two three four five six
$0 當前Shell腳本程序名稱
$# 總共有幾個參數
$* 全部位置的參數值
$? 顯示上一次命令的執行返回值
$N 第N個位置的參數值
Shell腳本中的條件測試語法能夠判斷表達式是否成立,若成立則返回0,不然返回其餘隨機數值(具體值因版本不一樣而不一樣,RHEL7爲1)
條件表達式兩邊均要有一個空格
% [ -d /etc/fstab ]
% echo $?
#輸出1
條件測試語句分爲4種:文件測試語句、邏輯測試語句、整數值比較語句、字符串比較語句
經常使用參數:
-d 測試文件是否爲目錄類型
-e 測試文件是否存在
-f 判斷是否爲通常文件
-r 測試當前用戶是否有權限讀取
-w 測試當前用戶是否有權限寫入
-x 測試當前用戶是否有權限執行
1 % [ -f /etc/fstab ]
2 % echo $?
3 #輸出0
與(&&)、或(||)、非(!)
與(&&) 當前面的命令執行成功後纔會執行它後面的命令
% [ -e /dev/cdrom ] && echo "Exist"
或(||) 當前面的命令執行失敗時纔會執行它後面的命令
% [ $USER=root ] || echo "user"
非(!) 把條件測試中的判斷結果取反值。
% [ ! $USER=root ] || echo "Administrator" #判斷當前用戶是否爲管理員
邏輯命令運用
% [ ! $USER=root ] && echo "user" || echo "root" #判斷當前用戶是管理員仍是普通用戶
運算符
-eq 是否等於
-ne 是否不等於
-gt 是否大於
-lt 是否小於
-le 是否小於等於
-ge 是否大於等於
awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據能夠來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更可能是做爲腳原本使用。awk有不少內建的功能,好比數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優點。
詳解見https://www.cnblogs.com/quincyhu/p/5884390.html
% FreeMem=`free -m | grep Mem: | awk 'print $4'` #輸出剩餘內存量,$4第四列
判斷內存可用量的值是否小於1024,小於則提示內存不足
% [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
運算符
= 比較字符串內容是否相同
!= 比較字符串內容是否不一樣
-z 判斷字符串內容是否爲空(某個變量是否未被定義)
% [ $LANG != "en.US" ] && echo "Not en.US"
單分支: if 條件測試操做
then 命令序列
fi
1 % vim mkcdrom.sh 2 #!/bin/bash 3 DIR="/media/cdrom" 4 if [ ! -e $DIR ] 5 then 6 mkdir -p $DIR 7 fi
雙分支: if 條件測試操做
then 命令序列1
else 命令序列2
fi
1 % vim chkhost.sh 2 #!/bin/bash 3 ping -c 3 -i 0.2 -W 3 $1 &> /dev/null #/dev/null爲linux系統的黑洞文件,若只要命令結果而不想向屏幕輸出可用此方式,保持屏幕清潔 4 if [ $? -eq 0 ] #上一行命令執行成功返回0,不然返回1 5 then 6 echo "Host $1 is On-line." 7 else 8 echo "Host $1 is Off-line." 9 fi
多分支: if 條件測試操做1
then 命令序列1
elif 條件測試操做2(可加多個elif)
then 命令序列2
else 命令序列3
fi
1 % vim chkscore.sh 2 #!/bin/bash 3 read -p "Enter your score (0-100):" GRADE 4 if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then 5 echo "$GRADE is Excellent" 6 elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then 7 echo "$GRADE is Pass" 8 elif [ $GRADE -le 69 ] : then 9 echo "$GRADE is Fail" 10 else 11 echo "Your score is illegal!" 12 fi
用來讀取用戶輸入信息,可以把接收到的用戶輸入信息賦值給後面的指定變量,-p參數用於向用戶顯示必定的提示信息。
for條件循環語句容許腳本一次性讀取多個信息,而後逐一對信息進行操做處理,當要處理的數據有範圍時,最適合用此語句。
for 變量名 in 取值列表
do
命令序列
done
批量建立用戶腳本:
1 % vim users.txt 2 andy 3 barry 4 carl 5 duke 6 eric 7 george 8 9 %vim Example.sh 10 #!/bin/bash 11 read -p "Enter The Users Password: " PASSWD 12 for UNAME in `cat users.txt` 13 do 14 id $UNAME &> /dev/null 15 if [ $? -eq 0 ] 16 then 17 echo "Already exists" 18 else 19 useradd $UNAME &> /dev/null 20 echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null 21 if [ $? -eq 0 ] 22 then 23 echo "$UNAME , Create success" 24 else 25 echo "$UNAME , Create failture" 26 fi 27 fi 28 done
用於查看用戶信息,執行成功說明用戶存在,格式「id [-gGnru][--help][--version][用戶名稱]」
用於建立新用戶,格式「useradd(選項)(參數)」
用於設置/修改用戶密碼,格式「passwd [options] [LOGIN]」
while語句經過判斷條件測試的真假來決定是否繼續執行命令。
while 條件測試操做
do
命令序列
done
expr命令是一款表達式計算工具,使用它完成表達式的求值操做。格式「expr(選項)(參數)」
經常使用運算符
exit命令同於退出shell,並返回給定值。在shell腳本中能夠終止當前腳本執行。執行exit可以使shell以指定的狀態值退出。若不設置狀態值參數,則shell以預設值退出。狀態值0表明執行成功,其餘值表明執行失敗。格式「exit(參數)」
let命令是bash中用於計算的工具,提供經常使用運算符還提供了方冪**
運算符。在變量的房屋計算中不須要加上$
來表示變量,若是表達式的值是非0,那麼返回的狀態值是0;不然,返回的狀態值是1。格式爲「let arg [arg ...] #arg表明運算式」
自加操做let no++
自減操做let no--
簡寫形式let no+=10
,let no-=20
,分別等同於let no=no+10,
let no=no-20
例:猜商品價格
1 % vim Guess.sh 2 #!/bin/bash 3 PRICE=$(expr $RANDOM % 1000) 4 TIMES=0 5 echo "商品實際價格爲0-999之間,猜猜看是多少?" 6 while true 7 do 8 read -p 「請輸入您猜想的價格:」 INT 9 let TIMES++ 10 if [ $INT -eq $PRICE] ; then 11 echo "恭喜您答對了,實際價格是$PRICE" 12 echo "您總共猜了$TIMES次" 13 exit 0 14 elif [ $INT -gt $PRICE ] ; then 15 echo "過高了" 16 else 17 echo 「過低了」 18 fi 19 done
case語句是在多個範圍內匹配數據,若匹配成功則執行相關命令並結束整個條件測試;若是數據不在所列出的範圍內,則會去執行星號(*)中所定義的默認命令。
case 變量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
*)
默認命令序列
esac
1 % vim Checkkeys.sh 2 #!/bin/bash 3 read -p "請輸入一個字符,並按Enter確認:" KEY 4 case 「$KEY」 in 5 [a-z]|[A-Z]) 6 echo "您輸入的是字母。" 7 ;; 8 [0-9]) 9 echo "您輸入的是數字。" 10 ;; 11 *) 12 echo "您輸入的是空格、功能鍵或其餘控制字符。" 13 esac
計劃任務分爲一次性計劃任務與長期性計劃任務。
實現一次性計劃任務,格式「at [時間]」,參數-l用於查看任務
刪除一次性計劃任務,格式「atrm [任務序號]」
% echo "systemctl restart httpd" | at 23:30 #時間只能到分
crond服務
crontab -e 建立/編輯計劃任務
crontab -l 查看當前計劃任務
crontab -r 刪除某條計劃任務
crontab -u (需root權限)編輯他人的計劃任務
參數設置順序:分、時、日、月、星期 命令,若是有些字段沒有設置需用星號(*)佔位。計劃任務也可加註釋信息,計劃任務中的「分」字段必須有數值,絕對不能爲空或者是星號(*),而「日」和「星期」字段不能同時使用,不然就會發生衝突。
例:周1、3、五凌晨3點25,把網站數據進行備份
% crontab -e
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
除了用逗號(,)分別表示多個時間段,還可用減號(-)來表示一段連續的時間週期,以及用除號(/)表示執行任務的時間間隔(*/2表示每2分鐘執行一次任務),若是在crond服務中須要同時包含多條計劃任務的命令語句,應每行僅寫一條。在crond服務的計劃任務參數中,全部命令必定要用絕對路徑的方式來寫。
用於查詢命令的絕對路徑。