• 【Shell 脚本速成】01、编程语言与 Shell 脚本介绍


    目录

    一、编程语言介绍

    二、shell介绍

    1、shell介绍

    2、bash shell基本特性

    2.1 命令和文件自动补全

    2.2 常见的快捷键

    3、shell脚本介绍

    准确来说:

    3.1 案例演示

    3.2 什么时候用到脚本?

    4、shell脚本语法

    4.1 shell脚本组成

    4.2 脚本文件命名规范

    4.3 代码规范

    4.4 脚本执行方法


     

    一、编程语言介绍

            编程语言是指计算机能理解的语言,人类通过使用计算机语言可以给计算机批量下达任务,让其按照人类的思想去完成工作。最常见的语言有:汇编语言、C语言、java语言、php语言、Python语言、golang语言等等。

    编程语言分类:

    • 编译型语言

            程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、java

    • 解释型语言

            程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。

    二、shell介绍

    shell在计算机中起到什么作用呢?为什么要求shell呢,我们可以看看计算机操作系统的组成:

    看图之后问大家个问题,两个人在电话聊天:只会说法语的法国人,只会说汉语的你。如何沟通呢?

    请个翻译在你两中间

    同理,系统内核只知道二进制

    如果你想给计算机内核下任务,让其驱动硬件干活,那么有两种选择

    1、你学会二进制

    2、找个翻译

    1、shell介绍

    shell就是我们找来的翻译

            shell是一个程序,采用C语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。通过一个图表来查看一下shell的作用。

    2、bash shell基本特性

    知己知彼方可百战百胜,如何应用Bash shell,我们先看看他的特性,有助于我们快速应用。

    2.1 命令和文件自动补全

    Tab能补全命令和文件名称

    2.2 常见的快捷键

    1. Ctrl + c 终止前台运行的程序
    2. Ctrl + z 将前台运行的程序挂起到后台
    3. Ctrl + d 退出 等价exit
    4. Ctrl + l 清屏
    5. Ctrl + a 光标移到命令行的最前端
    6. Ctrl + e 光标移到命令行的最后端
    7. Ctrl + u 删除光标前所有字符
    8. Ctrl + k 删除光标后所有字符
    9. Ctrl + r 搜索历史命令

    3、shell脚本介绍

            shell脚本是什么?简单来说就是将需要完成某个任务所执行的命令按照执行顺序保存到文本中,并给予执行权限。

    • 它是按照顺序从上到下执行脚本命令。
    • 它是解释型的,意味着不需要编译。

    准确来说:

    若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本

    3.1 案例演示

    1. # 需求 # 执行的命令
    2. 创建一个用户:harry useradd harry
    3. 密码设置为:yunwei.98989 echo "yunwei.98989"|passwd --stdin harry
    4. 该用户创建文件夹/tmp/zutuanxue mkdir /tmp/zutuanxue
    5. 该用户创建文件/tmp/zutuanxue/README touch /tmp/zutuanxue/README
    6. 将“hello world“输入到/tmp/zutuanxue/README echo 'hello world' > /tmp/zutuanxue/README
    7. # 实现的代码 test.sh
    8. [root@sql-master ~]# cat test.sh
    9. #!/bin/bash
    10. #DESC: this is a test script
    11. #AUTHOR: Sky
    12. #RELEASE: 1.0
    13. # 创建用户harry
    14. useradd harry
    15. # 设置用户密码 yunwei.98989
    16. echo "yunwei.98989"|passwd --stdin harry
    17. # 使用harry创建文件夹,文件,输入文件中内容
    18. su - harry -c "mkdir /tmp/zutuanxue"
    19. su - harry -c "touch /tmp/zutuanxue/README"
    20. su - harry -c "echo 'hello world' > /tmp/zutuanxue/README"
    21. # 添加执行权限
    22. [root@sql-master ~]# chmod +x test.sh
    23. # 执行脚本
    24. [root@sql-master ~]# ./test.sh
    25. 更改用户 harry 的密码 。
    26. passwd:所有的身份验证令牌已经成功更新。

    验证脚本是否执行成功:

     

    3.2 什么时候用到脚本?

    重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。

    • 自动化分析处理
    • 自动化备份
    • 自动化批量部署安装等

    4、shell脚本语法

    来吧,光说不练嘴把式,我们来看看如何书写一个脚本呢,写好一个脚本有哪些规范呢?

    4.1 shell脚本组成

    4.2 脚本文件命名规范

            咱们编写的脚本文件名称尽量言简意赅,例如编写一个nginx的安装脚本,命名名称可以为nginx_install.sh

    • 脚本扩展名 .sh
    • 名字不要太长,尽量在26个字节内

    4.3 代码规范

    1. 1、#!/bin/bash
    2. //脚本第一行, #!魔法字符,指定脚本代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用哪一种Shell
    3. 2"#"代表注释,第一行 #!特例
    4. 3//以下内容是对脚本的基本信息的描述,大家可以根据实际情况尽可能的写详细一些,方便后续使用者阅读了解
    5. # Name: 脚本名字
    6. # Desc:描述describe
    7. # Path:存放路径
    8. # Usage:用法
    9. # Update:更新时间
    10. # Author:作者
    11. # Release: 分发版本
    12. 4//下面就是脚本的具体内容了
    13. commands
    14. ...

    4.4 脚本执行方法

    • 标准脚本执行方法(建议):
    1. # 编写完脚本文件后,添加执行权限
    2. [root@sql-master ~]# cat 1.sh
    3. #!/bin/bash
    4. #xxxx
    5. #xxx
    6. #xxx
    7. hostname
    8. date
    9. [root@sql-master ~]# chmod +x 1.sh
    10. #1. 绝对路径执行脚本
    11. [root@sql-master ~]# /root/1.sh
    12. #2. 当前路径执行脚本
    13. [root@sql-master ~]# ./1.sh
    •  非标准的执行方法(不太建议):
    1. [root@sql-master ~]# bash 1.sh
    2. [root@sql-master ~]# sh 1.sh
    3. [root@sql-master ~]# bash -x 1.sh
    4. -x:一般用于排错,查看脚本的执行过程
    5. -n:用来查看脚本的语法是否有问题
    6. 注意:如果脚本没有加可执行权限,不能直接使用标准的执行方法执行脚本,可以使用 bash 1.sh

    参考文档:编程语言与shell脚本-组团学 

  • 相关阅读:
    【SpringSecurity】十一、SpringSecurity集成JWT实现token的方法与校验
    Ext JS 如何定义公用方法(单例类 or 静态方法)
    开源库源码分析:Okhttp源码分析(一)
    【多线程与高并发】- 浅谈volatile
    K8S的调度算法在仿真实验的实现
    Linux系统编程_文件编程第1天:打开、写入、读取、关闭文件等编程
    delphi技术专题---获取网卡物理地址之NetBios网络编程接口LANA介绍
    Retrofit 在kotlin中使用及解析
    Java中集合ArrayList、LinkedList以及HashMap常用容器详解及其区别
    英特尔软硬优化,赋能东软加速智慧医疗时代到来
  • 原文地址:https://blog.csdn.net/weixin_46560589/article/details/127981129