456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费

IT之道-艾銻知道

您當前位置: 主頁 > 資訊動態 > 艾銻分享 >

服務器維護Shell腳本基礎知識與重定向與管道操作


2020-07-02 19:22 作者:admin

服務器維護Shell腳本基礎知識與重定向與管道操作

服務器維護小知識

一、Shell腳本基礎

服務器維護小知識Linux系統中的Shell腳本是一個特殊的應用程序,它介于操作系統內核與用戶之間,充當了一個“命令解釋器”的角色,負責接收用戶輸入的操作命令并進行解釋,將需要執行的操作傳遞給內核執行,并輸出執行結果。

服務器維護小知識1、簡單編寫Shell腳本

[root@CentOS01 ~]# vim aaa.sh    <!--新建aaa.sh文件-->
#!/bin/bash
#Description E-Mail:2807489749@qq.com BY:LYX
cd /boot/
echo "顯示當前目錄:"
pwd
echo "查看以vml開頭的文件:"
ls -lh vml*
[root@centos01 ~]# chmod +x aaa.sh     <!--添加可執行權限-->
上述aaa.sh腳本文件中,第一行“#!/bin/bash”是一行特殊的腳本聲明,表示此行以后的語句通過/bin/bash程序來解釋執行;其他以“#”開頭的語句表示注釋信息;echo命令用于輸出字符串,以使腳本的輸出信息更容易讀懂。上述配置包括三條命令:cd /boot/、pwd、ls -lh vml*。執行此腳本文件后,輸出結果與依次單獨執行這三條命令是相同的,從而實現了“批量處理”的自動化過程。
通過“./aaa.sh”的方式執行腳本,執行之前必須授權于文件的X權限。
[root@centos01 ~]# ./aaa.sh    <!--運行腳本文件-->
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 23 22:35 vmlinuz-0-rescue-2b580d1a2e8348b8aa9f78be11137b41
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@centos01 ~]# source aaa.sh  <!--通過source來解釋腳本-->
[root@centos01 ~]# sh aaa.sh     <!--通過/bin/sh來解釋腳本-->

二、重定向與管道操作

服務器維護小知識1、重定向輸出

表示將命令的正常輸出結果保存到指定的文件中,并覆蓋文件中的原有內容,若文件不存在,則會新建一個文件使用 “>”操作符號。
表示將命令的正常輸出結果追加到指定的文件中sh使用“>>”操作符號。
舉個例子:
[root@centos01 ~]# echo "aaa"  <!--數據輸出到顯示器上顯示-->
aaa
[root@centos01 ~]# echo "aaa" > 1.txt    <!--將數據輸出到文件中-->
[root@centos01 ~]# cat 1.txt      <!--查看文件中數據-->
aaa
[root@centos01 ~]# echo "bbb" >> 1.txt      <!--將數據追加輸出到1.txt文件中-->
[root@centos01 ~]# cat 1.txt         <!--查看文件-->
aaa
bbb

服務器維護小知識2、重定向輸入

重定向輸入指的是將命令中接收輸入的途徑由默認的鍵盤改為指定的文件,而不是等待從鍵盤輸入。重定向輸入使用“<”操作符。
舉個例子:
使用passwd命令為用戶設置密碼時,每次都必須根據提示輸入兩次密碼字串,非常繁瑣,若改用重定向輸入將可以省略交互式的過程,而自動完成密碼設置。
[root@centos01 ~]# useradd bob  <!--創建bob用戶-->
[root@centos01 ~]# vim password.txt     <!--添加初始密碼串-->
pwd@123                    <!--密碼為pwd@123-->
[root@centos01 ~]# passwd --stdin bob < password.txt      <!--從password.txt文件中取密碼-->
更改用戶 bob 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

服務器維護小知識3、錯誤重定向

