Questions tagged «pipe»

管道是两个进程的文件描述符之间的进程间连接。使用POSIX pipe()函数创建管道(来自<unistd.h>)。如果“ |”,则外壳程序会在进程之间创建管道 使用符号:“ cmd1 | cmd2”将cmd1的输出定向到cmd2的输入。在Windows上,使用CreatePipe()。此机制将标准输入,标准输出和标准错误重定向到.NET和Java中的调用过程中。

2
在Vim中将缓冲区缓冲到外部命令
我是Vim的新手。我想将当前缓冲区的内容发送到外部命令的stdin(比如说mail)。我的最终目的是设置快捷方式,以从当前Vim缓冲区快速发送电子邮件。我猜这应该是一件小事,但是我找不到将Vim缓冲区发送到外部命令的方法。提前致谢。
92 vim  pipe  external 

9
如何在当前shell中执行命令的输出?
我很了解source(aka .)实用程序,它将从文件中获取内容并在当前shell中执行它们。 现在,我将一些文本转换为shell命令,然后运行它们,如下所示: $ ls | sed ... | sh ls只是一个随机的例子,原始文本可以是任何东西。sed也只是一个转换文本的示例。有趣的是sh。我用管道输送我所得到的一切sh,然后运行它。 我的问题是,这意味着启动一个新的子外壳。我宁愿命令在我当前的shell中运行。就像我能够使用source some-file,如果我在文本文件中包含命令。 我不想创建一个临时文件,因为感觉很脏。 另外,我想以与当前shell完全相同的特性启动子shell。 更新 好的,使用反引号的解决方案当然可以工作,但是我经常需要在检查和更改输出时执行此操作,因此我更希望是否有一种将结果最终传递给某些对象的方法。 悲伤的更新 嗯,这/dev/stdin东西看起来很漂亮,但是在更复杂的情况下,它没有用。 所以,我有这个: find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin 这样可以确保所有.doc文件的扩展名都小写。 顺便说一句,可以使用进行处理xargs,但这不重要。 find . -type f -iname '*.doc' | …
89 bash  shell  unix  pipe 

10
使用Bash按列划分命令输出?
我想做这个: 运行命令 捕获输出 选择一条线 选择该行的一列 举例来说,假设我想从中获取命令名称$PID(请注意,这只是一个例子,我并不是在建议这是从进程ID中获取命令名称的最简单方法-我的真正问题是另一个我无法控制其输出格式的命令)。 如果我跑步,ps我会得到: PID TTY TIME CMD 11383 pts/1 00:00:00 bash 11771 pts/1 00:00:00 ps 现在我做的ps | egrep 11383,并得到 11383 pts/1 00:00:00 bash 下一步:ps | egrep 11383 | cut -d" " -f 4。输出为: &lt;absolutely nothing/&gt; 问题是cut将输出剪切单个空格,并ps在第二和第三列之间添加一些空格以保持表的相似性,因此cut选择一个空字符串。当然,我可以cut选择第7个字段而不是第4个字段,但是我怎么知道,特别是当输出是可变的且事先未知时。
87 linux  bash  pipe 

3
如何在循环时将输入传递给Bash并在循环结束后保留​​变量
Bash允许使用: cat &lt;(echo "$FILECONTENT") Bash还允许使用: while read i; do echo $i; done &lt;/etc/passwd 可以结合使用前两个: echo $FILECONTENT | while read i; do echo $i; done 最后一个问题是它创建了子外壳,而while循环结束后的变量i无法再访问。 我的问题是: 如何实现这样的目标:while read i; do echo $i; done &lt;(echo "$FILECONTENT")换句话说:如何确定iwhile循环中是否还存在? 请注意,我知道将while语句包含在其中,{}但这不能解决问题(假设您要在函数中使用while循环并返回i变量)
87 bash  while-loop  stdin  pipe 



7
Node.js将同一可读流传输到多个(可写)目标中
我需要连续运行两个命令,这些命令需要从同一流中读取数据。将流传输到另一个流后,缓冲区将被清空,因此我无法再次从该流读取数据,因此无法正常工作: var spawn = require('child_process').spawn; var fs = require('fs'); var request = require('request'); var inputStream = request('http://placehold.it/640x360'); var identify = spawn('identify',['-']); inputStream.pipe(identify.stdin); var chunks = []; identify.stdout.on('data',function(chunk) { chunks.push(chunk); }); identify.stdout.on('end',function() { var size = getSize(Buffer.concat(chunks)); //width var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']); inputStream.pipe(convert.stdin); convert.stdout.pipe(fs.createWriteStream('half.png')); }); function getSize(buffer){ return parseInt(buffer.toString().split(' …


5
如何全局声明管道以在不同模块中使用?
我有一个自定义管道,名为 CurrConvertPipe import {Pipe, PipeTransform} from '@angular/core'; import {LocalStorageService} from './local-storage'; @Pipe({name: 'currConvert', pure: false}) export class CurrConvertPipe implements PipeTransform { constructor(private currencyStorage: LocalStorageService) {} transform(value: number): number { let inputRate = this.currencyStorage.getCurrencyRate('EUR'); let outputputRate = this.currencyStorage.getCurrencyRate(localStorage.getItem('currency')); return value / inputRate * outputputRate; } } 我需要在两个不同的模块来使用这个,Module1和Module2。 当我导入Module1和时Module2,出现错误消息说应该在更高级别的模块中声明它。 所以我在里面声明了管道 app.module.ts import …

6
如何在Go中传递多个命令?
如何在Go中将多个外部命令传递到一起?我已经试过了这段代码,但是看到一条错误消息exit status 1。 package main import ( "io" "log" "os" "os/exec" ) func main() { c1 := exec.Command("ls") stdout1, err := c1.StdoutPipe() if err != nil { log.Fatal(err) } if err = c1.Start(); err != nil { log.Fatal(err) } if err = c1.Wait(); err != nil { log.Fatal(err) } c2 …
75 go  pipe 

7
管道输出到bash功能
我在bash脚本中具有简单的功能,我想将stdout作为输入传递给它。 jc_hms(){ printf "$1" } 我想以这种方式使用它。 var=`echo "teststring" | jc_hms` 当然,我使用了冗余函数echo和printf来简化问题,但是您明白了。现在,我收到一个“未找到”错误,我认为这意味着我的参数定界是错误的(“ $ 1”部分)。有什么建议? 最初,jc_hms函数的用法如下: echo `jc_hms "teststring"` &gt; //dev/tts/0 但我想将结果存储在变量中,以便在将其发送到串行端口之前先进行进一步处理。 编辑:所以要澄清一下,我不是想将内容打印到串行端口,如果要使用“ |”,我想连接到我的bash函数。竖线字符,我想知道是否可行。 编辑:好的,这是全部功能。 jc_hms(){ hr=$(($1 / 3600)) min=$(($1 / 60)) sec=$(($1 % 60)) printf "$hs:%02d:%02d" $min $sec } 我正在使用该函数来形成字符串,这行代码 songplaytime=`echo $songtime | awk '{print S1 }'` printstring="`jc_hms $songplaytime`" #store resulting …
71 linux  bash  pipe 
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.