一.補(bǔ)充知識(shí)點(diǎn)
1.系統(tǒng)定時(shí)任務(wù)
系統(tǒng)定時(shí)任務(wù)需要用到crontab
命令,但是使用此命令有一個(gè)前提,即需要打開crond
服務(wù)。為了不那么復(fù)雜,可以直接使用我之前學(xué)的systemctl
命令重新啟動(dòng)crond
服務(wù)。
-
語法:``crontab [-e -l -r] `
-
選項(xiàng):-e 編輯crontab定時(shí)任務(wù);-l 查詢系統(tǒng)crontab任務(wù);-r 刪除當(dāng)前用戶的所有crontab任務(wù)
-
參數(shù):
項(xiàng)目 含義 范圍 第一個(gè)“*” 一小時(shí)當(dāng)中的第幾分鐘 0-59 第二個(gè)“*” 一天當(dāng)中的第幾個(gè)小時(shí) 0-23 第三個(gè)“*“ 一個(gè)月當(dāng)中的第幾天 1-31 第四個(gè)“*” 一年當(dāng)中的第幾天 1-12 第五個(gè)“*” 一周當(dāng)中的星期幾 0-7 -
參數(shù)特殊符號(hào):
特殊符號(hào) 含義 * 代表任意時(shí)間 , 代表不連續(xù)的時(shí)間 - 代表連續(xù)的時(shí)間 */n 代表每隔多久執(zhí)行一次
注意,這里使用crontab -e
進(jìn)入編輯后(界面此時(shí)是一個(gè)vim編輯器),先輸入要設(shè)置的5個(gè)“*”,然后輸入命令保存即可。
2.克隆虛擬機(jī)
之前我們了解了虛擬機(jī)快照技術(shù),這對(duì)我們個(gè)人平時(shí)試錯(cuò)有很大的幫助,同時(shí)這里再補(bǔ)充一種技術(shù),克隆虛擬機(jī)。它不僅能有助于恢復(fù),同時(shí)對(duì)如果想把我們的虛擬機(jī)分享給別人(假設(shè)你的虛擬機(jī)配置了許多東西,別人重新安裝配置很麻煩,而你們需要相同工作環(huán)境),那么這個(gè)時(shí)候使用克隆虛擬機(jī)技術(shù)就相當(dāng)方便了。
如果你需要使用克隆技術(shù),這里有一個(gè)其他博主的鏈接,或許對(duì)你有幫助虛擬機(jī)克隆
二.初識(shí)shell
1.shell
Shell (外殼)是一個(gè)用C語言編寫的程序,它是用戶使用Linux 的橋梁。Shell既是一種命令語言,又是一種程序設(shè)計(jì)語言。
Shell是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。
2.腳本
腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯)。常見的腳本: JavaScript, VBScript,ASP, JSP, PHP, SQL, Perl, Shell, python, Ruby, JavaFX,Lua等。
3.常見shell
在Linux中有很多類型的shell, 不同的shell具備不同的功能,shell 還決定了腳本中函數(shù)的語法,Linux中默認(rèn)的shell是/bin/bash,流行的shell 有ash、bash、 ksh、 csh、zsh等,不同的shell都有自己的特點(diǎn)以及用途。
大多數(shù)Linux系統(tǒng)默認(rèn)使用的shell, bash shell是Bourne shell的一個(gè)免費(fèi)版本,它是最早的Unix shell, bash 還有一個(gè)特點(diǎn), 可以通過help 命令來查看幫助。包含的功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會(huì)指定它為執(zhí)行路徑。
4.shell基礎(chǔ)
- 約定俗成,文件以.sh結(jié)尾代表一個(gè)shell文件
- shell文件開始必須是
#!/bin/bash
,代表選擇這個(gè)版本解釋器 - 執(zhí)行shell文件。使用命令
bash(sh) 路徑
其實(shí)執(zhí)行shell文件的方式有許多中,但是上面這種不需要任何其他命令輔助,其他方式或多或少都有一些問題,使用這一種即可。
三.shell變量
1.系統(tǒng)預(yù)定義變量
$HOME
、$PWD
、$SHELL
、$USER
等是系統(tǒng)預(yù)定義的變量,是環(huán)境變量,在所有的shell文件中都能使用。
關(guān)于環(huán)境變量(全局變量)或者說系統(tǒng)預(yù)定義變量可以參考我的上一篇博客:環(huán)境變量
補(bǔ)充:
Bash是一種Unix/Linux操作系統(tǒng)的命令行解釋器,它允許用戶在終端上輸入命令并執(zhí)行它們??梢詥为?dú)使用bash命令來啟動(dòng)一個(gè)新的Bash shell會(huì)話,在該會(huì)話中,您可以執(zhí)行各種命令和操作。例如,在終端上輸入bash
并按Enter鍵可以啟動(dòng)新的Bash shell會(huì)話。此時(shí),您將看到一個(gè)新的命令提示符,表示您現(xiàn)在位于一個(gè)新的Bash shell中,可以在此處輸入各種命令以進(jìn)行操作。要退出Bash shell會(huì)話,請(qǐng)輸入exit
并按Enter鍵即可。
2.自定義變量
1.基本語法
- 定義變量:變量名=變量值,注意,=號(hào)前后不能有空格
- 撤銷變量:unset 變量名
- 聲明靜態(tài)變量(只讀變量,無法更改):
readonly 變量
,注意:不能 unset
2.變量定義規(guī)則
- (1)變量名稱可以由字母、數(shù)字和下劃線組成,但是不能以數(shù)字開頭,環(huán)境變量名建議大寫。
- (2)等號(hào)兩側(cè)不能有空格
- (3)在 bash 中,變量默認(rèn)類型都是字符串類型,無法直接進(jìn)行數(shù)值運(yùn)算。
- (4)變量的值如果有空格,需要使用雙引號(hào)或單引號(hào)括起來
3.演示
3.特殊變量
1. $n
$n
(功能描述:n 為數(shù)字,$0
代表該腳本名稱,$1-$9
代表第一到第九個(gè)參數(shù),十以上的參數(shù),十以上的參數(shù)需要用大括號(hào)包含,如${10})
touch parameter.sh
vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
2.$#
$# (功能描述:獲取所有輸入?yún)?shù)個(gè)數(shù),常用于循環(huán),判斷參數(shù)的個(gè)數(shù)是否正確以及加強(qiáng)腳本的健壯性)
vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
==========$#==========
2
3.$*、$@
-
$*
(功能描述:這個(gè)變量代表命令行中所有的參數(shù),$*把所有的參數(shù)看成一個(gè)整體) -
$@
(功能描述:這個(gè)變量也代表命令行中所有的參數(shù),不過$@把每個(gè)參數(shù)區(qū)分對(duì)待)
vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@
[atguigu@hadoop101 shells]$ ./parameter.sh a b c d e f g
==========$n==========
./parameter.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g
4.$?
$? (功能描述:最后一次執(zhí)行的命令的返回狀態(tài)。如果這個(gè)變量的值為 0,證明上一個(gè)命令正確執(zhí)行;如果這個(gè)變量的值為非 0(具體是哪個(gè)數(shù),由命令自己來決定),則證明上一個(gè)命令執(zhí)行不正確了。)
./helloworld.sh
hello world
echo $?
0
四.運(yùn)算符和條件判斷
1.運(yùn)算符
基本語法:$((運(yùn)算式))
或$[運(yùn)算式]
在其他語言中,定義變量的方式你應(yīng)該不陌生,但是如果在shell中定義變量a=1+5
,你可以嘗試一下他輸出的是什么,針對(duì)shell里面的運(yùn)算,有一個(gè)新的命令expr
可以計(jì)算,但由于乘法運(yùn)算的星號(hào)在shell中有其他意思,它會(huì)報(bào)錯(cuò),所以才設(shè)置了運(yùn)算符。
實(shí)際操作:
2.條件判斷
語法:(1)test condition (2)[ condition ](注意 condition 前后要有空格)兩種方式任選一種即可
注意:條件非空即為 true,[ atguigu ]返回 true,[ ] 返回 false。
常用判斷條件:
(1)兩個(gè)整數(shù)之間比較
- -eq 等于(equal) -ne 不等于(not equal)
- -lt 小于(less than) -le 小于等于(less equal)
- -gt 大于(greater than) -ge 大于等于(greater equal)
注:如果是字符串之間的比較 ,用等號(hào)“=”判斷相等;用“!=”判斷不等。
(2)按照文件權(quán)限進(jìn)行判斷
- -r 有讀的權(quán)限(read)
- -w 有寫的權(quán)限(write)
- -x 有執(zhí)行的權(quán)限(execute)
(3)按照文件類型進(jìn)行判斷
- -e 文件存在(existence)
- -f 文件存在并且是一個(gè)常規(guī)的文件(file)
- -d 文件存在并且是一個(gè)目錄(directory)
多條件判斷(&& 表示前一條命令執(zhí)行成功時(shí),才執(zhí)行后一條命令,|| 表示上一條命令執(zhí)行失敗后,才執(zhí)行下一條命令)
演示:
五. read 讀取控制臺(tái)輸入
在shell變量中我們知道輸入.sh文件參數(shù)可以通過特殊變量$n的意義進(jìn)行操作,但是不可能總是這種輸入,shell里面也有類似于C語言中scanf()
函數(shù)的鍵盤輸入函數(shù),即這里用的read函數(shù)。
1.基本語法
- 語法:read (選項(xiàng)) (參數(shù))
- ①選項(xiàng):
-p:指定讀取值時(shí)的提示符;
-t:指定讀取值時(shí)等待的時(shí)間(秒)如果-t 不加表示一直等待 - ②參數(shù)
變量:指定讀取值的變量名
2.演示代碼
$ touch read.sh
$ vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds :" NN
echo $NN
上面兩行為終端輸入命令,下下面三行即read.sh文件的內(nèi)容,運(yùn)行即可。文章來源:http://www.zghlxwxcb.cn/news/detail-426937.html
六.說明
新星計(jì)劃:Linux運(yùn)維@劉晨陽導(dǎo)師創(chuàng)作打卡4!文章來源地址http://www.zghlxwxcb.cn/news/detail-426937.html
到了這里,關(guān)于Linux運(yùn)維之初識(shí)shell的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!