錯誤重定向指的是將執行命令過程中出現的錯誤信息(如選項或參數錯誤等)保存到指定的文件,而不是直接顯示在屏幕上。錯誤重定向使用 “2>”操作符,其中“2”是指錯誤文件的編號(在使用標準輸出、標準輸入重定向時,實際上省略了1、0編號)。
舉個例子:
執行以下操作可以將使用tar命令進行備份時出現的錯誤信息保存到3.txt文件中。
[root@centos01 ~]# tar jcf /nonedir/etc.tgz /etc/ 2> 3.txt
[root@centos01 ~]#
[root@centos01 ~]# cat 3.txt
tar: 從成員名中刪除開頭的“/”
tar (child): /nonedir/etc.tgz:無法 open: 沒有那個文件或目錄
tar (child): Error is not recoverable: exiting now
使用“2>”操作符時,會像使用“>”操作符一樣覆蓋目標文件的內容,若要追加內容而不是覆蓋文件,則應改用“2>>”操作符。
當命令輸出的結果可能即包括標準輸出(正常執行)信息,又包括錯誤輸出信息時,可以使用操作符“>” “2>”將兩類輸出信息分別保存到不同的文件,也可以使用“&>”操作符兩兩類輸出信息保存到同一個文件。
舉個例子:
[root@centos01 ~]# vim httpd.sh   <!--新建httpd.sh文件-->
#!/bin/bash
#自動編譯安裝httpd服務器
cd /usr/src/httpd-2.2.17/
echo "1.配置Apache服務:"
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &> /dev/null
echo "2.編譯Apache服務:"
make &> /dev/null
echo "3.安裝Apache服務:"
make install &> /dev/null
[root@centos01 ~]# chmod +x httpd.sh   <!--添加X權限-->
[root@centos01 ~]# ./httpd.sh     <!--運行腳本文件-->
1.配置Apache服務:
2.編譯Apache服務:
3.安裝Apache服務:

服務器維護小知識4、管道操作

管道(pipe)操作為不同命令之間的協同工作提供了一種機制,位于管道符號“|”左側的命令輸出的結果,將作為右側命令的輸入(處理對象),同一行命令中可以使用多個管道。
舉個例子:
[root@centos01 ~]# grep "/bin/bash$" /etc/passwd  <!--提取前-->
root:x:0:0:root:/root:/bin/bash
test:x:1000:1000:test:/home/test:/bin/bash
bob:x:1002:1002::/home/bob:/bin/bash
[root@centos01 ~]# grep "/bin/bash$" /etc/passwd | awk -F: '{print $1,$7}'   <!--提取后-->
root /bin/bash
test /bin/bash
bob /bin/bash
[root@centos01 ~]# df -hT     <!--提取之前-->
文件系統       類型      容量  已用  可用 已用% 掛載點
/dev/sda3      xfs        76G  5.2G   71G    7% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  6.9M  482M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1      xfs       197M  136M   61M   70% /boot
tmpfs          tmpfs      98M     0   98M    0% /run/user/0
/dev/sr0       iso9660   664M  664M     0  100% /mnt
[root@centos01 ~]# df -hT | grep "/$" |awk '{print $6}'   <!--提取之后其中grep “/$”表示提取以“/”結尾的行-->
7%
上述中awk命令的作用是以冒號“:”作為分隔,輸出第1個,第7個區域的字符串。其中的“-F”部分用來指定分割符號(未指定時,默認以空格或制表符分隔)。

三、使用Shell變量

各種Shell環境中都使用到了“變量”的概念。Shell變量用來存放系統和用戶需要使用的特定參數(值),而且這些參數可以根據用戶的設定或系統環境的變化而相應變化。通過使用變量,Shell程序能夠提供更加靈活的功能,適應性更強。
常見Shell變量的類型包括自定義變量、環境變量、位置變量、預定義變量。

服務器維護小知識1、自定義變量

自定義變量是由系統用戶自己定義的變量,只在用戶自己的Shell環境中有效,因此又稱為本地變量。在編寫Shell腳本程序時,通常會設置一些特定的自定義變量,以適應程序執行過程中的各種變化,滿足不同的需求。

1)定義新的變量

定義變量的基本格式為“變量名=變量值”,等號兩邊沒有空格。變量名稱需以字母或下劃線開頭,名稱中不要包含特殊字符(如+、-、*、/、?、%、&、#等)。
[root@centos01 ~]# li=Python
[root@centos01 ~]# version=2.7.13

2)查看和引用變量的值

