我想知道如何重用控制台的最后一个输出,即:
pv-3:method Xavier$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/Library/Python/2.6/site-packages
pv-3:method Xavier$ cd **LASTOUTPUT**
答案1
假设历史扩展已启用,您正在运行 Bash 或其他支持它的 shell,该命令是幂等的,并且等待它第二次运行不是问题,您可以使用!!
历史扩展的形式来再次获取最后一个命令行,以在命令替换中再次运行上一个命令:
% python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.7/site-packages
% cd $(!!)
cd $(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
% pwd
/usr/lib/python2.7/site-packages
答案2
还没提到,使用变量:
dir=$( python -c ... )
cd "$dir"
答案3
所有其他解决方案都涉及修改工作流程或运行命令两次,如果运行时间较长或不可重复(例如,它删除文件 - 重新运行会产生不同的结果),这可能不适合。
所以如果你需要的话,这里有一个更复杂的想法:
.bashrc
exec > >(tee -a ~/$$.out)
PROMPT_COMMAND='LASTLINE=$(tail -n 1 ~/$$.out)'
trap 'rm ~/$$.out' EXIT
bash 提示符
$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.6/dist-packages
$ cd $LASTLINE
$ pwd
/usr/lib/python2.6/dist-packages
这有一些问题,所以它只是作为一个起点。例如,输出文件 ( ~/<pid>.out
) 可能会变得非常大并填满您的磁盘。另外,如果死了,你的整个外壳可能会停止工作tee
。
可以将其修改为仅使用 zsh 中的钩子捕获上一个命令的输出preexec
,precmd
或者模仿他们在 bash 中,但这里描述起来更复杂。
答案4
尝试这个:
$ cd $(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
$ pwd
/Library/Python/2.6/site-packages