Questions tagged «pipe»

管道将一个程序的输出连接到另一个程序的输入。这特别用于实现shell | 操作员。

8
“重定向”和“管道”有什么区别?
这个问题听起来有点愚蠢,但是我真的看不到重定向和管道之间的区别。 重定向用于重定向stdout / stdin / stderr,例如ls > log.txt。 管道用于将命令的输出作为另一个命令的输入,例如ls | grep file.txt。 但是,为什么会有两个运算符来处理同一件事? 为什么不只是写写ls > grep来传递输出,这也不只是一种重定向吗?我缺少什么?
204 pipe  redirect 

2
如何将终端标准输出(stdout)传送到剪贴板?
例如, 假设我要列出文件夹的内容,然后将其直接粘贴到聊天窗口中,以供朋友查看。 我意识到我可以ls > filename.txt用这些内容创建一个文件(filename.txt)。然后,我不得不打开或打印文件,然后手动选择并复制文本块(这可能很烦人/繁琐。)显然,我也可以ls直接从终端窗口中选择并复制输出。 只需将标准输出通过管道传输到剪贴板,将会更快/更容易。 什么终端命令允许我执行此操作?

4
为什么要使用命名管道而不是文件?
我最近阅读了有关命名管道的信息,但我不明白为什么它们存在。 我在某处读到,使用命名管道比使用文件耗时少。 为什么会这样呢? 命名管道还必须存储在内存中(并且可以交换,就像文件一样)。 据我所知,它们必须获得一个inode,该inode必须像文件一样被当前目录引用。同样,它们必须像文件一样由程序员删除。 那么优势在哪里呢?
42 files  pipe 

8
为什么命令“ ls | not” 文件”的工作?
我一直在研究命令行,并了解到|(管道)旨在将命令的输出重定向到另一个命令的输入。那么,为什么命令ls | file不起作用? file 输入是其他文件名之一,例如 file filename1 filename2 ls输出是文件夹中目录和文件的列表,因此我认为ls | file应该显示文件夹中每个文件的文件类型。 但是,当我使用它时,输出为: Usage: file [-bcEhikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ... file -C [-m magicfiles] file [--help] 由于该file命令的使用存在一些错误

4
杀死Java进程
我正在处理一个计算量很大的代码,目前它崩溃很多,但是我仍在处理它:)当它崩溃时,我无法关闭GUI窗口。我必须打开一个外壳并杀死-9的过程。 这是一个Java进程,很容易找到: nkint@zefiro:~$ ps aux | grep java nkint 2705 16.6 1.0 460928 43680 ? Sl 12:23 0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something nkint 2809 0.0 0.0 4012 776 pts/0 S+ 12:24 0:00 grep --color=auto java nkint@zefiro:~$ kill -9 2705 现在,这很容易,但却是一项艰巨的机械任务。所以通常我会等待大约7-8个进程崩溃,然后kill -9每个进程都崩溃。 我想自动执行此操作。我认为通过管道传递一些命令来获取(n-1)个结果的id ps aux | grep java并杀死它应该很容易,但是我不知道从哪里开始。 谁能给我任何提示吗?
25 process  kill  pipe 

4
如何将管道输入定向到ls命令?
当我输入类似的内容时: find . -name *foo* | ls -lah 它返回与普通ls命令相同的结果,就好像它没有输入一样。 然而: ls -lah $( find . -name *foo* ) 效果很好,但仅在find命令产生结果时有效。 是否可以通过管道输送到ls?
20 bash  command-line  ls  pipe 

5
如何在一行上执行FTP命令?
这是我登录FTP时正在做的事情: ftp user:password@server ftp: user:password@server: Unknown host ftp> echo HELLO WORLD! ftp> quit 我想执行单行FTP命令... ftp user:password@server -command "echo HELLO WORLD" 要么 "echo HELLO WORLD" | ftp user:password@server 类似...作为我要创建的脚本的一部分。一切都没有转移,我只需要回显一些指令,这是我发现在两个系统之间进行操作的最简单方法。
18 10.10  command-line  ftp  pipe 

