專(zhuān)注搜索競(jìng)價(jià)代運(yùn)營(yíng)

成長(zhǎng)之選 ,效果之道!

免費(fèi)咨詢(xún)熱線:17636682598

shell是什么意思

Shell俗稱(chēng)殼(用來(lái)區(qū)別于核),是指“為使用者提供操作界面”的軟件(command interpreter,命令解析器)。它類(lèi)似于DOS下的COMMAND.COM和后來(lái)的cmd.exe。它接收用戶(hù)命令,然后調(diào)用相應(yīng)的應(yīng)用程序。

Shell是什么

Shell俗稱(chēng)殼(用來(lái)區(qū)別于核),是指“為使用者提供操作界面”的軟件(command interpreter,命令解析器)。它類(lèi)似于DOS下的COMMAND.COM和后來(lái)的cmd.exe。它接收用戶(hù)命令,然后調(diào)用相應(yīng)的應(yīng)用程序。

Shell有幾類(lèi)

一:圖形界面shell

(Graphical User Interface shell 即 GUI shell)

例如:應(yīng)用最為廣泛的Windows Explorer(微軟的Windows系列操作系統(tǒng)),還有也包括廣為人知的Linux shell,其中Linux shell包括X Window Manager(BlackBox和FluxBox),以及功能更強(qiáng)大的CDE、GNOME、KDE、 Xfce。

二:命令行式shell

(Command Line Interface shell ,即CLI shell)

例如:

sh(Bourne Shell)/csh/tcsh/bash/ksh/zsh/fish等(Unix及類(lèi)unix)

COMMAND.COM(CP/M系統(tǒng);MS-DOS、PC-DOS、DR-DOS、FreeDOS等DOS;Windows 9x)

cmd.exe/命令提示符(OS/2、Windows NT、React OS)

Windows PowerShell(支持.NET Framework技術(shù)的Windows NT)

10個(gè)必會(huì)的shell腳本

shell腳本中最重要的就是對(duì)shell命令的使用與組合,再使用shell腳本支持的一些語(yǔ)言特性,完成想要的功能。

1、編寫(xiě) helloworld 腳本
 

  1. #!/bin/bash 
  2. echo "hello world" 

2. 通過(guò)位置變量創(chuàng)建 Linux 系統(tǒng)賬戶(hù)及密碼
 

  1. #!/bin/bash 
  2. #$1 是執(zhí)行腳本的第一個(gè)參數(shù),$2 是執(zhí)行腳本的第二個(gè)參數(shù) 
  3. useradd    "$1" 
  4. echo "$2"  |  passwd  ‐‐stdin  "$2" 

3. 每周 5 使用 tar 命令備份/var/log 下的所有日志文件
 

  1. #vim  /root/logbak.sh 
  2. #編寫(xiě)備份腳本,備份后的文件名包含日期標(biāo)簽,防止后面的備份將前面的備份數(shù)據(jù)覆蓋 
  3. #注意 date 命令需要使用反引號(hào)括起來(lái),反引號(hào)在鍵盤(pán)<tab>鍵上面 
  4. tar    -czf    log-`date +%Y%m%d`.tar.gz    /var/log 
  5. # crontab ‐e                             #編寫(xiě)計(jì)劃任務(wù),執(zhí)行備份腳本 
  6. 00    03    *    *    5      /root/logbak.sh 

4. 一鍵部署 LNMP(RPM 包版本)

  1. #!/bin/bash 
  2. #使用 yum 安裝部署 LNMP,需要提前配置好 yum 源,否則該腳本會(huì)失敗 
  3. #本腳本使用于 centos7.2 或 RHEL7.2 
  4. yum ‐y install httpd 
  5. yum ‐y install mariadb mariadb‐devel mariadb‐server 
  6. yum ‐y install php  php‐mysql 
  7. systemctl start httpd mariadb 
  8. systemctl enable httpd mariadb 

5. 實(shí)時(shí)監(jiān)控本機(jī)內(nèi)存和硬盤(pán)剩余空間,剩余內(nèi)存小于 500M、根分區(qū)剩余空間小于 1000M時(shí),發(fā)送報(bào)警郵件給 root 管理員

  1. #!/bin/bash 
  2. #提取根分區(qū)剩余空間 
  3. disk_size=$(df / |awk '/\//{print $4}'
  4. #提取內(nèi)存剩余空間 
  5. mem_size=$(free |awk '/Mem/{print $4}'
  6. while : 
  7. do 
  8. #注意內(nèi)存和磁盤(pán)提取的空間大小都是以 Kb 為單位 
  9. if  [  $disk_size  ‐le  512000  ‐a  $mem_size  ‐le  1024000  ];then 
  10.      mail  ‐s  Warning  root  <<EOF 
  11. Insufficient resources,資源不足 
  12. EOF 
  13. fi 
  14. done 

6. 腳本生成一個(gè) 100 以?xún)?nèi)的隨機(jī)數(shù),提示用戶(hù)猜數(shù)字,根據(jù)用戶(hù)的輸入,提示用戶(hù)猜對(duì)了,猜小了或猜大了,直至用戶(hù)猜對(duì)腳本結(jié)束。

  1. #!/bin/bash 
  2. #RANDOM 為系統(tǒng)自帶的系統(tǒng)變量,值為 0‐32767 的隨機(jī)數(shù) 
  3. #使用取余算法將隨機(jī)數(shù)變?yōu)?nbsp;1‐100 的隨機(jī)數(shù) 
  4. num=$[RANDOM%100+1] 
  5. #使用 read 提示用戶(hù)猜數(shù)字 
  6. #使用 if 判斷用戶(hù)猜數(shù)字的大小關(guān)系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小 
  7. 于等于) 
  8. while  : 
  9. do 
  10.       read ‐p  "計(jì)算機(jī)生成了一個(gè) 1‐100 的隨機(jī)數(shù),你猜: "  cai 
  11.       if   [  $cai  ‐eq   $num  ];then 
  12.              echo   "恭喜,猜對(duì)了" 
  13.              exit 
  14.       elif  [  $cai   ‐gt   $num  ];then 
  15.              echo   "Oops,猜大了" 
  16.       else 
  17.              echo   "Oops,猜小了" 
  18.       fi 

