Assim como M-.
(meta-ponto ou esc-ponto ou alt-ponto) é a função de linha de leitura yank-last-arg
, M-C-y
(meta-controle-y ou esc-ctrl-y ou ctrl-alt-y) é a função de linha de leitura yank-nth-arg
. Sem especificar n
, ele puxa o primeiro argumento do comando anterior.
Para especificar um argumento, pressione Escape e um número ou mantenha pressionada a tecla Alt e pressione um número. Você pode fazer Alt- -para começar a especificar um número negativo, solte Alt e pressione o dígito (isso será contado a partir do final da lista de argumentos.
Exemplo:
Digite o seguinte comando
$ echo a b c d e f g
a b c d e f g
Agora, no próximo prompt, digite echo
(com um espaço a seguir) e, em seguida,
Pressione Alt- Ctrl- ye você verá agora:
$ echo a
sem pressionar Enterainda, faça o seguinte
Pressione Alt- 3 Alt- Ctrl-y
Pressione Alt- - 2 Alt- Ctrl-y
Agora você verá:
$ echo ace
A propósito, você poderia colocar o jogo echo
em linha selecionando o argumento 0:
Pressione Alt- 0 Alt- Ctrl-y
Editar:
Para responder à pergunta que você adicionou ao seu original:
Você pode pressionar Alt- 0e pressionar repetidamente Alt- .para percorrer os comandos anteriores (arg 0). Da mesma forma Alt- e -depois repetindo Alt- ., você pode percorrer os últimos penúltimos argumentos anteriores.
Se não houver argumento apropriado em uma linha específica da história, a campainha será tocada.
Se houver uma combinação específica usada com freqüência, você poderá definir uma macro para que uma tecla seja executada. Este exemplo lembrará o segundo argumento dos comandos anteriores pressionando Alt- Shift- Y. Você pode escolher qualquer pressionamento de tecla disponível que preferir, em vez deste. Você pode pressioná-lo repetidamente para percorrer os anteriores.
Para experimentar, insira a macro em um prompt do Bash:
bind '"\eY": "\e2\e."'
Para torná-lo persistente, adicione esta linha ao seu ~/.inputrc
arquivo:
"\eY": "\e2\e."
Infelizmente, isso não parece funcionar para arg 0 ou números de argumentos negativos.
bind -lp
e observar as ligações atuais.-s
(novo no Bash 4) lista macros criadas usando-x
.M-.
:Alt-3
Alt-Ctrl-y
por exemplo, é igual a manterAlt
e digitar3.
. Se você digitar3.
isso várias vezes sem liberar,Alt
percorrerá os terceiros argumentos de suas linhas de comando anteriores.!$
obtém o último elemento do argumento anterior da linha de comandos.fonte
!:3
você recebe o terceiro #!!
recebe o último comando inteiro. Útil se você esqueceu de usarsudo
.!:1-2
obtém todos os argumentos, exceto o último dos 3echo foo{,bar} baz
, o comando será gravado como impresso e se expandirá posteriormente. Com o exposto, o uso deecho !:1
depois resolve paraecho foo{,bar}
e depois expande para #echo foo foobar
Para usar o primeiro argumento, você pode usar
!^
ou!:1
Exemplo:
Como sua pergunta é sobre o uso de outros argumentos, aqui estão alguns úteis:
As quatro primeiras formas são usadas com mais frequência. O formulário
!:2-
é um tanto contra-intuitivo, pois não inclui o último argumento.fonte
file3
demv file1 file2 file3 target/
?Eu gostei tanto da resposta do @larsmans que tive que aprender mais. Adicionando esta resposta para ajudar outras pessoas a encontrar a seção da página de manual e saber o que procurar no Google:
fonte
! ^ pode ser o comando para o primeiro argumento. não tenho certeza se existe uma maneira de obter o enésimo.
fonte
!:n
, mas contando do final ao invés do início?Você também pode obter argumentos de qualquer comando em seu histórico!
fonte
Testado no Ubuntu 18.04
Para inserir argumentos anteriores:
No Linux, você pode repetir comandos para voltar ao histórico
Exemplo:
O último comando é:
mv
foo
mv foo
Atalhos gerais
Para percorrer os argumentos em um comando anterior
só funciona no zsh
execute ou adicione isso ao seu
~/.zshrc
Agora use Alt+ .para voltar o quanto quiser e, em seguida, use Alt+ :para percorrer os argumentos
Supondo que o último comando seja
5
4
3
2
1
echo
fonte: https://stackoverflow.com/a/34861762/3163120
Para ver todos os atalhos disponíveis
bind -lp
bindkey -L
Estou mantendo isso atualizado nesta lista https://gist.github.com/madacol/da38e42d7e45c2949a9f425cc20543e9
fonte
Alt .
no Zsh no Mac está digitando≥
🤔bindkey -L
no zsh para ver todos os atalhos vinculados, talvez ele ajude a identificar o problema ou até mesmo encontrar outros comandos úteis. No meu caso, por exemplo: a ligaçãoAlt .
é definida comobindkey "^[." insert-last-word
.Ctrl L
(para limpar a tela) ->bindkey "^L" clear-screen
.Alt+Ctrl h
->bindkey "^[^H" backward-kill-word
(o mesmo queCtrl w
para remover última palavra)bindkey "^[^_" copy-prev-word
Basicamente, ele é usado para puxar argumentos anteriores (de comando) .
Por exemplo, se o seguinte comando for emitido:
então,
Hello,
será o primeiro argumento, etoday?
o sexto , esse é o último; ou seja, pode ser referenciado digitando:Alt+6 Seguido por Ctrl-Alt-6
Ctrlé tradicionalmente denotado como um personagem chapéu
^
anexado aos nomes de chaves, e AltcomoM-
isso é M eta prefixo.Portanto, o atalho acima pode ser redefinido
^My
para puxar.Além disso, há um atalho de substituição de chapéus na linha de comando:
para substituir a primeira sequência correspondente do comando anterior , significando:
resultaria em:
deixando a segunda partida (
hello
) inalterada.O acima é apenas um atalho para:
a substituição no nível do evento (*) da primeira cadeia encontrada (correspondida) no comando anterior, enquanto o prefixo da primeira parte com a
g
opção se aplicará a toda a linha g globalmente :como geralmente sendo feito em outros comandos relacionados, tais como
sed
,vi
e emregex
(expressão regular) - uma maneira Standart de pesquisa ( seqüência de jogo ).Isso é o que eu entendi usando-o sozinho e tentando fazer as coisas sozinho, a partir do que li de várias fontes, incluindo páginas de manual, blogs e fóruns.
Espero que possa lançar alguma luz sobre maneiras misteriosas de
bash
, o shell Bourne-Again (uma brincadeira nosh
shell, que é chamada de shell Bourne após o sobrenome de seu inventor), o que é o shell padrão em muitas distribuições, incluindo servidores ( sistemas operacionais de servidores ).fonte
! ^ o primeiro parâmetro,! $ o último parâmetro,!: n o nésimo elemento.
fonte
O método descrito no final da resposta aceita também funciona com o argumento zeroth para mim. Eu tenho estas linhas no meu
~/.inputrc
:\e2\e.
tem a vantagem de\e2\e\C-y
percorrer os comandos anteriores se for pressionado repetidamente em vez de inserir o segundo argumento do comando anterior várias vezes.Para inserir todo o comando anterior, você pode digitar
!!\e^
.\e^
éhistory-expand-line
.fonte
Se você estiver em um Mac, tenderá a obter caracteres estendidos com ctrl + letra. Eu tenho minha chave de opção de barra de direito de espaço definida como meta no meu terminal (iTerm2) configurado. Isso significa que eu uso a tecla para navegar por palavra e extrair parâmetros dos comandos anteriores.
fonte