我经常在这样的源代码仓库上运行搜索:
ack -l "foo bar" .
搜索可能需要10到60秒,并产生如下输出:
path/to/file1
path/to/file2
path/to/file3
我经常使用这个别名来打开在vim中找到的所有文件:
alias go='gvim `fc -s` -p'
这样可以正常fc -s
运行,但是会重新运行上一个命令,这可能需要几秒钟或几分钟。
将这样的内容附加到我以交互方式运行的每个命令中将非常有用:
| tee /tmp/lastCommand to all commands.
这样,如果输出显示自己有用,那么我可以对它做其他事情。
用法示例:
类型:
find . -type f
执行以下命令:
find . -type f | tee $lastOutLocation # Where lastOutputLocation=/tmp/lastOutput
然后,您可以使用类似以下内容的方法来过滤前面的命令:
lastOut | grep "SomeString" # Where lastOut is an alias to cat $lastOutputLocation
有什么机制可以用来做这样的事情吗? 我不认为别名会暴露这种行为。
潜在伤害:
- 获得适用于复合命令的内容:
echo 'baz' ; echo 'bar'
- 在运行之前弄清楚如何修改用户键入的命令
- 忽略诸如交互式输入之类的东西。不想捕获密码提示
可能的解决方案,我目前正在探索:
- 按照此答案使用TRAP和shopt
考虑打字稿(
—
杰夫·谢
script
)命令
最大的障碍是希望访问终端而不仅仅是写入stdout的程序。管道连接到
—
吉尔斯
tee
(或其他任何方式)与此不兼容。
run
)中,该脚本将调用您要运行的带引号的命令。然后,您run 'find . -type f'
将执行脚本find . -type f | tee $lastOutLocation
。请注意,如上所述,我使用引号允许多个命令。