專注搜索競價代運(yùn)營

成長之選 ,效果之道!

免費咨詢熱線:17636682598

shell是什么意思

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

Shell是什么

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

Shell有幾類

一:圖形界面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及類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個必會的shell腳本

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

1、編寫 helloworld 腳本
 

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

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

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

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

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

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

  1. #!/bin/bash 
  2. #使用 yum 安裝部署 LNMP,需要提前配置好 yum 源,否則該腳本會失敗 
  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. 實時監(jiān)控本機(jī)內(nèi)存和硬盤剩余空間,剩余內(nèi)存小于 500M、根分區(qū)剩余空間小于 1000M時,發(fā)送報警郵件給 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)存和磁盤提取的空間大小都是以 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. 腳本生成一個 100 以內(nèi)的隨機(jī)數(shù),提示用戶猜數(shù)字,根據(jù)用戶的輸入,提示用戶猜對了,猜小了或猜大了,直至用戶猜對腳本結(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 提示用戶猜數(shù)字 
  6. #使用 if 判斷用戶猜數(shù)字的大小關(guān)系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小 
  7. 于等于) 
  8. while  : 
  9. do 
  10.       read ‐p  "計算機(jī)生成了一個 1‐100 的隨機(jī)數(shù),你猜: "  cai 
  11.       if   [  $cai  ‐eq   $num  ];then 
  12.              echo   "恭喜,猜對了" 
  13.              exit 
  14.       elif  [  $cai   ‐gt   $num  ];then 
  15.              echo   "Oops,猜大了" 
  16.       else 
  17.              echo   "Oops,猜小了" 
  18.       fi 

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

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

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

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

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

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

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

  1. #!/bin/bash 
  2. read ‐p "請輸入一個整數(shù):" num1 
  3. read ‐p "請輸入一個整數(shù):" num2 
  4. read ‐p "請輸入一個整數(shù):" num3 
  5. #不管誰大誰小,最后都打印 echo "$num1,$num2,$num3" 
  6. #num1 中永遠(yuǎn)存最小的值,num2 中永遠(yuǎn)存中間值,num3 永遠(yuǎn)存最大值 
  7. #如果輸入的不是這樣的順序,則改變數(shù)的存儲順序,如:可以將 num1 和 num2 的值對調(diào) 
  8. tmp=0 
  9. #如果 num1 大于 num2,就把 num1 和和 num2 的值對調(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 對調(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 對標(biāo),確保 num2 變量中存的是小一點的值 
  22. if [ $num2 ‐gt $num3 ];then    
  23. tmp=$num2 
  24. num2=$num3 
  25. num3=$tmp 
  26. fi 
  27. echo "排序后數(shù)據(jù)為:$num1,$num2,$num3"

本文分類:營銷學(xué)院

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

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

本文鏈接:http://www.ozone-depletion.net/edu/2466.html