我正在摆弄不同的通配符并运行以下命令:
ls testdir/!(*/)
之后我完全无法回到 bash 提示符。 ^C、^D 甚至 ^Z 都不起作用:它们只是打印那些文字字符。
更新:我发现只需输入:
ls !()
具有相同的效果。删除我的 .bash_history 没有帮助。
那么,两个问题:
是否可以从该命令中恢复?
我究竟告诉 bash 做什么以及它在等待什么?
笔记:
如果我只是运行!(*/)
它只会说“未找到事件”
如果我运行ls !(*/)
或者echo !(*/)
然后它会执行与上面相同的操作
bash 进程在 CPU 利用率为 100% 的情况下出现在列表中,但不是ls
在 lxc 容器上运行相同的命令只会给出“未找到事件” 我的 bash 选项几乎都是 Ubuntu 14.04。没什么奇怪的。
set -x
在命令之前使用ls
不会回显任何内容。
注释2:shopt的输出
自动CD关闭 cdable_vars 关闭 cd 关闭 检查哈希关闭 检查工作关闭 检查窗口大小 cmdhist on 兼容31关闭 compat32 关闭 兼容40关闭 兼容41关闭 兼容42关闭 完整完整引用 目录展开关闭 驱散 点团关闭 执行失败关闭 展开别名 外部调试关闭 外部全局开启 外加引号 故障全局关闭 强制忽略 全球星关闭 关闭全球范围 gnu_errfmt 关闭 历史附加于 历史记录关闭 历史验证关闭 主机完全关闭 huponexit 关闭 互动评论 最后一管关闭 关闭 登录外壳关闭 邮件警告关闭 no_empty_cmd_completion 关闭 关闭 nocaseglob 无案例匹配关闭 空球关闭 编程补偿开启 提示变量打开 限制外壳关闭 关闭shift_verbose 源路径打开 xpg_echo 关闭
set +o 的输出
设置 +o allexport 设置 -o 大括号展开 设置-o emacs set +o 错误退出 设置 +o errtrace 设置 +o 函数跟踪 设置-o hashall 设置 -o histexpand 设置历史记录 设置 +o 忽略 设置-o 交互式评论 设置 +o 关键字 设置监视器 设置 +o noclobber 设置+o noexec 设置 +o noglob 设置+o nolog 设置 +o 通知 set +o 名词集 设置 +o onecmd 设置 +o 物理 set +o 管道故障 设置 +o posix 设置 +o 特权 设置 +o 详细 设置 +o vi 设置 +o xtrace
答案1
shw@shw:/tmp $ ls testdir/!(*/) & pidls=$!
[1] 18453
shw@shw:/tmp $
shw@shw:/tmp $ cat /proc/18453/cmdline
bashshw@shw:/tmp $
shw@shw:/tmp $
shw@shw:/tmp $ kill -9 18453
shw@shw:/tmp $
[1]+ Killed ls --color=auto testdir/!(*/)
shw@shw:/tmp $