通過在變量名稱前添加前導符號“$”,可以引用一個變量的值。使用echo命令可以查看變量,可以在一條echo命令中同時查看多個變量值。
[root@centos01 ~]# echo $li
python
[root@centos01 ~]# echo $version
2.7.13
[root@centos01 ~]# echo $li $version
python 2.7.13

3)變量賦值的特殊操作

在等號“=”后邊直接指定變量內容是為變量賦值的最基本方法,除此之外,還有一些特殊的賦值操作,可以更靈活地位變量賦值,以便適用于各種復雜的管理任務。

雙引號(" ")

[root@centos01 ~]# PYTHON=python 2.7.13  <!--錯誤賦值-->
bash: 2.7.13: 未找到命令...
[root@centos01 ~]# PYTHON="python 2.7.13" <!--正確的賦值-->
[root@centos01 ~]# echo $PYTHON   <!--查看值-->
python 2.7.13
在雙引號范圍內,使用“$”符號可以引用其他變量的值(變量引用),從而能夠直接調用現有變量的值來賦給新的變量。
[root@centos01 ~]# echo $version
2.7.13
[root@centos01 ~]# sqlserver="sqlserver $version"
                                       <!--以變量的值進行賦值-->
[root@centos01 ~]# echo $sqlserver    <!--查看值-->
sqlserver 2.7.13

單引號(' ')

當要賦值的內容中包含$、“、\等具有特殊含義的字符時,應使用單引號括起來。在單引號的范圍內,將無法引用其他變量的值,任何字符均作為普通字符看待。
[root@centos01 ~]# sqlserver='sqlserver $version'  <!--$符號不能再引用變量-->
[root@centos01 ~]# echo $sqlserver      <!--原樣輸出字符串-->
sqlserver $version

