![Linux 脚本有多有用?](https://linux22.com/image/25037/Linux%20%E8%84%9A%E6%9C%AC%E6%9C%89%E5%A4%9A%E6%9C%89%E7%94%A8%EF%BC%9F%20.png)
我正在尝试通过学习 shell 命令来达到中级水平。
在在线 Linux 论坛中,人们通常一致认为,要成为一名高级 Linux 用户,就应该了解脚本编写。我本人没有编写操作系统脚本的经验,也不知道炒作是什么。
我的理解是,这只是系统管理员通过发出一组复制命令来进行备份的一种便捷方式。
这种理解正确吗?通常使用脚本执行什么类型的高级任务?
在 1 到 10 的范围内,1 被高估了,10 是解决所有 Linux 问题的灵丹妙药,Linux 脚本处于什么位置?
答案1
脚本只是编程的一种形式。就是这样,没有什么魔法。
如今,有了功能齐全的现代 Linux 发行版,您几乎只需使用图形界面即可管理您的系统。如果这些工具能够满足您需要做的事情,那么您真的没问题。
现在,如果这些接口没有涵盖您需要执行的某些任务,或者您需要在睡眠时在后台运行它们,在您只能通过 shell 访问的计算机上,...然后你需要使用其他东西。
Unix 类型系统上的“其他东西”的起点是 shell 和 shell 脚本。
您的 Linux 系统为您的 shell 提供了一个非常大的实用程序工具箱。文件管理(复制、移动、查找、比较文件等)和文本文件操作(打印、修改、比较、分析等)的内容非常常见,因为类 Unix 系统都是关于文件的,并且大多数软件(和操作系统)配置文件是纯文本。
如果您有需要,请开始学习这些内容。然后研究你感兴趣的工具(媒体转换、数据库、网站管理、系统监控……这个列表是无穷无尽的)。
备份是非常需要自动化的任务之一。但任何重复的事情都可以(而且可能应该)自动化。
需要将所有 FLAC 文件转换为 MP3 以供媒体播放器使用?编写一次脚本,下次您就可以用一个命令来完成该操作。
需要将您最新的假期拍摄的缩略图放在您的网站上吗?编写脚本! (当您在那里时,也编写网站更新脚本。)
需要清理旧日志文件吗?编写脚本,无论如何,您下周还需要再次执行此操作。
需要为服务器场上的性能指标制作漂亮的图表吗?编写数据收集和图形生成的脚本,您将在需要时获得最新数据。
(在上述所有情况下,使用现有工具来完成繁重的工作,您的脚本应该将它们全部粘合在一起,以使它们像你希望他们这样做。)
了解脚本语言(不仅仅是 shell,也不仅仅在 Linux 上)就像了解其他编程语言一样:了解的越多,效率就越高,因为当您需要时,您将有一个庞大的工具集可供选择完成某事。
不存在“炒作”因素:如果您有任务要做,请从工具箱中选择最好的工具来完成它。在 Unix 类型的系统上,如果您的工具箱没有 shell 和几种脚本语言,您就会错过很多乐趣。
但是,如果您可以使用图形界面完成所有需要做的事情,那么就很好,没有什么问题。
答案2
不,这种理解是不正确的。使用 1-10 的等级将“脚本”与“Linux 上的有用性”联系起来是没有意义的。
您将脚本错误地分类为允许管理员自动备份的东西,使您的问题变成“在我的车里携带备胎有多大用处?”
Linux 系统中的脚本更接近于将汽车固定在一起的所有螺母、螺栓、杆、支架、夹子和焊缝,所有电线、软管、齿轮和轴,它们使东西到达目的地,并且大多数机器都在运行。组装它的工厂。
没有脚本技能的 Linux 管理员就像没有扳手的汽车修理工。也许他们可以驾驶汽车并按下仪表板上的按钮,但能够对收音机进行编程并不能让你成为一名机械师。为此你必须有工具。
答案3
这是一个非技术问题,因此我将尽量避免任何技术细节,只写下我对脚本编写的看法。
按照 1 到 10 的等级:我会说 5 到 10 之间的任何位置,具体取决于您想要做什么。
它的范围从中等有用到必要,可以避免花费数小时或数天的时间来做计算机可以在几分钟内完成的事情。脚本编写的要点是自动化,尤其是重复(无聊)任务或复杂任务(由于打字错误或分心或忘记一个重要步骤而容易出现人为错误)。
(IMO,脚本编写的第二个要点是,它是培养有用的解决问题技能的练习,逻辑地、有条理地思考和分析问题;要编写脚本,您需要将正在做的事情分解为离散的步骤)
作为 Linux 新手,您最需要了解的关于脚本的事情可能是,脚本编写通常始于每当您需要执行相同操作时必须重复键入相同序列的命令的烦恼。因此,您将这些命令放入一个文件中,现在您已经编写了第一个脚本。
稍后,您可以修改它,以便您的脚本从命令行获取参数(而不是使用硬编码文件名等)。之后,您可能希望脚本根据情况执行两个(或多个)不同操作之一,或者您希望脚本对多个文件重复执行相同的操作,因此您开始研究控制结构,例如 if;then ;else、case 语句、while 和 for 循环等。
学习编写脚本是一个渐进的过程;你可以从小而简单的事情开始,逐渐学习如何做更复杂的事情。学习如何做简单的事情就像学习如何在文本编辑器中输入命令并保存它们一样简单。变得“擅长”可能需要数月或数年的时间,而真正掌握它可能需要一生的时间。 20 多年来,我一直在使用 awk、sed 和 grep 等常见的 Linux 工具编写 sh 和 bash 脚本,而且我仍在学习新事物和新的/改进的做事方法,或者一些晦涩但非常有用的工具选项。已经使用多年了。
我喜欢这样一个事实:总是有新的东西需要学习。事实上,我认为这是编写脚本的第三个原因 - 如果我有一些重复且乏味的事情要做,那么编写脚本来完成它不仅消除了大部分人为错误的范围,而且使这项工作变得地狱有很多更有趣的事情要做。我可能需要 2 或 3 小时才能编写一个好的脚本来完成我本可以在 2 到 3 小时内手动完成的工作,但我不会感到无聊或疲倦,而且我会得到更多工作满意度由此而来。作为奖励,我最终还得到了一个工具,将来可能有助于自动化类似的工作。最重要的是,我可能学到了一些新的或有趣的东西 - 或者只是进一步磨练了我的技能 - 我可以在将来使用它们。
答案4
脚本编写是 Linux 哲学的基本部分。
让我们以相反的情况为例:Windows。简而言之,shell 脚本是 Linux 与 Windows 区别的三分之一。
- Linux 是开源。 Windows 则不然。
- Linux 是自由的。 Windows 则不然。
- Linux 有一个 shell 结构,旨在让您进行管道传输命令转换为其他命令:Linux 命令通常会成为更大的东西的构建块一个脚本。 Windows只有窗口。