stty: argumento inteiro inválido: «CCPP»

1

Eu tentei isso em uma sessão de terminal em que estou usando o shell Z:

stty erase ^M

e recebi esta mensagem:

stty: invalid integer argument: «CCPP»

Eu não sei o que fazer.

    
por Ariel Marcelo Pardo 07.09.2017 / 22:57

1 resposta

1

No shell Z, o caractere ^ é um caractere globbing estendido que é reconhecido pela parte expansão do nome do arquivo do processamento de comandos.

Como o manual do shell Z explica, o padrão ^M corresponde a qualquer nome de arquivo exceto um que corresponda ao padrão M . Então, o que está acontecendo é que o comando está sendo expandido para stty erase , seguido por todos os nomes de arquivos no diretório atual, exceto um chamado M se houver um.

É simplesmente o caso de você ter um arquivo chamado «CCPP» no diretório atual que é o primeiro na lista resultante quando o padrão ^M globbing é expandido.

Cite ou escape do metacaractere:

  • stty erase '^M'
  • stty erase \^M

Ou desative a globalização estendida da shell Z:

  • setopt no_extended_glob

Compare a experiência de essa pessoa que tinha um nome de arquivo diferente e cujo padrão de exclusão era ? . A pessoa no link realmente fez a citação acima, e realmente forneceu um argumento (uma string contendo 3 caracteres em vez de um especificador de exatamente 1 caractere) que era inválido.

Naturalmente, o CR é uma escolha bizarra para um caractere erase especial. Mas eu não vou entender porque na Terra você quer fazer isso. ☺

Leitura adicional

por 19.09.2017 / 11:27

Tags