Linux 脚本有多大用处?

Ksh*_*rma 3 scripting

我正在尝试通过学习 shell 命令进入中级水平。

在在线 Linux 论坛中,通常的共识是,要成为一名高级 Linux 用户,就应该了解脚本。我自己没有编写操作系统脚本的经验,也不知道炒作是什么。

我的理解是,它只是系统管理员通过发出一组复制命令来进行备份的一种便捷方式。

这种理解是否正确?通常使用脚本执行哪些类型的高级任务?

在 1 到 10 的范围内,1 是被高估的炒作,10 是解决所有 Linux 困境的神奇药水,Linux 脚本在哪里?

Mat*_*Mat 13

脚本只是一种编程形式。就是这样,没有魔法。

如今,借助现代的全功能 Linux 发行版,您几乎可以仅使用图形界面来管理您的系统。如果这些工具涵盖了您需要做的事情,那么您真的很好。

现在,如果你需要做的一些任务没有被这些界面覆盖,或者你需要在后台运行它们,而你睡着了,在一台你只能访问 shell 的计算机上,......那么你将需要使用其他东西。

而 Unix 类型系统上“其他东西”的起点是 shell 和 shell 脚本。

您的 Linux 系统为您的 shell 提供了一个非常大的实用程序工具箱。文件管理(复制、移动、查找、比较文件等)和文本文件操作(打印、修改、比较、分析等)的内容非常普遍,因为类 Unix 系统都是关于文件的,而大多数软件(和操作系统)配置文件是纯文本的。
如果您需要它们,请开始学习它们。然后查看您感兴趣的任何工具(媒体转换、数据库内容、网站管理、系统监控……列表是无止境的)。

备份是几乎需要自动化的任务之一。但是任何重复的事情都可以(并且可能应该)自动化。
需要将您的所有 FLAC 文件转换为 MP3 以供您的媒体播放器使用吗?编写一次脚本,下次您将能够在一个命令中执行该操作。
需要将您最新假期拍摄的缩略图放在您的网站上吗?编写脚本!(当您在那里时,也可以编写网站更新脚本。)
需要清除旧的日志文件吗?编写脚本,无论如何你下周都需要再做一次。
需要为服务器场上的性能指标绘制漂亮的图表吗?编写数据收集和图形生成脚本,您将在需要时获得最新数据。
(在上述所有情况下,使用现有工具来完成繁重的工作,您的脚本应该将它们全部粘合在一起,使它们能够像希望的那样工作。)

了解脚本语言(不仅仅是 shell,而不仅仅是在 Linux 上)就像了解其他编程语言一样:了解的越多,效率越高,因为您将拥有大量工具集供您在需要时选择完成某事。

没有“炒作”因素:如果您有任务要做,请从工具箱中选择最好的工具来完成它。在 Unix 类型的系统上,如果您的工具箱没有 shell 和几种脚本语言,您就会错过很多乐趣。
但是,如果您可以使用图形界面完成您需要做的所有事情,那么您就可以了,这没什么错。


Cal*_*leb 8

不,这种理解是不正确的。使用 1-10 的比例将“脚本”与“Linux 上的有用性”联系起来是没有意义的。

您错误地将脚本归类为允许管理员自动备份的内容,这使您的问题变成了“在我的汽车中携带备用轮胎有多大用处?

Linux 系统中的脚本更接近于将您的汽车固定在一起的所有螺母、螺栓、杆、支架、夹子和焊缝,所有电线、软管、齿轮和轴,这些电线、软管、齿轮和轴将物品带到哪里,以及大多数机器组装它的工厂。

没有脚本技能的 Linux 管理员就像没有任何扳手的汽车修理工。也许他们可以驾驶汽车并按下仪表板上的按钮,但是能够对收音机进行编程并不能使您成为机械师。为此,您必须拥有工具。


cas*_*cas 6

这是一个非技术问题,所以我将尽量避免任何技术细节,只写我对脚本的看法。

在 1 到 10 的范围内:我会说 5 到 10 之间的任何地方,这取决于您要做什么。

对于避免花费数小时或数天的时间来完成计算机可以在几分钟内完成的工作,它的范围可以从中等有用到必不可少。脚本编写的要点是自动化,尤其是重复(无聊)任务或复杂任务(由于打字错误或分心或忘记一个重要步骤而容易出现人为错误)。

(IMO,脚本编写的第二个要点是,它是培养有用的问题解决技能、逻辑地、有条不紊地思考和分析问题的实践;要编写脚本,您需要将正在做的事情分解为离散的步骤)

作为 Linux 初学者,您可能最需要了解的关于脚本的事情是,脚本编写通常始于在需要执行相同操作时必须重复键入相同命令序列的烦恼。所以你把这些命令放在一个文件中,你现在已经编写了你的​​第一个脚本。

稍后,您可能会修改它,以便您的脚本从命令行获取参数(而不是使用硬编码的文件名)。稍后您可能希望脚本根据情况执行两种(或更多)不同操作中的一种,或者您希望脚本对多个文件重复执行相同的操作,因此您开始研究控制结构,例如 if;then ;else、case 语句、while 和 for 循环等。

学习编写脚本是一个渐进的过程;你可以从小而简单的事情开始,逐渐学习如何做更复杂的事情。学习如何做简单的事情就像学习如何在文本编辑器中输入命令并保存它们一样简单。变得“擅长”它可能需要数月或数年的时间,而真正掌握它可能需要一生。20 多年来,我一直在使用常用的 Linux 工具(如 awk、sed 和 grep)编写 sh 和 bash 脚本,但我仍在学习新事物和新的/改进的做事方式或一些晦涩但非常有用的工具选项已经使用多年了。

我喜欢这样一个事实,即总会有新的东西需要学习。事实上,我认为这是编写脚本的第三个原因——如果我有一些重复和乏味的事情要做,那么编写一个脚本来完成它不仅消除了大部分人为错误的范围,而且使工作变得很糟糕还有很多有趣的事情要做。我可能需要 2 到 3 个小时来编写一个好的脚本来完成我可以在同样的 2 到 3 个小时内手动完成的工作,但是我不会感到无聊或疲倦,而且我会得到更多工作满足感出来了。作为奖励,我最终还得到了一个工具,该工具将来可能对自动化类似工作有用。最重要的是,我可能学到了一些新的或有趣的东西 - 或者只是磨练了我的技能 - 我可以在将来加以利用。