如何在 bash 中通过管道传递事件?

如何在 bash 中通过管道传递事件?

阅读本文后:bash 事件指示符,我可以制作例如!?commandString。所以我做了:

$find somedir -iregex '.*Makefile.*'
$bla/bla/Makefile
$bla/bla/bla/Makefile
$...

现在,我想将它与事件设计器一起使用来管道它:

$!?nameOfFile | sed -n 'p1' | xargs cd

呃:

bash: !?Makefile | sed -n '1p': event not found

它将整行作为事件,那么我如何制作end事件以便进一步处理?

答案1

从链接的手册中:

结尾的“?”如果字符串后面紧跟换行符,则可以省略。

由于字符串中是不是紧接着是一个换行符,它应该有一个尾随?

!?nameOfFile? | sed -n 'p1' | xargs cd

尽管这对您没有帮助,因为xargs cd 它将在单独的进程中运行cd,因此您的 shell 不会受到影响。你需要类似的东西:

cd "$(!?nameOfFile? | head -n1)"

相关内容