Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用ls仅显示特定数量的项目_Unix - Fatal编程技术网

Unix 使用ls仅显示特定数量的项目

Unix 使用ls仅显示特定数量的项目,unix,Unix,我试图用C语言获取一个简单的myhead命令,以显示目录中前五个.HTML文件的前10行。我被建议使用ls与我的myhead命令一起执行此操作。我的主要问题是让ls只显示5.html文件,而不是列出所有文件 我是这么想的 ls *.html -n 5 > myhead 然而,这并不存在。有什么想法吗?我们只打算使用ls和myhead您要找的是 您可以这样使用它们: # all the output (STDOUT) of ls is passed as the input (STDIN)

我试图用C语言获取一个简单的
myhead
命令,以显示目录中前五个.HTML文件的前10行。我被建议使用ls与我的
myhead
命令一起执行此操作。我的主要问题是让ls只显示5.html文件,而不是列出所有文件

我是这么想的

ls *.html -n 5 > myhead

然而,这并不存在。有什么想法吗?我们只打算使用
ls
myhead

您要找的是

您可以这样使用它们:

# all the output (STDOUT) of ls is passed as the input (STDIN) of myhead
ls *.html | myhead -5

myhead
读取STDIN上的输入,并在STDOUT上输出N行。

如果我理解正确,您已经编写了一个C程序
myhead
,它打印出传入文件的10行

你肯定不想这么做

ls *.html -n 5 > myhead
这将在当前目录中覆盖或创建一个新文件
myhead

实现这一点的关键是命令行管道。这允许一个命令的stdout成为下一个命令的stdin。您还需要将一个命令的标准输出或管道命令用作另一个命令的文本。历史上,这是通过backticks`ls`完成的,或者在bash中,您可以使用
$(ls)
作为示例来获取
ls
列表,并将其用作另一个命令的文本

如果您同意标准的
ls
文件列表顺序,您可以这样做来获取前5个.html文件:

ls *.html | head -n 5
我不知道我的头是什么,也不知道它是如何工作的,因为问题中没有解释。您说它显示了传入其中的文件的前十行。可能会有一些这样做。 我将给出每种可能性的解决方案(假设您使用的是bash):

  • 每次获取一个文件,作为参数传入
  • 以美元表示的f的
    (ls*.html | head-n5);做我的头$f;完成

  • 一次获取多个文件,作为多个参数传入
  • myhead$(ls*.html | head-n5)

  • 获取通过stdin传入的文件的内容

  • 以美元表示的f的
    (ls*.html | head-n5);做猫$f |我的头;完成

    使用标准Unix
    head
    命令,您可以执行以下操作:

    head -n 10 $(ls | head -n 5)
    

    首先,您应该完全按照shell中显示的方式运行此命令,以验证它是否有效。接下来,用
    myhead
    命令而不是
    head
    尝试

    试试
    more命令
    那么
    myhead
    是您自己的脚本,可以输出文件的前十行吗?或者作为参数传入的每个文件的前10行?什么是
    myhead
    命令?什么是论点或标准?我看到40分钟前你编辑了你的问题,因此它非常不同,本质上是一个新问题。它是同一个问题,只是改写了它,以便更容易理解。标题很好地解释了这一点,它还没有被编辑过-“使用ls仅显示特定数量的项目”这难道不只是打印所有html文件的前5行,而不仅仅是5.html文件吗?谢谢您提供的详细答案。我想我已经把它整理好了。