反撇號(`)

反撇號主要用于命令替換,允許將執行某個命令的屏幕輸出結果賦值給變量。反撇號括起來的范圍必須能夠執行的命令行,否則將會出錯。
[root@centos01 ~]# ls -lh `which useradd`
-rwxr-x---. 1 root root 116K 11月  6 2016 /usr/sbin/useradd
上述操作相當于連續執行了兩條命令——先通過which useradd命令查找出useradd命令的程序位置,然后根據查找結果列出文件屬性。執行過程中,會用which useradd命令的輸出結果替換整個反撇號范圍。

read命令

除了上述賦值操作以外,還可以使用bash的內置命令read來給變量賦值。read命令用來提示用戶輸入信息,從而實現簡單的交互過程。執行時將從標準輸入設備(鍵盤)讀入一行內容,并以空格為分隔符,將讀入的各字段依次賦值給指定的變量(多余的內容賦值給最后一個變量)。若指定的變量只有一個,則將整行內容賦值給此變量。
[root@centos01 ~]# read -p "輸入需要的內容:" insert
輸入需要的內容:您好!  <!--將您好!賦值給變量insert-->
[root@centos01 ~]# echo $insert
您好!

4)設置變量的作用范圍

默認情況下,新定義的變量只在當前的Shell環境中有效,因此稱為局部變量。當進入子程序或新的子Shell環境時,局部變量將無法再使用。例如,直接執行Bash進入一個新的子Shell腳本后,將無法引用父級Shell環境中定義的li、version等變量。
[root@centos01 ~]# echo "$li $version"   <!--查看當前定義的變量值-->
python 2.7.13
[root@centos01 ~]# bash            <!--進入子shell環境-->
[root@centos01 ~]# echo "$li $version"        <!--無法調用父shell環境中的變量-->
[root@centos01 ~]# exit        <!--返回原有的shell環境-->
exit
[root@centos01 ~]# echo "$li $version"   <!--查看當前定義的變量值-->
[root@centos01 ~]# export li version     <!--設置為全局變量-->
[root@centos01 ~]# bash          <!--進入子shell環境-->
[root@centos01 ~]# echo "$li $version" <!--可以調用父shell的全局變量-->
python 2.7.13
[root@centos01 ~]# exit     <!--返回原有的shell環境-->
exit

5)數值變量的運算

Shell變量的數值運算多用于腳本程序的過程控制(如循環次數、使用量比較等)再Bash shell環境中,只能進行簡單的證書運算,不支持小數運算。整數值的運算主要通過內部命令expr進行,基本格式如下:
expr 變量1 運算符 變量2 [運算符 變量3]...
其中,變量1、變量2......對應為需要計算的數值變量(需要以“$”符號調用),常用的幾種運算符如下所述
+:加法運算;
-:減法運算;
*:乘法運算;注意不能僅使用“*”符號,否則將被當成文件通配符;
/:除法運算;
%:求模運算,又稱為取余運算,用來計算數值相除后的余數;
舉個例子:
[root@centos01 ~]# x=35
[root@centos01 ~]# y=16
[root@centos01 ~]# expr $x + $y
51
[root@centos01 ~]# expr $x - $y
19
[root@centos01 ~]# expr $x \* $y
560
[root@centos01 ~]# expr $x / $y
2
[root@centos01 ~]# expr $x % $y
3

服務器維護小知識2、特殊的shell變量

1)環境變量:

使用命令“env”可以查看到當前工作環境下的環境變量。環境變量的值由Linux系統自動維護,會隨著用戶狀態的改變而改變。
其中PATH變量用于設置可執行程序的默認搜索路徑,如將root目錄添加到默認搜索路徑:PATH="$PATH:/root"如果找不到則會提示“command not found”
環境變量的全局配置文件為:/etc/profile,在此文件中定義的變量作用于所有用戶。
用戶獨立配置未見位于:~/.bash_profile
修改變量文件后,須使用source命令重新讀取加載或重啟才會生效。

2)位置變量:

位置變量也稱位置參數,在命令 “ls -lh /boot” 中,ls的位置變量為$0,-lh的位置變量為$1,/boot的位置變量為$2。以此類推。

3)預定義變量:

預定義變量是由bash程序預先定義好的一類特殊變量,用戶只能使用預定義變量,而不能創建新的預定義變量,也不能直接為預定義變量賦值。預定義變量使用“$”符號和另一個符號組合表示,經常用的幾個預定義變量含義如下:
· $#:表示命令行中位置參數的個數。
· $*:表示所有位置參數的內容。
· $?:表示前一條命令執行后返回的狀態,返回0表示執行正確,返回任何非0的數值表示執行出現異常。
· $0:表示當前執行的腳本或程序的名稱。
IT運維  我們選擇北京艾銻無限
以上文章由北京艾銻無限科技發展有限公司整理



相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 久久久国产精品成人免费_日本丰满大乳免费xxxx_aaaa成人_亚洲色图自拍视频_真人性囗交视频_国产精品一区二区三区sss_FUCK东北老女人HD对话_91美女在线播放 | 高清成人综合网_亚洲草草视频_国内一级大片_中文字幕第36页_国产视频精品久久_暗夜在线观看_强奷漂亮少妇高潮a片_亚洲国产精品午夜伦不卡 | 久久久国产三级_japanese乱人伦精品_欧美一区黄色_四虎影视在线看免费观看_a三级毛片_国内视频一区二区三区_www在线看片_A级毛片毛片免费观看丝瓜 | 国产初高中生视频在线观看_GOGO少妇无码肉肉视频_奇米777四色成人影视_日本黄色五级片_色婷婷成人做爰视频免费_谍战剧惊弦免费观看_在线观看xxxx7777视频_免费a网 | 日本熟妇无码色视频在线观看_国产八十老太另类_国产一级黄色小视频_亚洲一二三四在线_久久99精品视频一区97_又粗又大又黄又爽的免费视频_国产欧美在线看_精品久久久99 | 国产精品福利一区二区三区_久草在线国产_欧美宗合_亚洲精品无码MV在线观看软件_亚洲第一页国产_337p欧美顶级日本大片_精品极品国产一级片_中国一级特黄真人毛片免费观看 | 国产青草视频在线观看视频_高清videosgr欧美熟妇_国产暴力强伦轩1区二区小说_粉嫩国产一区二区三区免费_亚洲免费成人在线_直接看片的av网址在线看片_日韩熟女精品一区二区三区_www久久 | 二级片免费_国产精品午夜久久久久久99热_久久av青久久久av三区三区_免费大片AV手机看片高清_久久精品AV无码夜色_欧美XXXX做受欧美69_久在线视频播放免费视频_国产日韩欧美一区 | 天天操天天干天天爽_hdsex麻豆_亚洲video_亚洲最大天堂无码精品区_黄色av影视_免费视频一区_久久综合在线_精品一区二区三区久久久 | 女人高潮娇喘抽搐喷水视频_a成人毛片_好硬好湿好爽再深一点动态图视频_九色在线播放_粉嫩小仙女扒开双腿自慰_香港三级韩国三级日本三级国产_JK制服白丝超短裙自慰_亚洲永久网址在线观看 | 青青草视频污_日本不卡影院_在线麻豆精东9制片厂AV影现网_九色在线视频蝌蚪_免费亚洲精品视频_国产精品熟妇一区二区三区四区_免费网站v片在线亚洲_蜜臀久久99精品久久久久久网站 | 少妇激情一区二区三区视频_大地资源网中文在线观看免费节目_日韩精品人妻中文字幕有码_超碰97人人射_a级免费观看视频_国产第一页福利影院_成人免费无码大片a_成人国产一区二区精品小说 | 97香蕉超级碰碰碰久久兔费_日本精品视频免费观看_三区精品_av免费观看网页_人妻无码久久中文字幕专区_天天射寡妇射_免费av手机在线观看片_日韩中文字幕在线免费 | 日本一区二区三区免费A片_成年人在线视频观看_精品国模一区二区三区浪潮_四虎永久在线精品免费播放_不卡欧美_在线国产精品视频_欧美一区二区性_中文字幕有码无码AV | 国内自拍中文字幕_国产在线va_狠狠婷婷_午夜看片在线观看_日本精品在线一区_特级做a爰片毛片免费看1o8_日韩一本之道一区中文字幕_老司机午夜永久免费影院 | 色麒麟影院_碰碰久久_黄免费观看_国产精品久久久久aaaa_毛片爱爱_国产无遮挡猛进猛出免费软件_青青草中文_国产SUV精品一区二区33 | 无码字幕av一区二区三区_草草视频免费_日韩黄色录相_国产女人高潮叫床视频_成人91免费_午夜亚洲理论片在线观看_国产精品99久久久久久一二区_小777国产主播 | 人人爽人人爽人人片AV_特级黄一级播放_久久作爱视频_米奇午夜_欧美xxxxx18_亚洲一区二区在线免费视频_免费黄色片子_在线观看成年人网站 | 日本熟妇另类视频在线播放_一级av黄色毛片_婷婷九月综合_日韩免费福利_91av小视频_国产毛片视频_人妻出轨AV中文字幕_91.xxx.高清在线 | 欧美疯狂xxx免费视频_91桃色黄色_一本色道久久88综合日韩精品_成人亚洲_91综合网站_国产福利影院_国产精品第一区第27页_亚洲一区二区精品视频 | gogo大胆无码免费视频列表_亚洲精品秘在线看_国产成人综合在线女婷五月99播放_日韩一区二区三区四区区区_成年人黄页_国产福利毛片_欧美日韩一区二区三区不卡_日韩无在线 | 久久成人免费观看_欧美色视频在线观看_神马久久亚洲_9999人体做爰大胆视频摄影_国产丝袜一区视频在线观看_91免费国产视频_草久影院_国产亚洲综合一区柠檬导航 | 免费动漫黄爽A片在线观看_一区精品视频_91在线无精精品秘?入口九色_av网站免费播放_亚洲综合无码精品一区二区三区_国产精品嫩草99a_av免费看国产_日韩αv在线 | 开心五月激情综合婷婷_色综合网在线_91精品久久久久五月天精品_日韩一区二区精品葵司在线_天天看逼_亚洲精品视频在线播放_一级黄色片在线免费观看_在线A片不卡的菲菲网 | 久久国产原创_一级免费毛片_日本人在线观看_欧美疯狂xxxxbbbb动态图_精品久久久久久久久久软件_亚洲成av人片在线观看高清_丁香婷婷六月综合网_无码专区国产精品一区 | 精品国产一区a_欧美日韩二_国产亚洲一卡2卡3卡4卡老狼_亚洲福利在线看_精品欧美一区二区三区久久久_日比视频在线观看_在线超碰免费_麻花传媒沈芯语老师家访 | 野花社区免费观看视频高清_国产毛片18片毛一级特黄日韩a_aa视频免费看_国产午夜一级_91大神一区二区三区在线观看_亚洲av成人永久无在线观看_中文字幕av免费在线_新超碰97 | 公粗挺进了我的密道在线播放贝壳_国产香蕉青春草原久久_最近最新中文免费字幕一_久久久久久久久久久91_中文字幕在线播放_国产精品一二三四区_chien国产乱露脸对白_日韩视频免费看 | 日韩美女性生活视频_欧美性猛交xxxx乱大交久久_手机在线一区_免费jlzzjlzz在线播放_二区三区偷拍浴室洗澡视频_麻豆专媒体一区二区_精品国产乱_九九九国产视频 | 日本三级日本三级日本三级极_纯欧美一级毛片免费_免费大片av手机看片_国产交换配乱婬视频偷_韩国hd高清xxxx视频_国产成人AV激情在线播放_久久久久久久久久久97_高清性做爰大片免费视频 | 成人网中文字幕_国产精品无码在线_CHINESE熟妇与小伙子MATURE_亚洲一区二区久久久_丰满少妇免费做爰大片人_亚色九九九全国免费视频_亚洲国产精品999久久久婷婷_欧美日韩一区二区三区在线视频 | 国产成人亚洲精品另类动态图_欧美一乱一性一交一视频_100日本xxxxxxxxx15_日本老妇人乱xxy_日韩欧美综合在线视频_日韩专区一区_4455四色永久在线_久久艹色 | 国内揄拍国内精品对白_中午字幕无线码一区2020_4虎av_人妻聚色窝窝人体WWW一区_夜色亚洲_免费在线激情视频_91国色_98色花堂论坛最新地址 | 2024国产精品自拍_亚洲xxx视频_国产精品一区免费在线_护士的奶又大又粗又大_国产成人AV大片在线播放_欧美日韩八区_美女诱惑一区二区_午夜久操 | 日本三级日本三级日本三级极_纯欧美一级毛片免费_免费大片av手机看片_国产交换配乱婬视频偷_韩国hd高清xxxx视频_国产成人AV激情在线播放_久久久久久久久久久97_高清性做爰大片免费视频 | 黑人粗硬进入过程视频_麻豆传媒在线看_在线观看中文字幕国产_妺七AV导航福利_成人在线观看免费_一本久道久久综合狠狠爱_日韩综合网_成人视屏网站 | 美女把尿口扒开让男人桶爽_一黄色大片_国产精品人人妻人人爽久久_baoyu116.永久免费视频_你懂的91_欧美一级黄色片子_色se02短视频永久网站_蝌蚪成人网 | chinese猛男自慰gv网站_一级色毛片_国产成人久久精品激情_农村少妇好紧水多视频_亚洲美腿丝袜无码专区_免费看国产黄线在线观看_日韩精品一区二区三区九九_国产亚洲精品一区二555 | 亚洲免费av一区二区三区_国产模特私拍视频再现_午夜小视频在线播放_久久爱成人网_亚洲av无码国产精品色午夜洪_亚洲欧美成AⅤ人在线观看_欧美亚洲视频一区二区_91.com在线 | 弄逼视频_午夜三级视频_一区二区三区欧美视频_色多多A级毛片免费看_久久91久久_色黄视频在线_日日摸夜夜添夜夜添老人妇人_午夜影院免费看 | 爆乳无码系列肉感在线播放_国产成人亚洲精品无码车A_在线观看的毛片_曰韩少妇内射免费播放_国产人妻aⅴ色偷_天天摸天天操天天舔_国产成人福利在线观看_狠狠色丁香六月色 |