1
解压缩并将其输出到脚本
我有一个脚本,带有带有-i标志的输入。我拥有的输入文件已压缩(.gz)。我想做的事情(不确定是否可行),因为文件很大,请执行以下操作: gunzip -c myfile.gz | myScript.pl -i STDIN -o myoutfile.txt 因此,将解压缩的输出通过管道传递到我的脚本输入标志。
14 pipe  gzip 

3
为什么用管道命令“ l | grep“ 1”是否得到错误的结果?
如图所示,我l通常将文件保存在当前文件夹中。然后我想获取带有编号的文件1,所以我使用pipe和grep。 但是为什么2和22文件显示出来?那是什么1;34m? $ l ./ ../ 1 11 2 22 $ l | grep "1" 1;34m./ 1;32m../ 1 11 2 22 更新资料 我已经l在zshrc文件中为命令添加了别名。 alias lsp="ls" alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' alias ls="ls -alh --color" 这是type命令的结果: >$ type ls ls is an alias for ls -alh --color …
13 command-line  grep  ls  pipe 

2
卷曲.gz文件并将其通过管道进行解压缩
我正在尝试从给定的URL 下载一些.gz文件(不包括.tar.gz那些文件),并将其解压缩以覆盖现有文件(如果有)。 对于每个单独的下载,我尝试了以下操作: curl -O $URL | gunzip -f 然而,这并没有工作,因为它与失败:gzip: stdin: unexpected end of file。我在bash shell脚本中运行了一系列此命令。 如果我将命令扩展到两个明确的步骤,即首先下载文件,然后解压缩.gz文件,则它可以工作。 为什么管道版本不起作用?
13 bash  scripts  curl  pipe  gzip 

4
通过在bash中连接字符串来构建命令
我有一个bash脚本,可以在一次执行之前根据一些参数在字符串中构建命令行。应该将连接到命令字符串的部分用管道分开,以利于通过每个组件的“数据流”。 一个非常简化的示例: #!/bin/bash part1=gzip -c part2=some_other_command cmd="cat infile" if [ ! "$part1" = "" ] then cmd+=" | $part1" fi if [ ! "$part2" = "" ] then cmd+=" | $part2" fi cmd+="> outfile" #show command. It looks ok echo $cmd #run the command. fails with pipes $cmd 由于某些原因,管道似乎无法正常工作。当我运行此脚本时,我得到的错误消息通常与命令的第一部分(在第一个管道之前)有关。 所以我的问题是,是否可以通过这种方式构建命令,什么是最好的方式?
13 bash  pipe 

3
如何删除定位返回的所有文件
目前他是我的工作: 步骤1: locate fooBar /home/abc/fooBar /home/abc/Music/fooBar 第2步: 通过复制粘贴每一行来手动执行删除。 rm /home/abc/fooBar rm /home/abc/Music/fooBar 如何一步一步做到这一点?就像是 定位fooBar> rm 谢谢。

3
如何在不影响生成输出的命令的情况下,停止以更少的时间跟踪输出?
我正在运行服务器,并且该服务器的日志已登录到终端,而不是任何文件中。我想减少查看该日志的次数。 node server.js | less 当我只想查看日志时,请使用Shift+ F来结束文件并继续查看日志。当我想停止它时,我使用CTRL+ C。 不幸的是,这也会停止服务器。我只想停止监视日志结尾而不停止服务器。 这该怎么做?

2
Tee无法从管道中获得全部输出
我有一个脚本,执行以下命令: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH;./some_app -i $INDEX | tee $LOG echo "Number of errors: $(grep "ERROR" $LOG | wc -l)" 问题可能出在管道上tee。它似乎无法获得全部输出。当应用程序退出时,输出的最后几行(通常是包含致命错误的行)丢失。当我运行不带管道的应用程序时,tee将它们显示在输出中。 如何强制脚本等待tee完成所有输出的处理?

1
是否可以从stdin管道传输到gzip?
如果运行该命令,s3cmd get s3://bucket/file.gz -则会在屏幕上显示二进制输出。如果我尝试将其通过管道传递到gzip,则会s3cmd get s3://bucket/file.gz - | zcat得到gzip: stdin: not in gzip format。 我怎样才能zcat选择它的输入stdin?
12 pipe  gzip 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.