aar*_*vin 12 command-line bash
我使用 Bash。当我在寻找文件时,我通常会执行以下操作:
find -name stackexchange.hs
结果通常如下所示:
/youre/the/man/now/dog/stackexchange.hs
/you/are/no/longer/the/dog/dog/stackexchange.hs
/this/is/the/file/i/want/stackexchange.hs
Run Code Online (Sandbox Code Playgroud)
然后我想执行以下操作之一:
目前,我用鼠标剪切和粘贴。这让我想到了我的问题:
find命令之后发生的。$ find -name am_i_really_all_alone.txt
./borges/library/you_are_not_alone.txt
./borges/library/am_i_really_all_alone.txt
$ vim (N)
Run Code Online (Sandbox Code Playgroud)
(语法和语义可能不同,但你明白了)
似乎有几个类似的问题。以下是我感知到的差异(我愿意接受启蒙):
findinto vim(或其他任何内容)通过管道传输。在我的情况下,我想find先,再管(可以这么说)。我的捕获/使用严格发生在.感谢您的帮助!在我 90 年代十几岁的时候使用 *nix/BSD 并且通过打电话给我的倦怠,酸头邻居来帮助我为我的即插即用声卡安装驱动程序而被吓跑,我很高兴地讨论命令 -将细节与(可感知的)不那么可怕的人联系起来。回来的感觉真好。
这是您的问题的潜在解决方案,在存在时髦文件名的情况下应该是合理(但不完全)安全的(不处理带有换行符的文件名 - 可能可以修复,但可能存在其他问题)。
两个函数,第一个函数find使用您传递的参数运行,将输出保存在数组中,并显示它们。第二个只是访问该数组的助手。
myfind() {
IFS=$'\n' __last_find_result=($(find "$@"));
printf "%s\n" "${__last_find_result[@]}";
}
myget() {
echo "${__last_find_result[$1]}";
}
Run Code Online (Sandbox Code Playgroud)
用例:
$ myfind . -name "c*"
./a b/c d
./.git/config
./.git/hooks/commit-msg.sample
$ vim "$(myget 0)"
# This opens the "./a b/c d" file.
$ vim "$(myget 2)"
# This opens ".git/hooks/commit-msg.sample"
Run Code Online (Sandbox Code Playgroud)
$(myget index)如果文件名中没有空格或其他麻烦的字符,则不需要引号。
将 的整个输出推find送到您的环境,这可能是有限的。(使用临时文件而不是该数组可以解决这个问题,但还有其他问题 - 特别是从多个 shell 并发使用。)
我有这个.screenrc:
bind -c pasteline 1 eval copy 'stuff "-Y"' 'paste .'
bind -c pasteline 2 eval copy 'stuff "2-Y"' 'paste .'
bind -c pasteline 3 eval copy 'stuff "3-Y"' 'paste .'
bind -c pasteline 4 eval copy 'stuff "4-Y"' 'paste .'
bind -c pasteline 5 eval copy 'stuff "5-Y"' 'paste .'
bind -c pasteline 6 eval copy 'stuff "6-Y"' 'paste .'
bind -c pasteline 7 eval copy 'stuff "7-Y"' 'paste .'
bind -c pasteline 8 eval copy 'stuff "8-Y"' 'paste .'
bind -c pasteline 9 eval copy 'stuff "9-Y"' 'paste .'
bindkey ¬ command -c pasteline
Run Code Online (Sandbox Code Playgroud)
基本上,在屏幕中,¬1,粘贴光标上方的行,¬2,粘贴光标上方的第二行......等等。您可能想为第 10 行及以上添加更多,但我发现在大约 7 行之后,我宁愿使用鼠标或screen的复制模式,也不愿计算行数以获得我想要的行数。