Não tenho certeza de como escrever isso, mas muitas vezes me encontro digitando comandos como este:
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
Normalmente, apenas digito o caminho duas vezes (com a conclusão da guia) ou copio e colo o caminho com o cursor. Existe algum bashfoo que facilita a digitação?
bash
command-line
clipboard
line-editor
user1028270
fonte
fonte
bash-fu
:)Respostas:
Existem vários truques (acho que existe uma duplicata), mas, por isso, costumo fazer
que é expandido para o seu comando.
Isso é conhecido como expansão de chaves . No formulário usado aqui, a
{}
expressão especifica um número de seqüências de caracteres separadas por vírgulas. Eles "expandem" toda a/etc/prog/dir1/myconfig.yml{,.bak}
expressão, substituindo a{}
parte por cada sequência: a sequência vazia, dando/etc/prog/dir1/myconfig.yml
e.bak
, em seguida , dando/etc/prog/dir1/myconfig.yml.bak
. O resultado éEssas expressões podem ser aninhadas:
produz
Há uma variante usando números para produzir sequências:
produz
e você também pode especificar a etapa:
produz
fonte
.bak
.A expansão do histórico pode ser útil para esse tipo de coisa (supondo que o histórico do bash esteja ativado).
No seu exemplo, você pode fazer:
Aqui,
!#
refere-se à linha atual,!#:1
refere-se ao parâmetro 1 na linha atuale
!#:1.bak
refere-se ao parâmetro 1 na linha atual com '.bak' pregado no final.Quando você digitar o especificador de histórico, poderá usar Ctrl+ Alt+ Epara expandi-lo para seu valor real, se desejar, por exemplo, verificar ou modificar o nome do arquivo.
A seção "Expansão do histórico" nas páginas do manual do bash tem mais informações.
fonte
Semelhante à resposta do progo, mas um pouco mais simples:
C-w
corta ("mata") a palavra à esquerda do cursor,C-y
insere ("puxa") novamente.fonte
Você também pode copiar e colar (kill-yank em termos do emacs / bash) na linha de comando para duplicar partes para edição.
M-d
mata para a frente até o limite da palavra, e você pode matar o texto várias vezes e todos são concatenados juntos em um único 'colar' para puxar. Conveniente!Coloque tudo isso de volta na linha de comando no cursor por
C-y
. Portanto, se você tem uma linha como esta (o elemento de bloco █ indica a posição do cursor):De qualquer maneira que você preferir, familiarizar-se com o que o bash tem a oferecer no departamento de chaves interativas será benéfico. http://web.mit.edu/gnu/doc/html/features_7.html
fonte
No modo
tcsh
ouzsh
, Alt+Ctrl+_noemacs
modo (copy-prev-word
widget) insere a última palavra, portantobash
possui umcopy-backward-word
widget (não vinculado a nenhuma tecla por padrão), mas que apenas copia a palavra no buffer de toque, você também deve pressionar Ctrl-Y(noemacs
modo) para puxá-lo. Mas você poderia fazer:Para Alt+Ctrl+_fazer a cópia / snarf e colar / puxar como em
tcsh
/zsh
.fonte