Bash 如何获取'ls'命令的前n行

Bash 如何获取'ls'命令的前n行,bash,shell,zsh,Bash,Shell,Zsh,ls命令按行输出其结果: AndroidSandbox/ kotlin-native-intellij/ arc-theme-macos/ kotlin-native-sandbox/ BobkoLauncher/ kotlin-ref-delegation/ ... 如何获取此输出的前n行?ls | head-n2不起作用,因为它需要两个前文件,但我需要两行输出。看起来您可能需要

ls命令按行输出其结果:

AndroidSandbox/                    kotlin-native-intellij/
arc-theme-macos/                   kotlin-native-sandbox/
BobkoLauncher/                     kotlin-ref-delegation/
...

如何获取此输出的前n行?ls | head-n2不起作用,因为它需要两个前文件,但我需要两行输出。

看起来您可能需要

ls-C | head-2

ls | head-n2仅显示前两个文件的原因是ls命令检测到输出不是tty而是|并相应地更改其行为

如果使用ls-x | head-n2,您将得到前两行

简短答案: 无缓冲ls |头-n 2 说明:

另一个注意事项:管道传输时,-C和-x都将使用默认屏幕宽度。所以你可能想要:

ls -C --width="$(tput cols)" | head

这更适合superuser.com或unix.stackexchange.com,因为您不应该以编程方式使用ls的输出。@chepner:如果OP希望使用ls处理文件列表,您的注释将是正确的。这里的情况似乎不是这样,他明确地对ls输出的一部分感兴趣,不管这可能是什么,并且取决于终端的宽度。这确实可以在脚本中使用。这更多的是关于如何使用程序的问题,而不是关于编程的问题。对。当您通过管道传输ls的输出时,您会自动得到ls-1,除非您提供了类似-C的选项