标签: pipe

在Vim中将缓冲区管道缓冲到外部命令

我是一个Vim新手.我想将当前缓冲区的内容发送到外部命令的stdin(比方说邮件).我的最终目的是设置一个快捷方式,以便从当前的Vim缓冲区快速发送电子邮件.我猜这应该是一个微不足道的东西,但我找不到一种方法将Vim缓冲区发送到外部命令.提前致谢.

vim external pipe

83
推荐指数
1
解决办法
3万
查看次数

如何在markdown表中的代码语句中转义管道char?

在GitHub上,我想在Markdown中构建一个包含代码片段的表.它工作正常,除非我在反引号(即`)字符之间放置一个管道char(即|).

这就是我想要的:

      a     |  r  
------------|-----
 `a += x;`  |  r1
 `a |= y;`  |  r2
Run Code Online (Sandbox Code Playgroud)

问题是第二行的代码语句中的垂直条被解释为列分隔符.然后表格渲染看起来很丑陋.我怎么能避免这种情况?

请注意,我已经尝试使用|HTML代码,但它产生了a |= y;.

markdown escaping pipe github

83
推荐指数
3
解决办法
2万
查看次数

bash:按列拆分命令输出

我想做这个:

  1. 运行一个命令
  2. 捕获输出
  3. 选择一条线
  4. 选择该行的列

举个例子,假设我想从a获取命令名$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
Run Code Online (Sandbox Code Playgroud)

下一步:ps | egrep 11383 | cut -d" " -f 4.输出是:

<absolutely nothing/>
Run Code Online (Sandbox Code Playgroud)

问题是cut通过单个空格切割输出,并且ps在第2列和第3列之间添加一些空格以保持表的某些相似性,cut选择空字符串.当然,我可以cut用来选择第7个而不是第4个字段,但是我怎么知道,特别是当输出是预先变量和未知的时候.

linux bash pipe

81
推荐指数
3
解决办法
16万
查看次数

如何将输入传递给Bash while循环并在循环结束后保留​​变量

Bash允许使用: cat <(echo "$FILECONTENT")

Bash还允许使用: while read i; do echo $i; done </etc/passwd

结合前两个可以使用: echo $FILECONTENT | while read i; do echo $i; done

最后一个问题是它创建了子shell,而在while循环结束后,变量i不再被访问.

我的问题是:

如何实现这样的目标:while read i; do echo $i; done <(echo "$FILECONTENT")或者换句话说:我怎样才能确定i循环中存活?

请注意我知道封闭while语句{}但这并不能解决问题(想象一下你想在函数中使用while循环并返回i变量)

bash stdin pipe while-loop

80
推荐指数
2
解决办法
8万
查看次数

如何在Windows中获取所有打开的命名管道列表?

有没有一种简单的方法来测试您的命名管道是否正常工作?我想确保我从我的应用程序发送的数据实际上是发送的.是否有一种快速简便的方法来获取所有命名管道的列表?

windows winapi pipe

78
推荐指数
8
解决办法
9万
查看次数

如何在当前shell中执行命令的输出?

我很清楚source(又名.)实用程序,它将从文件中获取内容并在当前shell中执行它们.

现在,我正在将一些文本转换为shell命令,然后运行它们,如下所示:

$ ls | sed ... | sh
Run Code Online (Sandbox Code Playgroud)

ls只是一个随机的例子,原始文本可以是任何东西.sed也是一个转换文本的例子.有趣的是sh.我管道我得到的任何东西sh,它运行它.

我的问题是,这意味着启动一个新的子shell.我宁愿让命令在我当前的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
Run Code Online (Sandbox Code Playgroud)

这确保所有.doc文件的扩展名都是小写的.

顺便说一下,可以处理xargs,但除此之外.

find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git …
Run Code Online (Sandbox Code Playgroud)

unix bash shell pipe

77
推荐指数
6
解决办法
7万
查看次数

Angular 2管道,将JSON对象转换为漂亮的JSON

尝试编写一个Angular 2管道,该管道将获取一个JSON对象字符串并将其返回相当打印/格式化以显示给用户.

例如,它需要:

{"id":1,"number":"K3483483344","州":"CA","有效":true}

并在HTML中显示时返回看起来像这样的内容:

在此输入图像描述

所以在我看来,我可以有类似的东西:

<td> {{ record.jsonData | prettyprint }} </td>
Run Code Online (Sandbox Code Playgroud)

javascript json pipe filter angular

77
推荐指数
5
解决办法
6万
查看次数

使用简单的管道限制为2位小数

我找到了一个将数字限制为2位小数并将数字转换为货币数量的示例 - 例如£2.55.

{{ number | currency : 'GBP' : true : '1.2-2'}}
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的管道在不使用货币的情况下也能做到这一点?

pipe decimal angular

74
推荐指数
4
解决办法
10万
查看次数

如何在Unix(或Windows)中使用(最好是未命名的)管道将一个进程的stdout发送到多个进程?

我想将进程proc1的stdout重定向到两个进程proc2和proc3:

         proc2 -> stdout
       /
 proc1
       \ 
         proc3 -> stdout
Run Code Online (Sandbox Code Playgroud)

我试过了

 proc1 | (proc2 & proc3)
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用,即

 echo 123 | (tr 1 a & tr 1 b)
Run Code Online (Sandbox Code Playgroud)

 b23
Run Code Online (Sandbox Code Playgroud)

stdout而不是

 a23
 b23
Run Code Online (Sandbox Code Playgroud)

unix windows bash shell pipe

72
推荐指数
4
解决办法
2万
查看次数

gdb - 使用管道输入(不是参数)进行调试

我通常运行我的程序:

perl -e 'print "A"x200' | ./vuln_prog
Run Code Online (Sandbox Code Playgroud)

stdin由gets()C++中的函数使用.

如果这只是一个命令参数,我可以通过执行以下操作打开gdb:

gdb ./vuln_prog
run $(perl -e 'print "A"x200')
Run Code Online (Sandbox Code Playgroud)

但是,我的场景不是命令参数,而是输入(STDIN?).我如何在gdb中调试它?我尝试过很多选项,但似乎没什么用.

我通常只是在进程上运行gdb,当它提示用户输入时,输入它,但是我不想只键入"A".我想输入来自\ x00-\xff的所有字符,我无法输入.

gdb pipe

70
推荐指数
1
解决办法
4万
查看次数

标签 统计

pipe ×10

bash ×4

angular ×2

shell ×2

unix ×2

windows ×2

decimal ×1

escaping ×1

external ×1

filter ×1

gdb ×1

github ×1

javascript ×1

json ×1

linux ×1

markdown ×1

stdin ×1

vim ×1

while-loop ×1

winapi ×1