gpt4 book ai didi

linux - 获取屏幕输出行作为命令的参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:28 26 4
gpt4 key购买 nike

在 bash(或 zsh)中,有没有办法“回顾”之前的输出?

假设我有以下内容:

$ find . -depth 1 -name "d*"
dir1
dir2
dir3

$ cd [3rd line]

我可以在不重复上一个命令和使用管道的情况下从上一个输出中提取“dir3”吗?只是从屏幕上“捕获它”?

最佳答案

shell 根本看不到输出。当 find 运行时,它使用它从 shell 继承的文件句柄来写入 它的 输出,但这对 shell 是不可见的(尽管即使它是, shell 没有缓存它)。


但是,鉴于您正在使用 zsh,涉及外部命令时您应该问的第一个问题是,“我什至需要外部命令吗?”通常情况下,你不在这里。不要使用 find,只需使用 print 和 glob 即可获得相同的列表:

% print -l d*

然后再次使用相同的 glob 和限定符来选择第三个结果。

% cd d*([3])

(假设 d* 的扩展在运行 print 命令和运行 cd 命令之间不会改变。)

或者,您可以自己缓存结果:

% choices=( d* )
% print -l $choices
dir1
dir2
dir3
% cd $choices[3]

基于数组的解决方案也可以在 bash 中工作,尽管语法略有不同(并假设您的 find 命令足够简单,可以用 bash 的 glob 功能要弱得多。)

最后是select命令:

select d in d*; do
cd "$d"; break;
done

这也将在 bash 中按原样工作,再次假设一个有效的 glob。

关于linux - 获取屏幕输出行作为命令的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com