
所以我在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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)