Unix 使用ls仅显示特定数量的项目
我试图用C语言获取一个简单的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)
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):
(ls*.html | head-n5);做我的头$f;完成
myhead$(ls*.html | head-n5)
以美元表示的f的
(ls*.html | head-n5);做猫$f |我的头;完成
使用标准Unixhead
命令,您可以执行以下操作:
head -n 10 $(ls | head -n 5)
首先,您应该完全按照shell中显示的方式运行此命令,以验证它是否有效。接下来,用
myhead
命令而不是head
尝试 试试more命令
那么myhead
是您自己的脚本,可以输出文件的前十行吗?或者作为参数传入的每个文件的前10行?什么是myhead
命令?什么是论点或标准?我看到40分钟前你编辑了你的问题,因此它非常不同,本质上是一个新问题。它是同一个问题,只是改写了它,以便更容易理解。标题很好地解释了这一点,它还没有被编辑过-“使用ls仅显示特定数量的项目”这难道不只是打印所有html文件的前5行,而不仅仅是5.html文件吗?谢谢您提供的详细答案。我想我已经把它整理好了。