首页-帮助中心-详情

shell是什么意思

发布日期:2023-11-02   来源:小码王编程    查看人数: 6

导读:Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.C...

Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

Shell是什么


Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。


Shell有几类


一:图形界面shell

(Graphical User Interface shell 即 GUI shell)

例如:应用最为广泛的Windows Explorer(微软的Windows系列操作系统),还有也包括广为人知的Linux shell,其中Linux shell包括X Window Manager(BlackBox和FluxBox),以及功能更强大的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系统;MS-DOS、PC-DOS、DR-DOS、FreeDOS等DOS;Windows 9x)

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

Windows PowerShell(支持.NET Framework技术的Windows NT)


10个必会的shell脚本


shell脚本中最重要的就是对shell命令的使用与组合,再使用shell脚本支持的一些语言特性,完成想要的功能。

1、编写 helloworld 脚本
 

  1. #!/bin/bash 

  2. echo "hello world" 

2. 通过位置变量创建 Linux 系统账户及密码
 

  1. #!/bin/bash 

  2. #$1 是执行脚本的个参数,$2 是执行脚本的第二个参数 

  3. useradd    "$1" 

  4. echo "$2"  |  passwd  ‐‐stdin  "$2" 

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

  1. #vim  /root/logbak.sh 

  2. #编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖 

  3. #注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面 

  4. tar    -czf    log-`date +%Y%m%d`.tar.gz    /var/log 

  5. # crontab ‐e                             #编写计划任务,执行备份脚本 

  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. 实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员

  1. #!/bin/bash 

  2. #提取根分区剩余空间 

  3. disk_size=$(df / |awk '/\//{print $4}'

  4. #提取内存剩余空间 

  5. mem_size=$(free |awk '/Mem/{print $4}'

  6. while : 

  7. do 

  8. #注意内存和磁盘提取的空间大小都是以 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 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

  1. #!/bin/bash 

  2. #RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数 

  3. #使用取余算法将随机数变为 1‐100 的随机数 

  4. num=$[RANDOM%100+1] 

  5. #使用 read 提示用户猜数字 

  6. #使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小 

  7. 于等于) 

  8. while  : 

  9. do 

  10.       read ‐p  "计算机生成了一个 1‐100 的随机数,你猜: "  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. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)

  1. #!/bin/bash 

  2. if  [  $USER  ==  "root"  ];then 

  3.          yum  ‐y  install   vsftpd 

  4. else 

  5.         echo "您不是管理员,没有权限安装软件" 

  6. fi 

8. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用 UID 数字对比版本)

  1. #!/bin/bash 

  2. if  [  $UID  ‐eq  0  ];then 

  3.          yum  ‐y  install   vsftpd 

  4. else 

  5.         echo "您不是管理员,没有权限安装软件" 

  6. fi 

9. 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

  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 关闭 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 个整数,脚本根据数字大小依次排序输出 3 个数字

  1. #!/bin/bash 

  2. read ‐p "请输入一个整数:" num1 

  3. read ‐p "请输入一个整数:" num2 

  4. read ‐p "请输入一个整数:" num3 

  5. #不管谁大谁小,最后都打印 echo "$num1,$num2,$num3" 

  6. #num1 中永远存最小的值,num2 中永远存中间值,num3 永远存更大值 

  7. #如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调 

  8. tmp=0 

  9. #如果 num1 大于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最小值 

  10. if [ $num1 ‐gt $num2 ];then       

  11. tmp=$num1 

  12. num1=$num2 

  13. num2=$tmp 

  14. fi 

  15. #如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值 

  16. if [ $num1 ‐gt $num3 ];then       

  17. tmp=$num1 

  18. num1=$num3 

  19. num3=$tmp 

  20. fi 

  21. #如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值 

  22. if [ $num2 ‐gt $num3 ];then    

  23. tmp=$num2 

  24. num2=$num3 

  25. num3=$tmp 

  26. fi 

  27. echo "排序后数据为:$num1,$num2,$num3"


你也想0元试听小码王少儿编程课程吗?
填写信息免费预约
我已阅读并同意《小码王服务条款》

免责说明:以上展示内容源于网络、合作媒体和网友提供,转载请说明出处。我们对站内所有内容、观点保持中立,如您发现该内容有任何违法/侵权信息,请及时联系我们处理!
本文标题:shell是什么意思,本文链接: http://www.xiaomawang.vip/help/20963.html