文件內(nèi)容查看命令
-
more 分頁(yè)查看(重點(diǎn))
文本內(nèi)容比較多的情況下狡门,使用more命令可以分頁(yè)查看
more file 分頁(yè)查看內(nèi)容 more +n file 從第n行開始顯示內(nèi)容 操作方式 空格:向下滾動(dòng)一頁(yè) 回車:向下滾動(dòng)一行 b:向上滾動(dòng)一頁(yè) =:顯示行號(hào) q:退出
-
cat 全文瀏覽(重點(diǎn))
cat file 全文瀏覽 cat -n file 帶行號(hào)全文瀏覽 cat file1 file2 > file 合并文件 tac file 倒序?yàn)g覽
-
head 頭部瀏覽,默認(rèn)瀏覽前10行內(nèi)容
head -n 50 file 顯示file文件前50行的內(nèi)容 head -n -10 file 顯示除了最后10行以外的內(nèi)容
-
tail 尾部瀏覽 起惕,查看文件尾部?jī)?nèi)容,默認(rèn)查看10行(重點(diǎn))
tail file 查看文件尾部?jī)?nèi)容是偷,默認(rèn)查看10行 tal -5 file 顯示最后5行內(nèi)容 tail -n +50 file 從第50行開始顯示內(nèi)容 tail -5f file 顯示最后5行內(nèi)容焕妙,并且持續(xù)監(jiān)控文件內(nèi)容 此時(shí)打開另一個(gè)終端 echo hello >> 12.txt
-
其他查看方式
less分頁(yè)瀏覽,和more類似 less -N file 分頁(yè)瀏覽溉知,并展示行號(hào) less -m file 分頁(yè)瀏覽,并展示百分比 sort排序?yàn)g覽 sort 文件 升序查看文件內(nèi)容 sort -r 文件 降序查看 sort -u 文件 取出文件重復(fù)內(nèi)容 sed 流式瀏覽(重點(diǎn)) sed -n "1,5p" 文件 顯示1-5行內(nèi)容 sed -n "3,5{=;p}" 文件 顯示3-5內(nèi)容腕够,并且打印行號(hào) sed -n "10p" 文件 顯示第10行內(nèi)容
vim編輯器(重點(diǎn))
vim編輯器是linux系統(tǒng)中經(jīng)典的編輯器级乍,系統(tǒng)中使用的是一個(gè)精簡(jiǎn)版的vi編輯器,vim是vi增強(qiáng)版帚湘,比vi更易用玫荣,兩者命令操作幾乎沒(méi)有區(qū)別
vim編輯器不同于桌面編輯工具,純粹的命令行操作編輯工具
-
vim有三種基本工作模式
- 命令模式客们、文本輸入模式崇决、末行模式
命令模式:按一下ESC,即可進(jìn)入命令模式底挫。此模式下可以使用各種合法的vi命令,此時(shí)從鍵盤上輸入的任何字符都會(huì)被當(dāng)成命令來(lái)解釋脸侥,命令合法建邓,則執(zhí)行相應(yīng)動(dòng)作 輸入模式(編輯模式):在命令下輸入i,該模式下用戶輸入的任何字符都會(huì)被當(dāng)成文本保存起來(lái)睁枕,并顯示在屏幕上官边,在輸入過(guò)程中沸手,如果想回到命令模式,按ESC即可 末行模式:用戶在命令模式下按“:”即可進(jìn)入末行模式注簿,此時(shí)vim會(huì)顯示在窗口的最后一行 hjkl:左下上右
-
(1)命令模式
按鍵 描述 x 刪除光標(biāo)所在的字符契吉,相當(dāng)于delete X 刪除光標(biāo)前一個(gè)字符,相當(dāng)于backspace dd(常用) 刪除光標(biāo)所在行诡渴,刪除一行 ndd n為數(shù)字捐晶,連續(xù)刪除光標(biāo)后n行 yy(常用) 復(fù)制光標(biāo)所在行,復(fù)制遺憾 nyy n為數(shù)組妄辩,連續(xù)復(fù)制光標(biāo)后n行 p(小寫)P(大寫)(常用) 小寫p復(fù)制數(shù)據(jù)粘貼在下一行惑灵,大寫P數(shù)據(jù)粘貼在上一行 u,ctrl+r 撤銷, 反撤銷 G和gg(常用) G文檔最后一行眼耀,gg文檔第一行 - ^所在行開頭英支,$所在行尾部,r替換光標(biāo)所在位置字符
-
(2)編輯模式
按鍵 描述 i (常用) 光標(biāo)前插入字符 I 行首插入字符 a 光標(biāo)后插入字符 A 行尾插入字符 o(常用) 光標(biāo)下一行插入字符 O 光標(biāo)上一行插入字符 -
(3)末行模式
命令 描述 :w 保存文件 :w! 強(qiáng)制保存 :q 不保存退出 :qO啊(常用) 不保存強(qiáng)制退出 :wq(常用) 保存并退出 :wq干花! 強(qiáng)制保存并退出
-
scp命令(重點(diǎn))
格式:scp -r 要復(fù)制的路徑下的文件 用戶@ip地址:目標(biāo)主機(jī)路徑 克隆虛擬機(jī) 右擊-->管理-->克隆-->下一步-->虛擬機(jī)當(dāng)前狀態(tài)-->創(chuàng)建完整克隆-->選擇名稱和位置-->完成 修改主機(jī)名:hostnamectl set-hostname node1,將主機(jī)名修改為node1 scp -r /home/ujiuye/plan1.py ujiuye@10.10.35.66:/home/ujiuye
定時(shí)任務(wù)
at:一次性定時(shí)任務(wù)
-
crontab:周期性定時(shí)任務(wù)
今天晚上凌晨3點(diǎn)中期sshd服務(wù) 創(chuàng)建一次性定時(shí)任務(wù)楞黄,自動(dòng)在凌晨3點(diǎn)完成服務(wù)重啟 每個(gè)月1號(hào)把敢,執(zhí)行一次上月日志的備份 某個(gè)特定時(shí)刻需要執(zhí)行指定的操作命令,創(chuàng)建周期性定時(shí)任務(wù)
-
at一次性定時(shí)任務(wù)
at -l:查看任務(wù) at 時(shí)間點(diǎn):指定時(shí)間上谅辣,添加任務(wù) ctrl+D:保存定時(shí)任務(wù) atrm -n 刪除編號(hào)n的定時(shí)任務(wù) 案例:在15:00修赞,在/home/ujiuye/test/5.txt輸出 “spider” at 15:00 (回車) echo "spider.." >> /home/ujiuye/test/5.txt ctrl+D保存 打開新終端,tail -f 5.txt ,實(shí)時(shí)查看 at 時(shí)間點(diǎn)(HH:MM) 描述的是指定的時(shí)間點(diǎn)執(zhí)行一個(gè)定時(shí)任務(wù) 時(shí)間早于系統(tǒng)時(shí)間桑阶,默認(rèn)第二天的這個(gè)時(shí)間執(zhí)行這個(gè)任務(wù) 時(shí)間晚于系統(tǒng)時(shí)間柏副,默認(rèn)當(dāng)天的這個(gè)時(shí)間執(zhí)行任務(wù)
-
crontab周期性定時(shí)任務(wù)
通過(guò)crontab的命令,添加蚣录,編輯割择,刪除任務(wù)
crontab -l:列出所有的周期性定時(shí)任務(wù)
crontab -e:編輯當(dāng)前用戶的周期性定時(shí)任務(wù)
crontab -r:刪除周期性定時(shí)任務(wù)
crontab -e 進(jìn)入周期性定時(shí)任務(wù)編輯模式 * * * * * 以第一顆*為例: 依次是:分鐘,小時(shí)萎河,天荔泳,月,星期 * : 表示每一天的每小時(shí)的每分鐘執(zhí)行一次 10:表示每一天的每小時(shí)的第10分鐘執(zhí)行 5虐杯,10玛歌,20:表示每一天的每小時(shí)的第5,10擎椰,20分鐘執(zhí)行 5-10:表示每一天的每小時(shí)的第5分鐘開始直到第10分鐘結(jié)束 案例:每分鐘向/home/ujiuye/test/5.txt 寫入“start working” 每天6:00執(zhí)行 /home/ujiuye/test/4.sh 0 6 * * * 每周周六凌晨4點(diǎn)執(zhí)行 0 4 * * 6
shell編程入門
什么是shell支子?
shell其實(shí)就是一個(gè)命令解釋器,是解釋執(zhí)行的腳本語(yǔ)言达舒,shell編程就是對(duì)一堆linux命令的邏輯化處理
-
shell編程的目的
- 實(shí)行自動(dòng)化操作方式值朋,代替手工的繁瑣的步驟
-
shell編程的核心
批量執(zhí)行l(wèi)inux的命令的操作叹侄,將手工執(zhí)行多次的命令,轉(zhuǎn)換到程序通過(guò)命令一次性執(zhí)行
-
腳本基本規(guī)范
腳本存放在scripts目錄中 開頭添加#昨登!/bin/bash ,確定bash執(zhí)行命令 附帶作者及版權(quán)信息 腳本名稱擴(kuò)展名為 .sh 腳本盡量不用中文 成對(duì)的符號(hào)一次性書寫完成 循環(huán)格式一次性輸入完成
-
注釋和輸入輸出
注釋:除了第一行趾代,以#注釋 echo :打印信息,類似于python中的print()函數(shù) echo -n:打印信息不換行 read :讀取用戶輸入的信息 read -p:打印提示信息 read -s:用戶輸入信息不回顯
-
執(zhí)行shell腳本
mkdir scripts vim test.sh #!/bin/bash echo "hello world" 執(zhí)行上述腳本 1.bash tesh.sh 2.sh test.sh 3. ./test.sh chmod u+x test.sh
-
變量
- 什么是變量:shell傳遞數(shù)據(jù)的一種方式丰辣,作為一個(gè)臨時(shí)存儲(chǔ)數(shù)據(jù)的容器撒强,可以存放數(shù)據(jù)并在其他地方需要的地方直接通過(guò)變量名使用對(duì)應(yīng)的數(shù)據(jù)
- 命名規(guī)則:數(shù)字、字母糯俗、下劃線組成尿褪,數(shù)字不能開頭,見名知意得湘,下劃線命名
vim test2.sh #!/bin/bash name=tom echo "name:$name" name:tom echo 'name:$name' name:$name echo "name:${name}_01" name:tom_01 注意: 變量賦值杖玲,使用“=”符號(hào),將“=”右邊的結(jié)果賦值給左邊的變量淘正,等號(hào)兩邊不能有空格 定義的變量不能和系統(tǒng)命令有沖突 賦值添加雙引號(hào)摆马,不加沒(méi)有影響,但多個(gè)字符中間有空格必須加引號(hào) 雙引號(hào):弱引用鸿吆,引用變量 單引號(hào):強(qiáng)引用囤采,輸出引用的字符
-
程序控制結(jié)構(gòu)
順序結(jié)構(gòu),選擇結(jié)構(gòu)惩淳,循環(huán)結(jié)構(gòu)
- 選擇結(jié)構(gòu)
單分支 if 條件;then 條件為True要執(zhí)行的代碼 fi 案例:查看ls命令在文件系統(tǒng)環(huán)境變量的位置蕉毯,存在返回ok which ls vim 1.sh #!/bin/bash if which ls;then echo ok fi 雙分支 if 條件;then 條件為True要執(zhí)行的代碼 else 其他情況 fi 案例:搜索有沒(méi)有zhang用戶,找到返回ok思犁,找不到返回error vim 2.sh #!/bin/bash if grep zhang /etc/passwd;then echo ok else echo error fi 多分支 if [ 條件1 ];then 執(zhí)行代碼1 elif [ 條件2 ];then 執(zhí)行代碼2 else 其他情況 fi 案例操作:輸入功能選擇代虾,輸入1,輸出選項(xiàng)1激蹲,輸入2棉磨,輸出選項(xiàng)2 vim 3.sh #!/bin/bash read -p "請(qǐng)輸入功能選項(xiàng)": choice if [ $choice -eq 1 ];then echo 選項(xiàng)1 elif [ $choice -eq 2 ];then echo "選項(xiàng)2" elif [ $choice -eq 3 ];then echo "選項(xiàng)3" else echo 沒(méi)有此選項(xiàng) fi
-
文件判斷
-e 判斷文件是否存在 : if [ -e 文件路徑 ] #注意括號(hào)和命令之間有空格 -d 判斷是否是文件夾: if [ -d 文件路徑 ] -f 判斷是否是文件 -r 判斷是否可讀 -w 判斷是否可寫 -x 判斷是否可執(zhí)行 案例:腳本完成自動(dòng)備份操作 判斷當(dāng)前目錄是否有model目錄 如果沒(méi)有就創(chuàng)建,有執(zhí)行備份 #!/bin/bash echo ----開始準(zhǔn)備備份---- if [ -e model ];then echo model已存在 if [ -d model ];then echo model是一個(gè)目錄学辱,可以執(zhí)行備份 fi else echo model不存在乘瓤,需要先創(chuàng)建 fi echo ---開始備份--- sleep 2 echo ---備份完成---
-
字符的判斷
= 判斷兩個(gè)字符是否相等 != 判斷兩個(gè)字符不相等 -z 判斷字符串長(zhǎng)度是否是0 -n 判斷字符串是否為空 案例操作: 用戶輸入“Q”,退出系統(tǒng)策泣,輸入“C”,繼續(xù) #!/bin/bash read -p "是否退出系統(tǒng)(Q退出衙傀,C繼續(xù))": ret if [ $ret = "Q" ];then echo "退出系統(tǒng)" elif [ $ret = "C" ];then echo 繼續(xù) fi
-
整數(shù)判斷
-eq 判斷兩個(gè)整數(shù)是否相等 -gt > -lt < -ge >= -le <= -ne !=
-
邏輯判斷
&&判斷并且關(guān)系 -a判斷并且關(guān)系 ||判斷或者關(guān)系 -o判斷或者關(guān)系 !判斷取反
-
case選擇結(jié)構(gòu)
case 變量 in 值) 命令序列1 ;; 值2) 命令序列2 ;; *) 無(wú)匹配后命令序列 esac 案例操作:顯示功能選項(xiàng)着降,輸入序號(hào)或者功能名稱都可以執(zhí)行 #! /bin/bash echo ============ echo " 1.login " echo " 2.register " echo " 3.exit " echo ============ read -p "請(qǐng)輸入功能選項(xiàng)": choice case $choice in 1|login) echo 登錄 ;; 2|register) echo 注冊(cè) ;; 3|exit) echo 退出 ;; *) echo "沒(méi)有這個(gè)選項(xiàng)" esac
-
for循環(huán)
基本操作語(yǔ)法 for 臨時(shí)變量 in [取值列表] do 循環(huán)中的代碼 done #檢查ip地址通訊 vim 7.sh #!/bin/bash hosts="10.10.35.10 10.10.35.15 10.10.35.25" for h in $hosts do echo "開始檢查$h通訊" sleep 1 echo "檢查$h通過(guò)" done echo "所有ip檢查通過(guò)"
-
while循環(huán)
while 條件 do 循環(huán)要執(zhí)行的代碼 done 案例操作:計(jì)算1-100之間的和 #!/bin/bash num=1 sum=0 while [ $num -le 100 ] do sum=$[ $sum + $num ] let num+=1 done echo 1-100的和是$sum
-
函數(shù)的聲明和調(diào)用
function 函數(shù)名稱(){ 函數(shù)中的代碼 } 快捷寫法 函數(shù)名(){ 函數(shù)中的代碼 } #!/bin/bash function func1(){ echo 鎵цfunc1浠g爜 } func2(){ echo 鎵цfunc2浠g爜 } func1 func2