了解如何在Bash中编写自定义程序以自动执行重复的操作任务。Unix最初的希望之一是让日常计算机用户能够微调他们的计算机以适应他们独特的工作风格。几十年来,对计算机定制的期望已经降低,许多用户将他们的应用程序和网站集合视为他们的“定制环境”。一个原因是很多操作系统的组件不是开源的,普通用户无法获得它们的源代码。但对于Linux用户来说,定制是可能的,因为整个系统围绕着通过终端可用的命令。终端不仅仅是用于快速命令或深入故障排除的界面;它也是一个脚本环境,可以通过为您处理日常任务来减少您的工作量。如何学习编程如果您以前从未编程过,您可能会面临两个截然不同的挑战:知道如何编码和知道要编码什么。您可以学习语法,但如果您不知道该语言中有哪些可用关键字,您将无法继续。在实践中,同时开始学习这两个概念,因为如果不塞满关键字就无法学习语法,因此最初您使用基本命令和基本编程结构编写简单的任务。一旦您熟悉了基础知识,您就可以探索该语言的更多内容,使您的程序能够完成越来越重要的事情。在Bash中,您使用的大多数关键字都是Linux命令。语法是Bash。如果您已经经常使用Bash,那么过渡到Bash编程相对容易。但是,如果您以前没有使用过Bash,您会很高兴知道它是一种为清晰和简单而构建的简单语言。交互设计学习编程时,有时最难弄清楚的是计算机可以为您做什么。显然,如果计算机可以自己完成您想做的所有事情,那么您就不必再接触计算机了。但现实是,人很重要。找到您的计算机可以帮助您的事情的关键是注意您需要在整个星期内重复执行的任务。计算机特别擅长重复性任务。但是,为了告诉计算机为您做某事,您必须知道如何做。这就是Bash擅长的地方:交互式编程。在终端中执行操作时,您也在学习如何编写脚本。例如,我曾经负责将大量PDF书籍转换为低墨水和打印友好的版本。一种方法是在PDF编辑器中打开PDF,从数百张图像(页面背景和纹理算作图像)中选择每一张,删除它们,然后将它们保存到新的PDF中。只是一本书,所以需要半天时间。我的第一个想法是学习如何编写PDF编辑器的脚本,但经过几天的研究,我找不到可以编写编辑PDF应用程序脚本的工具(除了非常丑陋的鼠标自动化技巧)。因此,我将注意力转向弄清楚如何在终端内完成工作。这让我有了几个新发现,包括GhostScript,它是PostScript(PDF所基于的打印机语言)的开源版本。通过使用GhostScript处理几天的任务,我确认这就是我的问题的解决方案。编写一个基本脚本来运行命令只不过是复制我用来从PDF中删除图像的命令和选项并将它们粘贴到文本文件中。将此文件作为脚本运行可能会产生相同的结果。将参数传递给Bash脚本在终端中运行命令与在shell脚本中运行命令的区别在于前者是交互式的。在终端中,您可以随时进行调整。例如,如果我刚刚处理example_1.pdf并准备处理下一个文档,为了适应我的命令,我只需要更改文件名。Shell脚本不是交互式的。事实上,shell脚本存在的唯一原因是您不必自己动手。这就是命令(以及运行它们的shell脚本)接受参数的原因。在shell脚本中,有一些预定义的变量反映了脚本是如何启动的。初始变量是$0,代表启动脚本的命令。下一个变量是$1,它代表传递给shell脚本的第一个“参数”。比如在命令echohello中,命令echo为$0,关键字hello为$1,world为$2。shell中的交互看起来像这样:$echohelloworldhelloworld在非交互式shell脚本中,您可以以非常直观的方式做同样的事情。将此文本输入文本文件并将其保存为hello.sh:echohelloworld执行此脚本:$bashhello.shhelloworld也可以,但没有利用脚本可以接受输入的事实。将hello.sh更改为:echo$1使用引号中的两个参数运行脚本:$bashhello.sh"hellobash"hellobash对于我的PDF瘦身项目,我真的需要这个不是交互式的,因为每个PDF都需要几分钟来压缩。但是通过创建一个接受我的输入的脚本,我可以同时向脚本提交多个PDF文件。该脚本按顺序处理每个文件,这可能需要半小时或更长时间,但我可以将这半小时用于其他任务。流控制创建Bash脚本是完全可以接受的,这些脚本本质上是您为实现需要重复执行的任务而设置的确切过程的副本。但是,可以通过控制信息流使脚本更加强大。管理脚本对数据的响应的常用方式有:if/then选择结构语句for循环结构语句while循环结构语句case语句计算机不智能是的,但他们善于比较和分析数据。如果您在其中构建一些数据分析,脚本就会变得更加智能。例如,基本的hello.sh脚本在有或没有内容的情况下运行:$bashhello.shfoofoo$bashhello.sh$如果在不接收输入的情况下提供帮助消息会更容易使用。下面是一个if/then语句,如果你以最基本的方式使用Bash,你可能不知道Bash中有这样的语句。但是编程的一部分是学习语言,通过一些研究,您将了解if/then语句:if["$1"=""];thenecho"syntax:$0WORD"echo"Ifyouprovidemorethanoneword,enclosedtheminquotes."elseecho"$1"firunthenewversionofhello.sh输出如下:$bashhello.shsyntax:hello.shWORDI如果您提供了多个单词,请将它们括在引号中。$bashhello.sh"helloworld"helloworld使用脚本无论您是要从PDF文件中查找要删除的图像、管理混乱的下载文件夹,还是创建和提供Kubernetes图像,学习编写Bash脚本都是您所需要的从Bash开始,并了解如何将这些脚本从命令列表转变为响应您的输入的内容。这通常是一个发现的过程:您一定会发现新的Linux命令来执行您从未想过可以使用文本命令完成的任务,并且您会发现Bash的新功能,这些功能使您的脚本能够适应您想要的一切做。不同的方式。学习这些技术的一种方法是阅读其他人的脚本。看看人们如何在他们的系统上自动执行死记硬背的命令。查看您熟悉的那些,并查找有关您不熟悉的那些的更多信息。另一种方法是下载我们的Bash编程入门电子书。它向您介绍了特定于Bash的编程概念,并且通过您学习的结构,您可以开始构建自己的命令。当然,它是免费的,并已根据知识共享许可下载和分发,所以今天就下载吧。下载我们关于Bash编程的电子书!