7. 檢測(cè)本機(jī)當(dāng)前用戶(hù)是否為超級(jí)管理員,如果是管理員,則使用 yum 安裝 vsftpd,如果不是,則提示您非管理員(使用字串對(duì)比版本)

  1. #!/bin/bash 
  2. if  [  $USER  ==  "root"  ];then 
  3.          yum  ‐y  install   vsftpd 
  4. else 
  5.         echo "您不是管理員,沒(méi)有權(quán)限安裝軟件" 
  6. fi 

8. 檢測(cè)本機(jī)當(dāng)前用戶(hù)是否為超級(jí)管理員,如果是管理員,則使用 yum 安裝 vsftpd,如果不是,則提示您非管理員(使用 UID 數(shù)字對(duì)比版本)

  1. #!/bin/bash 
  2. if  [  $UID  ‐eq  0  ];then 
  3.          yum  ‐y  install   vsftpd 
  4. else 
  5.         echo "您不是管理員,沒(méi)有權(quán)限安裝軟件" 
  6. fi 

9. 編寫(xiě)腳本:提示用戶(hù)輸入用戶(hù)名和密碼,腳本自動(dòng)創(chuàng)建相應(yīng)的賬戶(hù)及配置密碼。如果用戶(hù)不輸入賬戶(hù)名,則提示必須輸入賬戶(hù)名并退出腳本;如果用戶(hù)不輸入密碼,則統(tǒng)一使用默認(rèn)的 123456 作為默認(rèn)密碼。

  1. #!/bin/bash 
  2. read  ‐p  "請(qǐng)輸入用戶(hù)名: "   user 
  3. #使用‐z 可以判斷一個(gè)變量是否為空,如果為空,提示用戶(hù)必須輸入賬戶(hù)名,并退出腳本,退出碼為 2 #沒(méi)有輸入用戶(hù)名腳本退出后,使用$?查看的返回碼為 2 
  4. if  [   ‐z  $user  ];then 
  5.       echo "您不需輸入賬戶(hù)名" 
  6.       exit 2 
  7. fi 
  8. #使用 stty ‐echo 關(guān)閉 shell 的回顯功能 
  9. #使用 stty  echo 打開(kāi) shell 的回顯功能 
  10. stty  ‐echo 
  11. read  ‐p  "請(qǐng)輸入密碼: "     pass 
  12. stty  echo 
  13. pass=${pass:‐123456} 
  14. useradd   "$user" 
  15. echo  "$pass"  |  passwd  ‐‐stdin   "$user" 

10. 依次提示用戶(hù)輸入 3 個(gè)整數(shù),腳本根據(jù)數(shù)字大小依次排序輸出 3 個(gè)數(shù)字

  1. #!/bin/bash 
  2. read ‐p "請(qǐng)輸入一個(gè)整數(shù):" num1 
  3. read ‐p "請(qǐng)輸入一個(gè)整數(shù):" num2 
  4. read ‐p "請(qǐng)輸入一個(gè)整數(shù):" num3 
  5. #不管誰(shuí)大誰(shuí)小,最后都打印 echo "$num1,$num2,$num3" 
  6. #num1 中永遠(yuǎn)存最小的值,num2 中永遠(yuǎn)存中間值,num3 永遠(yuǎn)存最大值 
  7. #如果輸入的不是這樣的順序,則改變數(shù)的存儲(chǔ)順序,如:可以將 num1 和 num2 的值對(duì)調(diào) 
  8. tmp=0 
  9. #如果 num1 大于 num2,就把 num1 和和 num2 的值對(duì)調(diào),確保 num1 變量中存的是最小值 
  10. if [ $num1 ‐gt $num2 ];then       
  11. tmp=$num1 
  12. num1=$num2 
  13. num2=$tmp 
  14. fi 
  15. #如果 num1 大于 num3,就把 num1 和 num3 對(duì)調(diào),確保 num1 變量中存的是最小值 
  16. if [ $num1 ‐gt $num3 ];then       
  17. tmp=$num1 
  18. num1=$num3 
  19. num3=$tmp 
  20. fi 
  21. #如果 num2 大于 num3,就把 num2 和 num3 對(duì)標(biāo),確保 num2 變量中存的是小一點(diǎn)的值 
  22. if [ $num2 ‐gt $num3 ];then    
  23. tmp=$num2 
  24. num2=$num3 
  25. num3=$tmp 
  26. fi 
  27. echo "排序后數(shù)據(jù)為:$num1,$num2,$num3"

本文分類(lèi):營(yíng)銷(xiāo)學(xué)院

瀏覽次數(shù):54次瀏覽

發(fā)布日期:2022-11-02 16:28:16

本文鏈接:http://m.bikeshoes.com.cn/edu/2466.html