Linux——Shell脚本编程(1)

这篇具有很好参考价值的文章主要介绍了Linux——Shell脚本编程(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么要学习 Shell 编程 ?

1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
2)对于 JavaEE 和 Python 程序员来说,工作的需要,要求你编写一些 Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
3) 对于大数据程序员来说,需要编写Shell程序来管理集群。

二、Shell 使用场景

①、Shell 是什么 

        由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需另外再开发一个程序让用户直接使用这个程序;该程序作用就是接收用户操作(点击图标、输入命令)并进行简单处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。在用户和内核之间加一层“代理”,既能简化操作又能保障内核安全。

Linux——Shell脚本编程(1),Linux和部署,后端,学习方法,java,linux,服务器,运维,运维开发


        这个另外开发的程序就是这层“代理”。Linux下这个命令行程序叫 Shell。是一个应用程序,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核基础上编写的一个应用程序,和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性就是开机立马启动;用户通过 Shell 来使用 Linux,不启动 Shell 的话用户就没办法使用 Linux。

②、Shell 如何连接用户和内核?

        Shell 程序本身功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。运行一个命令,大部分情况下 Shell 会去调用内核暴露出来的接口,这就是在使用内核,只是这个过程被 Shell 隐藏了起来,它自己在背后默默进行看不到而已。
        接口其实就是一个个函数,使用内核就是调用这些函数。这就是使用内核全部内容了吗?嗯,是的!除了函数,没有别的途径使用内核。比如Shell 中输入cat log.txt命令就可以查看 log.txt 文件中的内容,然而log.txt 放在磁盘的哪个位置?分成了几个数据块?在哪里开始?在哪里终止?如何操作探头读取它?这些底层细节 Shell 统统不知道的,它只能去调用内核提供的 open() 和 read() 函数,告诉内核我要读取 log.txt 文件,然后内核就按照 Shell 的吩咐去读取文件了,并将读取到的文件内容交给 Shell,最后由 Shell 呈现给用户(其实呈现到显示器上还得依赖内核)。整个过程 Shell 就是一个“中间商”,它在用户和内核之间“倒卖”数据。

三、Shell 连接其它程序

        Shell 中输入的命令,有一部分是 Shell 本身自带的叫做内置命令;有一部分是其它应用程序(一个程序就是一个命令)这叫做外部命令。Shell 本身支持的命令并不多功能也有限,但 Shell 可以调用其他程序,每个程序就是一个命令,使得 Shell 命令数量可以无限扩展,结果就是 Shell 功能非常强大,完全能够胜任 Linux 日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。更加惊讶的是,Shell 还可以让多个外部程序发生连接,在它们之间很方便地传递数据,就是把一个程序的输出结果传递给另一个程序作为输入。Shell 强大,并不是 Shell 本身功能丰富,而是它擅长使用和组织其他的程序。可以将 Shell 在整个 Linux 系统中的地位描述成下图所示的样子。注意“用户”和“其它应用程序”是通过虚线连接的,因为用户启动 Linux 后直接面对的是 Shell,通过 Shell 才能运行其它的应用程序。

Linux——Shell脚本编程(1),Linux和部署,后端,学习方法,java,linux,服务器,运维,运维开发

四、Shell 编程(Shell 是一种脚本语言)

        Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C++、C#、Java、Python 等常见的编程语言并没有什么两样。Shell 虽然没有 C++、Java、Python 等强大,但也支持了基本的编程元素,例如:

  • if...else 选择结构,case...in 开关语句,for、while、until 循环;
  • 变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
  • 函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)。

        站在这个角度讲,Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。我们平时所说的 Shell,有时候是指连接用户和内核的这个程序,有时候又是指 Shell 编程。Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、搭建 Web 运行环境、日志分析等,Shell 都非常合适。
        尤其是 Linux 运维工程师,Shell 更是必不可少的,是必须掌握的技能,它使得我们能够自动化地管理服务器集群,否则你就得一个一个地登录所有的服务器,对每一台服务器都进行相同的设置,而这些服务器可能有成百上千之多,会浪费大量的时间在重复性的工作上。

五、常见的 Shell

常见的 Shell 有 sh、bash、csh、tcsh、ash 等。

sh

        sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

csh

        sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。

BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。

tcsh

        tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

ash

        一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

bash

        bash shell 是 Linux 的默认 shell。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。

尽管如此,bash 和 sh 还是有一些不同之处:

  • 一方面,bash 扩展了一些命令和参数;
  • 另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

六、Shell 脚本的执行方式

脚本格式要求

1)脚本以#!/bin/bash开头
2)脚本需要有可执行权限

方式1(输入脚本的绝对路径或相对路径)

