小编dur*_*597的帖子

当我返回 shell 时,为什么将文件名管道传输到 VIM 会破坏 bash?

我用 find 搜索了几个文件,我想在 Vim 的选项卡中打开所有这些文件。所以我试过这个:

find . | xargs fgrep -l myExpression | xargs vim -p
Run Code Online (Sandbox Code Playgroud)

这很好用,除了当我完成并退出 Vim 时,我在 vim 中输入的所有内容都是不可见的,并且退格键不起作用(所以当我像ls<backspace><backspace>exit生成的历史一样输入ls^?^?exit而不是exit。它也警告我我的管道不是从终端。

不过,当我重新启动 shell 时,一切又都好了。这始终是可重现的。

bash 版本:

GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

维姆版本:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Apr 14 2015 05:43:37)
Included patches: 1-699
Run Code Online (Sandbox Code Playgroud)

grep bash vim find xargs

3
推荐指数
1
解决办法
828
查看次数

使用 || 后通过退出状态码

我想写一个类似于以下内容的别名:

alias baz="false || echo bar"
Run Code Online (Sandbox Code Playgroud)

(它实际上不是false,它是一个可能会失败的命令)。但是,我想将失败的状态代码传递给下一个调用者。换句话说,这是当前的行为:

$ false; echo $?
1
$ false || echo foo; echo $?
0
Run Code Online (Sandbox Code Playgroud)

我想做一个不同的操作,它在各方面都与 具有相同的行为false || echo foo,除非我这样做时echo $?它会返回1

注意:我希望这个echo foo位基本上总是成功的。

bash shell-script exit-status

2
推荐指数
1
解决办法
1133
查看次数

标签 统计

bash ×2

exit-status ×1

find ×1

grep ×1

shell-script ×1

vim ×1

xargs ×1