|
Post by account_disabled on Jan 31, 2024 1:35:21 GMT -5
“如何使用 JavaScript 编写 Shell 脚本”是我们最新 JavaScript 时事通讯的社论。 本周我必须升级客户的网站以使用 SSL。这本身并不是一项困难的任务 - 安装证书只需单击一个按钮 - 但一旦我进行了切换,我就留下了很多混合内容的警告。修复这些问题的一部分意味着我必须浏览主题目录(这是一个 WordPress 网站)并识别通过 HTTP 包含资产的所有文件。 以前,我会使用一个小型 Ruby 脚本来自动执行此操作。Ruby 是我学习的第一种编程语言,非常适合此类任务。不过,我们最近发表了一篇关于使用 Node 创建命令行界面的文章。这篇文章提醒我,JavaScript 早已超越了浏览器,并且可以(除其他外)用于桌面脚本编写,产生巨大的效果。 在本文的其余部分中,我将解释如何使用 JavaScript 递归地迭代目录中的文脚本的道路。 设置 这里唯一的先决条件是 Node.js。如果您尚未安装此软件,您可以访问他们的网站并下载其中一个二进制文件。或者,您可以使用版本管理器,例如 nvm。 我们在这里有一个关于这方面的教程。 Learn to Code with JavaScript 您的第一个 Shell 脚本 那么从哪里开始呢?我们需要做的第一件事是迭代主题目录中的所有文件。幸运的是,Node 的本机文件系统模块附带了一个readdir 方法,我们可以使用它。它以目录路径和回调函数作为参数。回调获取两个参数 (err和entries),其中是目录中的entries名称数组,不包括和— 分别是当前目录和父目录。您还需要调整您正在使用的目录的路径。 添加递归 到 WhatsApp 号码数据 目前为止,一切都很好!上面的脚本将目录的顶级条目记录到控制台,但我的主题文件夹包含子目录,其中也包含需要处理的文件。这意味着我们需要迭代条目数组,并让函数针对遇到的任何目录调用自身。 为此,我们首先需要确定我们是否正在处理目录。幸运的是,文件系统模块也有一个方法:lstatSync。这会返回一个fs.Stats对象,它本身有一个isDirectory方法前目录及其包含的每个子目录的文件和文件夹列表。 成功! Learn to Code with JavaScript 识别要处理的文件 接下来,我们需要添加一些逻辑来识别任何 PHP 文件,打开它们并搜索它们以查找我们要查找的字符串的任何匹配项。这可以使用一个简单的正则表达式来检查以“.php”结尾的文件名,然后processFile在满足该条件时调用一个函数,并将当前路径作为参数传递给它。 我们还对路径名的构造方式进行了一些小小的改进。到目前为止,我们一直在使用字符串插值,但由于正斜杠的原因,这仅适用于 Unix 环境。然而,节点的路径模块提供了一个join 方法,它将考虑分隔符。 如果此时运行脚本,它应该到变量中,然后可以在每个换行符上拆分该变量并迭代结果数组。之后,使用 JavaScript 的 match 方法来查找我们想要的单词或短语就很简单了如果您现在运行该脚本,它将打印出找到匹配项的每一行以及文件名。 Learn to Code with JavaScript 更进一步 就我的具体情况而言,这已经足够了。该脚本出现了一些“http”,我可以手动修复它们。
|
|