在Bash中pipe道printf到ls?

在Bash中pipe道printf到ls?,第1张

概述在Bash中pipe道printf到ls?

所以我在bash学习pipe道,我发现这个简洁的描述:

Unixpipe道将第一个进程的STDOUT(标准输出)文件描述符连接到第二个进程的STDIN(标准input)。 那么会发生什么呢,当第一个进程写入到STDOUT时,第二个进程可以立即读取(从STDIN)输出。

资源

根据这个理解,让我们将printf的STDOUT连接到ls的STDIN。 为了简单起见,打印父目录( printf .. )。

列出文件时,箭头是什么意思?

在Git Bash windows中合并分支

用sed括号来表示每个单词的第三个字符

安装rvm结果bash:没有这样的文件或目录

linux:逐行读取并逐行打印

~/Desktop/pipes$ mkdir sub ~/Desktop/pipes$ ls sub ~/Desktop/pipes$ cd sub (no files) ~/Desktop/pipes/sub$ printf .. | ls (no files) ~/Desktop/pipes/sub$

我想要做的是: ls ..但是看来我得到的只是ls 。 这是为什么? 我怎样才能使用pipe道的父目录? 我误解了pipe道?

如何在linux中激活TCP Fast Open

Init.d脚本挂起

如何以编程方式获取在linux机器上login的用户数量?

Bash陷阱:如何获取非零状态的子stream程的行号

在linux文件退格问题

许多程序不会从stdin读取,不仅仅是ls 。 程序也可能不写入stdout 。

这是一个可以澄清事情的小实验。 执行这些步骤:

cat > file1 This is file1 ^D

^ D是您按<CTRL>+D ,这是默认的文件结束。 所以,我们首先调用cat程序并将其stdout重定向到file1 。 如果你不提供输入文件名,那么它从stdin输入读取,所以我们输入“This is file1”。

现在做类似的:

cat > file2 This is file2 ^D

现在如果你:

cat < file1

你得到:

This is file1

如果你:

cat file1 | cat file2

要么:

cat file2 < file1

为什么? 因为如果你提供一个输入文件名,那么cat程序不会读取stdin ,就像ls一样。

现在,如何:

cat - file1 < file2

按照惯例, -意味着一个标准的流, stdin在读或写stdout时候。

问题是ls不能从stdin读取,因为你打算这样做。 你需要使用一个从stdin读取数据的工具,像xargs一样读取输入到ls

printf "someSampleFolderOrfile" | xargs ls

xargs man页,

xargs – 从标准输入构建和执行命令行

总结

以上是内存溢出为你收集整理的在Bash中pipe道printf到ls?全部内容,希望文章能够帮你解决在Bash中pipe道printf到ls?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1292861.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-10
下一篇2022-06-10

发表评论

登录后才能评论

评论列表(0条)

    保存