Pressione alt + numérico em bash e você obterá (arg [numérico]) o que é isso?

101

Pressione alt + numérico em bash e você obterá (arg [numérico]) o que é isso?

(Este tipo de pergunta é mais adequado para perguntar a um humano, em vez de tentar "adivinhar" a terminologia correta para pesquisar na documentação via internet).

dreftymac
fonte
Se você tem set keymap viem ~/.inputrc, em seguida, bater Esc + Digitleva você para o mesmo modo, como se preparar para uma repetição vi comando (mas você não pode usar o vi ligações a partir de-los, apenas emacs feias os :-()
Ciro Santilli郝海东冠状病六四 事件 法轮功
Minhas frases de pesquisa foram alt number terminal linux , alt + 1-9 terminal e eventualmente shell alt + 1 que me trouxe até aqui.
sshow

Respostas:

62

O termo que você deseja pesquisar no Google é:

"readline arguments"

Isso levará a, por exemplo, este capítulo do manual de referência do bash :

Você pode passar argumentos numéricos para comandos Readline. Às vezes, o argumento atua como uma contagem de repetição , outras vezes é o sinal do argumento que é significativo. Se você passar um argumento negativo para um comando que normalmente atua na direção para frente, esse comando atuará na direção para trás. Por exemplo, para matar o texto de volta ao início da linha, você pode digitar 'M-- C-k'.

A maneira geral de passar argumentos numéricos para um comando é digitar meta-dígitos antes do comando. Se o primeiro 'dígito' digitado for um sinal de menos ('-'), o sinal do argumento será negativo. Depois de digitar um meta-dígito para iniciar o argumento, você pode digitar o restante dos dígitos e, em seguida, o comando. Por exemplo, para dar ao comando Cd um argumento de 10, você poderia digitar 'M-1 0 C-d', o que excluirá os próximos dez caracteres na linha de entrada.

Para que isso funcione, você precisa saber onde a chave Meta está mapeada: às vezes é Alt, às vezes é Esc, computadores legais têm uma chave Meta dedicada;)

Para quem não está familiarizado com a sintaxe, 'M-- Ck' é o equivalente a Meta_key+ - Ctrl+ k. "M" é uma abreviatura para a tecla Meta, que, conforme observado, varia de acordo com o sistema, "C" é uma abreviação para a tecla Ctrl. O "-" após um caractere (como "M-") não é algo que você digita, é uma forma de indicar pressionamentos de tecla simultâneos.

Comunidade
fonte
2
Existe uma maneira de repetir caracteres numéricos usando argumentos numéricos? Por exemplo, digamos que eu quisesse escrever 128 zeros ('0'), acho que poderia escrever Alt + 128 e depois 0, mas isso me dá (arg: 1280(embora eu solte a tecla Alt). Como eu repetiria números usando este mecanismo?
Victor Zamanian
1
@Victor: questões interessantes. Não consigo pensar em uma maneira de fazer isso com readline. você provavelmente está melhor com algo como$(perl -e 'print "0" x 128')
1
@VictorZamanian veja outra resposta nesta pergunta
TTT
28

Para repetir caracteres numéricos - por exemplo, 128 zeros, pressione o seguinte:

Meta-key + 1 2 8 Ctrl + v 0

guv '
fonte
Ohhhh, é como vim(talvez emacs também, não me lembro).
Sridhar Sarnobat
12

Experimente isso. Digite Alt 4, depois digite Te pressione Enter.

Editado para usar o HTML mais atraente.

Sean Bright
fonte
9
O que acontece com você? Eu não estou recebendo nada.
Mortimer McMire
1
Quatro tcaracteres são inseridos.
Wesley Baugh
4
Na minha versão Bash (4.4), não há necessidade de pressionar ENTER.
luca76
9

Ele repete o próximo comando dado tantas vezes, igual ao Emacs. Por exemplo, M-1-0 C-pretrocede 10 itens do histórico. M-4 C-hretrocede quatro caracteres, M-3 M-tavança a palavra anterior três vezes e assim por diante. Aqui eu uso o M-significado de "meta" para a tecla Alt, como é o costume no Bash.

Nietzche-jou
fonte
9

Eu sei que isso já tem uma resposta aceita, no entanto, encontrei alguns exemplos úteis que também demonstram usos adicionais além da simples repetição de caracteres. Os argumentos dos dígitos podem ser aplicados a todos os tipos de coisas. Por exemplo, a sequência "Alt + 3, Escape, Backspace" excluirá 3 palavras para trás.

stsquad
fonte
4

Não sei, mas quando você pressiona alt + numérico e pressiona um caractere, obterá caracteres num: (arg: 123) + a -> 123 vezes "a"

Giancarlo
fonte
8
você não sabe, mas você sabe? % - |