您已经学习了如何创建脚本、使用参数和构建for循环。现在,让我们看一些更基本的命令,文本文件操作,以及将输入和输出重定向到文件和其他命令。
我们已经为您提供了shell脚本的基本分类和for循环的基于示例的概要,但是如果您错过了我们的shell脚本指南,请务必查看这些文章。
命令行之所以出色有很多原因,重定向是最突出的原因之一。如果为了采取进一步的行动或将其用于其他事情而必须记录并再现每个命令的输出,那么我们早就疯了。重定向允许我们使用该输出并保存它,或者立即将其用作另一个命令的输入。我们也可以使用文件作为其他命令的输入。
在继续之前,让我们先介绍一些基本命令,这些命令可以在许多不同的地方使用。
echo–这个命令只是在命令行上打印(显示)整个参数作为输出
echo argument with spaces
如您所见,特殊字符需要“转义”,以便正常处理。这是通过在字符前面使用反斜杠(\)来完成的。最好用引号。echo命令也适用于变量。
如您所见,单引号和双引号的行为不同。有关更多信息,请查看bashshell中单引号和双引号的区别?
cat–此命令将文本文件的内容显示为输出。
cat file_to_be_read
假设我们在nano中创建这个文本文件:
当我们对文件使用cat命令时,我们可以看到它的输出。
grep–这是Linux中最强大、最有用的命令之一。它代表全局/正则表达式打印。它浏览一个文件并打印与特定模式匹配的任何行。因为这个模式是基于“正则表达式”的,所以一条简洁的行可以产生大量要匹配的模式。不过,对于not,您可以输入一个tern进行搜索。
grep pattern file
我向你保证,格雷普可以做得更多,但现在让我们继续做更简单的事情。
为了将命令的输出重定向到文件,我们使用了一个特殊字符,即大于符号(>)。
我们把单子改一下,好吗?输入以下命令:
echo pepperoni > list
您可以看到echo不再显示该行,当我们查看“list”文件的内容时,我们可以看到其中的回声。
还要注意的是,“列表”之前的内容已被删除。再试一次:
当您想重用一个文件时,这会很有用,但通常我们只想添加到现有的文件中。为此,我们使用两个连续的大于符号:
echo yellow peppers >> list
容易的!让我们用这个命令创建一个更大的列表,好吗?
就这样。我想你可以理解为什么这么多极客使用命令行来**待办事项列表之类的东西,但是它变得更好了。
让我们将命令的输出放入一个文件中:
ls –al / > ~/rootlist
**文件列表,编辑它们,然后在你想要的文件上运行命令,从来没有这么简单过。而且,当我们在命令行中执行这些基本功能时,它们在脚本中也能很好地工作。
管道之所以这样命名,是因为它使用管道(在大多数键盘上与\键共享)。从本质上讲,它接受一个命令的输出并直接将其提供给另一个命令。您可以通过这种方式创建长的命令链来获得非常特定的所需输出,这对于grep之类的命令非常方便。
它的行为很像“>”,只是它可以被链接多次,其效果更一般,因为它不需要遍历文本文件。
如你所见,grep是区分大小写的。可以使用“-i”标志使其忽略大小写。
还可以使用小于符号(<)从文件中获取命令的输入。
cat < list
“这和用论点没什么区别!“你可能会说。在这种情况下你是对的。输入重定向真正有用的地方是将命令链接在一起。
假设我们想从当前的“list”文件中将任何包含“pep”的单词过滤到一个名为“revisi***”的新文件中。
grep pep < list > revisi***
让我们重做这个命令,并添加一些排序。
grep pep < list | sort > revisi***
这将使用“pep”作为输入文件“list”中的搜索项,按字母顺序对其排序(所有大写项后跟所有小写项),然后将其输出到“revisi***”文件中。
为了演示sort命令,让我们看一下以下示例:
如您所见,向sort命令添加“-f”标志允许您忽略大小写。这使得我们可以很容易地按字母顺序排列文本文件中的行,并忽略大小写时,这并不重要。
让我们创建一个具有以下形式的脚本:
script searchterm listfile
It will take the term and use grep to search through a list file, sort the results, and then output them to another file.
下面是我们将在其中测试脚本的目录:
我们可以在这里创建一个列表,然后运行脚本。
给你!学习正则表达式的规则越多,就越能准确地组合搜索命令。而且,任何在引号中有效的东西都可以代替你的第一个参数!
就排序而言,您可以做的不仅仅是按字母顺序排序。查看手册页,了解以下命令:
今天我们看了一些在命令行和脚本中同样有用的基础知识。基于文本的数据通常是我们日常使用的核心,因此能够处理、搜索和操作它是关键。
你最喜欢的脚本是什么?对于基于文本的文件,有什么特殊的使用脚本吗?分享你在评论中所知道的!
...有时会添加恼人的格式标记(如标记)。使用简单的shell脚本,您可以通过几个简单的命令自动清除那些垃圾HTML格式。 ...
... 此外,还有一个Bash脚本部分,它解释了可以在命令行中进行的基本编程。这包括变量、if语句、循环和函数。如果你不熟悉这些,不用担心——它们相当简单! ...
Xcode是go-to-Mac开发环境,但对初学者来说可能有点过分。如果你很好奇,只是想玩一下,微软的visualstudio代码可能是更好的选择。 ...
假设你是一个bash脚本向导,喜欢为不太懂技术的朋友和家人自动化任务。即使你给了他们一个脚本,完全解决了他们的问题,他们可能仍然担心自己使用终端。在这种情况下,您不妨手动为它们执行所有操作。 ...
从树莓皮开始是一个令人兴奋的经历。对于初学者来说,开始编写代码和DIY电子产品从来都不是一件容易的事。 ...
...数,Python在2018年初排名第四,领先于JavaScript和Ruby等其他初学者友好语言。 ...
...器学习等领域的应用,但它也很容易学习语法,因此深受初学者的喜爱。 ...
...以让标准Bash shell自动切换到Zsh shell。 在windows上使用bash脚本 相关:如何在windows10上创建和运行bashshell脚本 由于这种环境,实际上可以在Windows上编写bashshell脚本并运行它。Bash脚本可以访问存储在/mnt文件夹下的Windows文件,因此...