linux – 当完成函数读取文件时,Bash完成有时会对我的终端进行网
所以我一直遇到一些cli程序的问题.有时当我使用Ctrl C终止正在运行的进程时,它会使终端处于奇怪的状态(例如,关闭回声).现在,在许多情况下都可以预料到,因为杀死一个进程并不能让它有机会恢复终端的状态.但我发现,对于许多其他情况,bash完成是罪魁祸首.例如,尝试以下操作:
>按如下所示启动新的bash会话:bash –norc以确保不加载任何完成. 真正奇怪的是,如果我从完成函数中删除看似无害的grep -q foo / dev / null,一切都能正常工作.事实上,将grep -q foo / dev / null(甚至更简单的东西,如cat / dev / null)添加到我的系统中安装的任何完成函数,都会导致同样的问题.我还使用不使用readline和没有Ctrl C的程序重现了这个问题(例如,查找/ varTab | head,并为find定义了上述完成). 为什么会这样? 编辑:只是为了澄清,上面是一个人为的例子.实际上,我想要做的更像是这样的: _completion_test() { if grep -q "$1" /some/file; then #do something else #do something else fi } 有关更具体的示例,请尝试以下操作: _completion_test() { if grep -q foo /dev/null; then COMPREPLY=(cats) else return 1 fi } 但仅仅是我调用grep这一事实导致了这个问题.我不明白为什么我不能在这种情况下调用grep. 解决方法
嗯,答案很简单;这是一个
bug:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Linux和C中将文件用作互斥锁?
- linux – Cygwin GCC交叉编译二进制文件?
- linux – EXT4性能在包含大量小文件的系统上变得非常糟糕
- linux – sendmsg()中的辅助数据如何工作?
- 【Linux】【Kibana】解决Kibana启动失败:Data too large问
- linux – 使用bash连接到Ubuntu中的VPN连接
- linux – cp不想覆盖权限
- LINUX学习:Ubuntu配置GitHub并新建仓库push代码
- Linux/UNIX编程:使用C语言实现ls命令
- 在Linux上运行时,exec-maven-plugin发现Class Not Found异常