在 OSX TextMate 上有别名mate,您可以将其与管道一起使用以打开其他程序的标准输出。
如何使用 Notepad++ 在 Windows 7 中实现相同的效果?
前任。: git diff master|edit
所以我有一个curl通过管道连接到 agrep和 a 的sed。我会在哪里申请>/dev/null 2>&1?
curl www.site.com | grep stuff | sed "other stuff"
Run Code Online (Sandbox Code Playgroud)
在最后还是在卷曲之后?
正如我们许多人肯定知道的那样,让您的程序接受 stdin 输入总是一个好主意。很多程序确实允许使用 *nix 环境。这让我们可以做一些很酷的事情,比如管道
echo "foo" | less。很多时候人们会发现这cat barfile | baz在逻辑上等同baz barfile于在幕后它只是读取字符串。
如今,有更多的程序默认无法通过管道传输。一些程序具有仍然允许上述行为的标志,但许多程序没有。
现在,我的问题是,是否存在临时文件管道?
现在,由于我几乎不具备编写 Bash 的能力和在 Google 上大约 5 分钟的时间,我想出了这个
#!/bin/bash
if [ $# -ne 2 ]; then exit 1; fi
f=$(mktemp)
($1) > $f
if [ $? -eq 0 ]; then ($2 $f); else exit $?; fi
rm $f
Run Code Online (Sandbox Code Playgroud)
调用这个 fpipe,我们可以做一些事情,比如fpipe 'wget -O- www.example.com' bazbaz 是一个我们不能管道但可以做的程序baz file。
我的问题是我们怎样才能做得更好。我怀疑有了更多的 Bash 知识,重新编写上面的脚本来接受任何数量的参数将是相当微不足道的(这样我们就可以做一些事情,比如fpipe 'foo x' bar baz在管道中我们可以做类似的事情foo x …
我已经在这个问题上挣扎了一段时间,如果有人能为我澄清一下,我将不胜感激。假设我试图将这两个命令通过管道连接在一起。readlink和cat
readlink Command output
$ readlink -f SUService.log
/cygdrive/c/SUService.log
Run Code Online (Sandbox Code Playgroud)
现在如果我尝试这样的事情(它失败了)
$ readlink -f SUService.log | cat
Run Code Online (Sandbox Code Playgroud)
虽然这样的事情会起作用
$ readlink -f SUService.log | xargs cat
Run Code Online (Sandbox Code Playgroud)
我想知道这是为什么?我在这里阅读了这篇文章,其中 OP 有一个类似的问题,这篇文章试图解释参数和输入之间的区别,但是我仍然无法理解已接受的答案。据我所知,readlink将结果返回到 stdout 是终端屏幕,同时cat需要输入作为参数。这反过来提示我问我如何知道命令的输出(例如 locate 或 readlink)是否可以作为下一个命令的参数?我一直在做更多的阅读,结果我想知道什么时候应该使用 xarg 命令?
我要管的ffmpeg输出到像这样的一些其他的过程:
ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 - | process。我明白了Unable to find a suitable output format for 'pipe:'
pipe:: Invalid argument。我如何实现管道?
我想使用heredoc作为模板生成一些内容:
passphrase=$(<passphrase) envsubst <<EOF
apiVersion: v1
kind: Secret
metadata:
name: openshift-passphrase
stringData:
passphrase: ${passphrase}
EOF
Run Code Online (Sandbox Code Playgroud)
并将其通过管道传输到oc create -f -.
如果我在 后面添加管道EOF,则不起作用。
如何通过管道将带有变量替换的定界文档传递给消耗它的东西?
我试图更深入地了解管道和重定向。在每个指南中都说cmd1 | cmd2cmd1 将执行,并且 stdout 将与 cmd2 的 stdin 共享。但这在我看来不太好,所以我测试了它:
所以看起来 ./test.sh和grep 都是并行运行的!
这是源代码:
#!/bin/bash
a=0
while :
do
((a=a+1))
echo "Line number $a"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
尝试使用不同的推荐会显示相似的结果。 管道是否平行运行?
管道和重定向如何“在幕后”工作?
当我在 Windows 命令行中使用 batchfile.bat >> logfile.txt 命令时,它正确地将正常输出输出到文本文件中,但 Java 异常会输出到控制台。我可以这样做,以便将异常也写入日志文件吗?
当我在 linux 中运行以下命令时:
find / -iname httpd.conf
Run Code Online (Sandbox Code Playgroud)
我得到:
/usr/local/apache/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)
我想用nano编辑这个文件,懒得再输入文件路径,我用的:
find / -iname httpd.conf | nano
Run Code Online (Sandbox Code Playgroud)
不行,nano很快打开退出,然后在我运行这个命令的目录下发现了nano.save文件。在 nano.save 上使用 cat 命令,它输出文本:/usr/local/apache/conf/httpd.conf
这意味着 nano 将之前的管道输出视为我想写入文件的字符串,但事实是,我希望 nano 将其视为文件路径,以便它实际打开文件供我进行编辑。
我们如何让 nano 接受以前的管道输出作为文件路径?
我正在尝试对匹配模式的目录中的每个文件(递归地)运行一个命令。但是,我需要与命令匹配的每个项目的文件名。这是我有多远:
find . -name '*.jar'
Run Code Online (Sandbox Code Playgroud)
这给了我我感兴趣的所有文件。 现在,我需要对所有这些文件运行以下命令:
jarsigner -keystore ***** -storepass ****** $FILENAMEHERE
Run Code Online (Sandbox Code Playgroud)
对于命令,如何在 find 的输出中引用各个项目?