Linux seq命令可以在眨眼之间生成数字列表。但是如何将这个功能付诸实际使用呢?我们将向您展示seq如何为您带来便利。
乍一看,Linux seq命令似乎有些奇怪。它可以让你快速生成数字序列,就这样!不过,这里的关键字是“快速”。过一会儿,您将看到这个小命令的运行速度有多快。
不管它们是如何生成的,一个数字列表有多有用?seq命令于1985年添加到第8版Unix中。从那以后它就一直在那里,所以它必须做一些有价值的事情。
Unix的哲学思想是,它充满了做一件事并且做得很好的小实用程序。这种哲学的中心原则之一是编写接受其他程序输入的程序。当然,这也意味着这些程序必须生成可以被其他程序用作输入的输出。
当seq命令与其他使用其输出的命令一起使用时(通过管道或命令行扩展),seq命令就变成了自己的命令。
如果用一个数字作为命令行参数启动seq,它将从1计数到该数字。然后在终端窗口中打印数字,每行一个数字,如下所示:
seq 6如果在命令行中键入两个数字,第一个数字将是起始数字,第二个数字将是结束数字,如下所示:
seq 4 10可以通过包含第三个数字来设置步长。它位于开始和结束数字之间。我们键入以下命令,要求seq创建一个以6开头、以48结尾的数字列表,并使用6的步骤:
seq 6 6 48我们还可以让seq创建一个从最高到最低的数字列表。然而,要做到这一点,我们必须提供一个消极的步骤。
以下命令生成一个以6为单位从24到12计数的列表,因为我们将该步骤键入为负数:
seq 24 -6 12开始、结束和步数也可以是小数。如果其中任何一个数字是十进制的,其他的也被视为十进制。以下命令生成步长为0.2的数字列表:
seq 1 0.2 2seq的速度非常快,唯一的瓶颈是在终端窗口中键入命令所需的时间。为了测试它的速度,我们需要一个25万个数字的列表。
我们键入以下命令,使用time命令查看该过程需要多长时间才能完成:
time seq 250000结果显示在列表下方。即使在我们中等功率的测试PC上,seq的速度也出奇的快。
整个列表在大约1/3秒内创建并写入屏幕。如果我们将列表重定向到一个文件中,我们甚至可以避免在终端窗口中键入的开销。
为此,我们键入以下内容:
time seq 250000 > numbers.txt完成列表和创建文件所需的时间现在约为1/7秒。
新的行字符是列表中每个数字之间显示的默认字符。这就是为什么它们会显示为一个垂直列表,每个数字都在自己的行上。如果需要,可以提供另一个分隔符。
例如,假设您需要创建逗号分隔的列表、用冒号分隔的列表或任何其他标点符号或符号。分隔符实际上是一个字符串,因此可以使用多个字符。
我们将使用-s(分隔符)选项。以下命令将生成逗号分隔的列表:
seq s, 6 6 36此命令将使用冒号(:)作为分隔符:
seq -s: 6 6 36此命令告诉seq使用两个连字符(-)作为分隔符:
seq -s-- 6 6 36seq命令还支持C语言样式的格式字符串。这些允许您格式化输出,而不仅仅是指定分隔符。要使用格式字符串,请使用-f(format)选项。
以下命令告诉seq使用零将输出填充为两个字符:
seq -f "%02g" 6我们可以用我们喜欢的任何文本格式化字符串,并将数字放在字符串中的任意位置,如下所示:
seq -f "Number %02g in a C-like format string" 6设置零填充的最快方法是使用-w(等宽)选项。这告诉seq使用零来填充数字,因此它们的宽度都与最大的数字相同。
以下命令以100为单位从0到1000计数,所有数字都将用零填充:
seq -w 0 100 1000最长的数字需要四个字符,因此所有较窄的数字都用零填充到该宽度(即使0也填充到四个零)。
通过将分隔符设置为数学符号,并将列表导入bc命令,我们可以计算该列表中的数字。
以下命令生成由星号(*)分隔的数字列表,从1开始,以6结束:
seq -s* 6如果我们将该列表输入bc,它将使用星号(*)作为乘法符号来计算该列表:
seq -s* 6 | bc我们也可以用其他符号来做。下面的命令使用加号(+)创建一个添加了所有数字的列表:
seq -s+ 5我们键入以下内容将其导入bc并评估列表:
seq -s+ 5 | bctouch命令更新文件上的时间和日期戳。如果文件不存在,触摸会创建它。我们可以使用带有touch和seq的命令行扩展来创建一个主题命名但编号不同的文件集合。
我们将创建一组10个具有相同基本名称和不同编号的文件(file-1.txt、file-2.txt等等)。我们键入以下内容:
touch $(seq -f "file-%g.txt" 1 10)然后,我们键入以下内容以检查文件:
ls file*我们可以在Bash脚本中使用seq来控制小数的循环。
在编辑器中键入以下文本,然后将其另存为“循环.sh”:
#!/bin/bash for val in $(seq 5 0.2 6.6); do echo "The value is now: $val" done接下来,我们键入以下内容以使新脚本可执行:
chmod +x loop.sh当我们运行脚本时,循环计数器被打印在终端窗口中。然后,我们可以键入以下内容,以查看十进制循环计数器随着循环的每次迭代而增加:
./loop.sh记住seq也可以倒数;您可以用同样的方法在循环中使用它。
seq的一个特点是没有太多的学习曲线。它有一个令人耳目一新的简短手册页,但您仍然可以以有趣的方式使用它。
因为我们经常需要快速创建具有实际大小的测试文件,所以我们将seq与格式字符串一起使用。然后重定向输出以创建一个包含任意多行伪数据的文件。
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...安全的例子,通过默默无闻,这一概念是根本上的缺陷。如何访问系统的秘密是安全的,因为只有特定组中的人知道它。但是一旦这个秘密被泄露,或者因为它被揭露,被观察,被猜测,或者被解决了,你的安全就无效了。最好...
...ash脚本中使用GUI窗口、滑块、单选按钮、进度条等。学习如何使用zenity工具箱,并对Bash脚本进行整容。我们会教你怎么做。 Bash脚本是一种功能强大的编程语言,由于它内置在Bash shell中,因此每个人都可以随时使用它。这是一...