Bash for DevOps2024 年 8 月 28 日 | 阅读 9 分钟 在计算机的早期,处理数据或执行操作的计算机与提供指令以进行处理的工具是分开的。 一方面,终端用于向计算机发送命令。另一方面,我们有计算机,它是一种处理命令的硬件。 如今,有些计算机可以通过图形用户界面(GUI)提供命令并执行计算。但是,对于某些任务,访问命令行或终端通常比使用 GUI 更有效。 我们可以通过终端发送命令以编程方式完成这些任务。例如,在终端中处理文件比在 Windows 资源管理器等图形环境中使用文件更快、更有效。我们还可以使用终端来启动和执行开放的、可重复的任务,例如 Jupyter Notebook、Python 和 GIT。 在了解 Bash 之前,我们需要了解什么是Shell。Shell 是计算机使用的主要程序,用于接收命令代码。这些命令可以通过终端输入和执行,终端允许我们通过键盘键入命令来控制计算机,而不是使用鼠标或键盘在 GUI 中点击按钮或下拉菜单。 BashBash 也被称为“Bourne Again Shell”。它是 Shell 的实现,它允许我们高效地执行许多任务。我们可以快速使用 Bash 通过命令行对多个文件执行操作。我们也可以像 Python 一样编写和执行 Bash 脚本,这些脚本可以在不同的操作系统上执行。在终端中使用 Bash 是与计算机、GUI 和命令行交互的强大方式。Bash 是互补的;通过同时了解两者,我们可以极大地扩展我们可以用计算机完成的任务范围。 使用 Bash 命令,我们可以高效地执行许多任务,并跨 Linux、Windows 等操作系统实现自动化和复制工作。 我们可以在命令行上运行的常见任务包括以下内容:
Bash 的特性使用终端 Bash 为我们提供了:
DevOps 之前它是一个瀑布模型和构建解决方案的传统方法。之所以称为瀑布,是因为我们拿出所有单独的需求和项目的各个部分,然后它们相互级联。 什么是 DevOpsDevOps 是开发团队和运营团队之间的协作,能够为我们的最终用户持续交付应用程序和服务。 DevOps 的好处让我们讨论一下 DevOps 的一些好处。它们是:
Brian Fox 为 GNU 项目创建了 Unix Shell 和命令语言 Bash,作为 Bourne Shell 的免费软件替代品。它于 1989 年首次发布,此后,大多数 Linux 发行版、Apple 的 macOS Mojave 以及早期版本都将其作为默认登录 Shell。Windows 10 也提供了一个变体,并且是 Solaris 11 中的默认客户端 Shell。 Bash 是一个命令处理器,通常在文本窗口中运行,用户在其中键入会导致操作的命令。Bash 还可以读取和执行 shell 脚本文件中的命令。像所有 Unix Shell 一样,它支持文件名通配(通配符匹配)、管道、here 文档、命令替换、变量和用于条件测试和循环的控制结构。关键字、语法、动态读取的变量和其他基本语言特性都复制自 sh。其他特性,例如历史记录,则复制自 csh 和 ksh。Bash 是一个符合 POSIX 标准的 Shell,但带有许多扩展。 Shell,它是对它所替代的 Bourne Shell 的名称以及“born again”的含义的文字游戏,是 Bourne Again Shell 的缩写。 Bash 在 1.03 版本(1989 年 8 月)中存在一个安全漏洞,名为 Shellshock,在 2014 年 9 月初被发现,并立即导致了网络上的各种攻击。修复这些错误的补丁在发现错误后不久就已提供。 DevOps 中的 Bash 脚本因此,所有开发管理人员都应该掌握一门脚本语言作为他们的第一项技能,以帮助他们处理服务器、软件和硬件。它们是学习成长的基础,并且非常强大。Bash 仍然在使用,是的。如果您查看普通的 Linux 或 UNIX 系统,您会发现它带有几个 shell 脚本。 大多数现代 Linux 发行版仍然使用 Bash。它是大多数系统初始化的默认 Shell,包括 System V init 脚本。它是一种用于 Shell 的脚本语言,您必须了解它才能维护 Linux 服务器。制作 GUI 应用程序很难,但这是值得的。 我已经将脚本用于指定的目标,以及许多其他目标。 您可以使用脚本在系统启动时初始化任何内容。因此,无需手动劳动。
启动脚本(/etc/init.d)
为什么有人会使用 Bash?与其他 CLI 一样,Bash 被需要精确处理文件和数据的计算机程序使用,尤其是在数据量很大时。数据必须被搜索、排序、处理或以其他方式处理。Bash 最常见的用途包括:
除了经常交互式使用外,Bash 还可以用于构建 shell 脚本。Bash 脚本可以用于自动化几乎任何计算机过程,并且 Bash 脚本可以立即运行或定期运行。 Bash 实际上是如何工作的?从表面上看,Bash 似乎是一个简单的命令/响应系统,用户输入命令,Bash 在这些命令运行后返回结果。然而,Bash also 也是一个编程平台,并且允许用户编写接受输入并使用 shell 命令在 shell 脚本中生成输出的程序。 Bash 的一个基本命令 ls,只做一件事:列出目录内容。单独使用时,此命令列出当前工作目录中的文件和子目录的名称。 ls 命令有许多参数可以修改结果的显示方式。与 ls 命令一起使用的一些常用参数包括: -l 使用更长、更详细的列表格式,包括文件权限、文件所有者、组、大小和创建日期/时间。 -a 列出所有文件和子目录,包括那些传统上被隐藏的文件。 -s 显示每个文件的大小。 -h 以可读格式显示文件和子目录的大小,使用 K、M、G 等表示千字节、兆字节和千兆字节。 -R 它告诉我们当前工作目录下的所有文件和子目录的递归列表。 通过将一个命令的输出用作另一个命令的输入,Bash 可以组合命令。例如,即使使用 -R 参数指定列表应递归,也可以使用此命令列出文件系统上的每个文件。 上述命令返回的记录太多,人类难以理解,尤其是在从系统根目录轻松访问时。 当使用管道符号(竖线,或 "|")将目录列表的输出管道传输到 grep 命令时,grep 命令只返回文件名包含指定文本模式的文件和子目录。这个命令: 此程序可用于查找特定文件,因为它只返回包含文本的文件。 通过使用 bash 命令行,交互地执行以下操作要简单得多: 管理文件和目录;监控网络配置; 修改配置文件(或任何其他文本文件)并比较两个文件。 示例一些 bash 命令的例子是:
Bash 自动化是什么?Bash shell 是一个强大的 Linux shell,它允许从头到尾自动化繁琐的任务。Bash Linux shell 不仅是 DevOps 的绝佳选择。数据集和测试配置也一样;用户每天都可以从逐渐学习、不断增加的 Bash 能力中受益。Bash 也是一种脚本和编码语言,它会让你逐渐适应。我们自 2012 年以来一直在有效地使用 Bash 进行编码,并且使用它的时间比这更长。 Bash 还适用于各种使用领域和用例。例如,您可以轻松地将其用于大数据处理,并且由于它内部或作为易于安装的软件包提供的海量文本处理工具,它似乎非常适合这项任务。它也非常适合备份和数据库计划及维护,处理大型文件存储解决方案,自动化 Web 服务器等等。 每当出现下一个问题时,在搜索引擎或各种 Stackoverflow 网站上进行一些研究,都会很快找到解决问题的答案,但也是一个成长和学习的机会。因此,这就像对一个学习管理员 vi 的人来说一样,其中也存在类似之处;每当出现一个问题时,解决方案就在手边。 这个迷你系列由三部分组成,这是第一部分;在其中,我们将研究 Bash 自动化和脚本基础。 |
我们请求您订阅我们的新闻通讯以获取最新更新。