如何在此行的末尾而不是在zsh的开头管道此回声?

时间:2013-08-06 01:26:29

标签: shell pipe zsh

现在我有

echo 'abcdef' | gzip | wc -c

我想拥有的是

$(| gzip | wc -c) ???mystery-pipe-operator??? echo 'abcdef'

$(gzip | wc -c) <(echo 'abcdef')

但当然,它们都不起作用,因为我不知道我在做什么。我想重新构造回声到最后,以便当我按下向上和向下导航我的命令行历史记录时,我可以轻松地编辑字符串。我正在使用zsh。我知道Ctrl-R可以进行反向增量搜索,但这太麻烦了。

谢谢!

2 个答案:

答案 0 :(得分:1)

可能更容易做到:

$ s=abcdef
$ echo "$s" | gzip | wc -c

然后在重复历史记录中的命令之前重新定义s。或者使用函数:

$ foo() { echo "$*" | gzip | wc -c; }
$ foo abcdef

答案 1 :(得分:1)

在zsh(以及bash中)中,您可以将复合命令与进程替换一起使用:

{ gzip | wc -c; } < <(echo abcdef)

甚至是“here string”:

{ gzip | wc -c; } <<<abcdef