4.1 Vim文本編輯器
指令模式:控制光标移動,可對文本進行複制、粘貼、删除和查找等工作。
輸入模式:正常的文本錄入。(a鍵與i鍵分别是在光标後面一位和光标目前位置切換到輸入模式,而o鍵則是在光标的下面再建立一個空行)
末行模式:儲存或退出文檔,以及設定編輯環境。
标題Vim編輯器模式的切換方法
指令 | 作用 |
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 |
?字元串 | 在文本中從下至上搜尋該字元串 |
/字元串 | 在文本中從上至下搜尋該字元串 |
4.1.1配置主機名稱
[[email protected] ~]# vim /etc/hostname [[email protected] ~]# hostname
需要使用:wq!指令才能儲存并退出文檔。
4.1.2 配置網卡資訊
在RHEL 5、RHEL 6中,網卡配置檔案的字首為eth,第1塊網卡為eth0,第2塊網卡為eth1;以此類推。而在RHEL 7中,網卡配置檔案的字首則以ifcfg開始,加上網卡名稱共同組成了網卡配置檔案的名字,例如ifcfg-eno16777736。
/etc/sysconfig/network-scripts目錄中(存放着網卡的配置檔案)。
[[email protected] network-scripts]# systemctl restart network
4.1.3 配置Yum倉庫 (本地安裝軟體)
Yum軟體倉庫的作用是為了進一步簡化RPM管理軟體的難度以及自動分析所需軟體包及其依賴關系的技術。可以把Yum想象成是一個碩大的軟體倉庫,裡面儲存有幾乎所有常用的工具,而且隻需要說出所需的軟體包名稱,系統就會自動為您搞定一切。
第1步:進入到/etc/yum.repos.d/目錄中(因為該目錄存放着Yum軟體倉庫的配置檔案)。
第2步:使用Vim編輯器建立一個名為rhel7.repo的新配置檔案(檔案名稱可随意,但字尾必須為.repo)。
第3步:按配置參數的路徑挂載CD光牒,并把CD光牒挂載資訊寫入到/etc/fstab檔案中。
[[email protected] yum.repos.d]# vim rhel7.repo [rhel7] name=rhel7 baseurl=file:///media/cdrom enabled=1 gpgcheck=0
[rhel-media] :Yum軟體倉庫唯一辨別符,避免與其他倉庫沖突。
name=linuxprobe: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:若上面參數開啟校驗,那麼請指定公鑰檔案位址。
4.2 編寫Shell腳本
4.2.1 編寫簡單的腳本
[[email protected] ~]# vim example.sh #!/bin/bash #For Example BY linuxprobe.com pwd ls -al
[[email protected] ~]# bash example.sh
[[email protected] ~]# bash example.sh
第一行的腳本聲明(#!)用來告訴系統使用哪種Shell解釋器來執行該腳本;第二行的注釋資訊(#)是對腳本功能和某些指令的介紹資訊。
4.2.2 接收使用者的參數
$0對應的是目前Shell腳本程式的名稱,$#對應的是總共有幾個參數,$*對應的是所有位置的參數值,$?對應的是顯示上一次指令的執行傳回值,而$1、$2、$3……則分别對應着第N個位置的參數值,如圖4-15所示。
4.2.3 判斷使用者的參數
條件測試語句的執行格式題
條件測試語句可以分為4種:檔案測試語句;邏輯測試語句;整數值比較語句;字元串比較語句。
操作符 | 作用 |
-d | 測試檔案是否為目錄類型 |
-e | 測試檔案是否存在 |
-f | 判斷是否為一般檔案 |
-r | 測試目前使用者是否有權限讀取 |
-w | 測試目前使用者是否有權限寫入 |
-x | 測試目前使用者是否有權限執行 |
[[email protected] ~]$ [ $USER = root ] || echo "user" [[email protected] ~]# [ $USER != root ] && echo "user" || echo "root"
操作符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
[[email protected] ~]# free -m | grep Mem: | awk '{print $4}' [[email protected] ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
操作符 | 作用 |
= | 比較字元串内容是否相同 |
!= | 比較字元串内容是否不同 |
-z | 判斷字元串内容是否為空 |
4.3 流程控制語句
4.3.1 if條件測試語句
多分支的if條件語句
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
為了避免使用者等待時間過長,需要通過-c參數來規定嘗試的次數,并使用-i參數定義每個資料包的發送間隔,以及使用-W參數定義等待逾時時間。
4.3.2 for條件循環語句
for循環語句允許腳本一次性讀取多個資訊,然後逐一對資訊進行操作處理,當要處理的資料有範圍時,使用for循環語句再适合不過了。
for循環語句的文法格式
read -p "Enter your score(0-100):" GRADE for UNAME in `cat users.txt`
HLIST=$(cat ~/ipadds.txt) for IP in $HLIST
在腳本中使用read指令讀取使用者輸入的密碼值,然後指派給PASSWD變量,并通過-p參數向使用者顯示一段提示資訊。
4.3.3 while條件循環語句
while循環語句的文法格式
#!/bin/bash PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品實際價格為0-999之間,猜猜看是多少?" while true do read -p "請輸入您猜測的價格數目:" INT let TIMES++ if [ $INT -eq $PRICE ] ; then echo "恭喜您答對了,實際價格是 $PRICE" echo "您總共猜測了 $TIMES 次" exit 0 elif [ $INT -gt $PRICE ] ; then echo "太高了!" else echo "太低了!" fi done
$RANDOM變量來調取出一個随機的數值(範圍為0~32767),将這個随機數對1000進行取餘操作,并使用expr指令取得其結果。
4.3.4 case條件測試語句
case條件測試語句的文法結構
4.4 計劃任務服務程式
顧名思義,一次性計劃任務隻執行一次,一般用于滿足臨時的工作需求。我們可以用at指令實作這種功能
[[email protected] ~]# at 23:30 at > systemctl restart httpd at > 此處請同時按下Ctrl+d來結束編寫計劃任務
[[email protected] ~]# echo "systemctl restart httpd" | at 23:30
[[email protected] ~]# at -l (會列出序号,可用于下面的删除指令)
[[email protected] ~]# atrm 3
如果我們希望Linux系統能夠周期性地、有規律地執行某些具體的任務,那麼Linux系統中預設啟用的crond服務簡直再适合不過了。建立、編輯計劃任務的指令為“crontab -e”,檢視目前計劃任務的指令為“crontab -l”,删除某條計劃任務的指令為“crontab -r”。另外,如果您是以管理者的身份登入的系統,還可以在crontab指令中加上-u參數來編輯他人的計劃任務。
使用crond設定任務的參數格式
除了用逗号(,)來分别表示多個時間段,例如“8,9,12”表示8月、9月和12月。還可以用減号(-)來表示一段連續的時間周期(例如字段“日”的取值為“12-15”,則表示每月的12~15日)。以及用除号(/)表示執行任務的間隔時間(例如“*/2”表示每隔2分鐘執行一次任務)。
在crond服務的計劃任務參數中,所有指令一定要用絕對路徑的方式來寫,如果不知道絕對路徑,請用whereis指令進行查詢。