说明:首先要赋予helloworld.sh 脚本的+x权限, 再执行脚本

比如/hello.sh 或者使用绝对路径/root/shcode/hello.sh

方式2(sh+脚本)

说明:不用赋予脚本+x权限,直接执行即可。比如 shhello.sh,也可以使用绝对路径

七、编写第一个Shell 脚本

创建一个 Shell 脚本,输出hello world!

vim hello.sh
#!/bin/bash
echo "hello,world~"

Linux——Shell脚本编程(1),Linux和部署,后端,学习方法,java,linux,服务器,运维,运维开发

Linux——Shell脚本编程(1),Linux和部署,后端,学习方法,java,linux,服务器,运维,运维开发文章来源地址https://www.toymoban.com/news/detail-708653.html

 八、参考资料:Shell脚本手册.pdf (aliyuncs.com)

到了这里,关于Linux——Shell脚本编程(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux命令行与Shell脚本编程】第十六章 Shell函数

    脚本函数基础 函数返回值 在函数中使用变量 数组变量和函数 函数递归 创建库 在命令行中使用函数 可以将shell脚本代码放入函数中封装起来,这样就能在脚本的任意位置多次使用. 函数是一个脚本代码块,可以并在脚本中的任何位置重用它。当需要在脚本中使用该代码块时

    2024年02月14日
    浏览(54)
  • 3.7 Linux shell脚本编程(分支语句、循环语句)

    目录 分支语句(对标C语言中的if) 多路分支语句(对标C语言中的swich case) 分支语句(对标C语言中的if) 语法结构:          if    表达式                  then  命令表          fi     如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。

    2024年02月02日
    浏览(46)
  • Linux shell编程学习笔记29:shell自带的 脚本调试 选项

    Linux shell脚本的调试方法比较多,上次我们探讨和测试了shell内建命令set所提供的一些调试选项,其实 shell 本身也提供了一些调试选项。我们以bash为例来看看。 purleEndurer @ csdn ~ $ bash --help GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu) Usage:  bash [GNU long option] [option] ...      

    2024年02月04日
    浏览(56)
  • 【Linux命令行与Shell脚本编程】第十四章,呈现数据

    第十四章 呈现数据 1.1,标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.1.1,STDIN 标准输入 1.1.2,STDOUT 标准输出 1.1.3,STDERR 错误输出 1.2,重定向错误 1.2.1.只重定向错误 n 1.2.2.重定向错误消息和正常输出 2.1,临时重定向 2.2,永久重定向 exec 4

    2023年04月25日
    浏览(43)
  • linux|shell编程|shell脚本内的加减乘除运算实现示例

    shell脚本内的加减乘除是由于在编写kubernetes巡检脚本的时候,某些部分需要做一点简单的运算,突然发现我其实对这些不太熟悉。 因此,查阅了一些资料,现在就加减乘除运算在shell脚本内如何应用做一个简单的总结,写的不对的地方请各位轻点喷 首先,我们看一个错误的示

    2024年02月17日
    浏览(44)
  • 【Linux命令行与Shell脚本编程】第十九章 正则表达式

    正则表达式基础 定义BRE模式 扩展正则表达式 在sed和gawk中创建正则表达式,以得到所需的数据。 正则表达式是一种可供Linux工具过滤文本的自定义模板,使用元字符来描述数据流中的一个或多个字符. Linux工具(比如sed或gawk)会在读取数据时使用正则表达式对数据进行模式匹配

    2024年02月13日
    浏览(57)
  • Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!

     * 20231020 写这篇博文断断续续花了好几天,为了说明不同shell在执行同一脚本文件时的差别,我分别在csdn提供线上Linux环境 (使用的shell是zsh)和自己的电脑上(使用的shell是bash)做测试。功夫不负有心人,在其中一些实例中可以体现出zsh和bash的对脚本文件支持的差别,收

    2024年02月07日
    浏览(57)
  • lv3 嵌入式开发-5 linux shell脚本编程(概念、变量、语句)

     Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能  第一个Shell脚本文件 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念

    2024年02月10日
    浏览(83)
  • 【Linux编程Shell自动化脚本】03 shell四剑客(find、sed、grep、awk)

    语法格式 参数说明 : path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    浏览(53)
  • Linux Shell 脚本编程学习之【第3章 正则表达式 (第一部分)】

    1、正则表达式是由一串字符和元字符构成的字符串,简称 RE(Regular Expression)。 2、正则表达式起到数据过滤作用。 3、POSIX 标准将正则表达式分为两类:基本的正则表达式和扩展的正则表达式,大部分 Linux 应用和工具仅支持基本的正则表达式。 Linux Shell 以一串字符作为表达式

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包