Não é possível voltar ao prompt bash após comando estranho

2

Eu estava brincando com diferentes curingas e executei o seguinte comando:

ls testdir/!(*/)

após o qual eu não consegui voltar ao prompt bash. Nenhum de ^ C, ^ D ou mesmo de ^ Z funcionou: eles apenas imprimiram esses caracteres literais.

Atualização: descobri que basta digitar:

ls !()

teve o mesmo efeito. Remover minha .bash_history não ajudou.

Então, duas perguntas:

  1. É possível recuperar-se desse comando?

  2. O que exatamente eu disse para fazer e o que está esperando?

Notas:

Se eu apenas executar !(*/) , apenas diz "evento não encontrado"

Se eu executar ls !(*/) ou echo !(*/) , ele faz o mesmo que acima

Os processos bash estão na lista com 100% da CPU, mas não ls

A execução do mesmo comando em um contêiner lxc apenas fornece "evento não encontrado". As opções do meu bash são bastante semelhantes ao Ubuntu 14.04. Nada estranho.

Usando set -x antes do comando ls não fazer eco em nada.

Notas2: Saída do shopt

autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
compat42        off
complete_fullquote  on
direxpand       off
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         on
extquote        on
failglob        off
force_fignore   on
globstar        off
globasciiranges off
gnu_errfmt      off
histappend      on
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
interactive_comments    on
lastpipe        off
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell    off
shift_verbose   off
sourcepath      on
xpg_echo        off

Saída do conjunto + o

set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
    
por seumasmac 17.07.2015 / 09:17

1 resposta

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 $ 
    
por 17.07.2015 / 11:18