No estoy seguro de cómo redactar esto, pero a menudo me encuentro escribiendo comandos como este:
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
Por lo general, solo escribo la ruta dos veces (con la finalización de la pestaña) o copiaré y pegaré la ruta con el cursor. ¿Hay algún bashfoo que haga que esto sea más fácil de escribir?
bash
command-line
clipboard
line-editor
usuario1028270
fuente
fuente

bash-fu:)Respuestas:
Hay varios trucos (creo que hay un duplicado que se encuentra), pero por esto tiendo a hacer
que se expande a tus órdenes.
Esto se conoce como expansión de llaves . En la forma utilizada aquí, la
{}expresión especifica una serie de cadenas separadas por comas. Estos "expanden" la/etc/prog/dir1/myconfig.yml{,.bak}expresión completa , reemplazando la{}parte con cada cadena a su vez: la cadena vacía, dando/etc/prog/dir1/myconfig.ymly luego.bakdando/etc/prog/dir1/myconfig.yml.bak. El resultado esEstas expresiones se pueden anidar:
produce
Hay una variante que usa números para producir secuencias:
produce
y también puedes especificar el paso:
produce
fuente
.bak.La expansión del historial puede ser útil para este tipo de cosas (suponiendo que el historial de bash esté habilitado).
En su ejemplo, podría hacer:
Aquí, se
!#refiere a la línea actual, se!#:1refiere al parámetro 1 en la línea actualy
!#:1.bakrefiere al parámetro 1 en la línea actual con '.bak' pegado al final.Cuando tiene el especificador de historial escrito, puede usar Ctrl+ Alt+E para expandirlo a su valor real si desea, por ejemplo, verificar o modificar el nombre de archivo.
La sección "Expansión del historial" en las páginas de manual de bash tiene más información.
fuente
Similar a la respuesta de progo, pero algo más simple:
C-wcorta ("mata") la palabra a la izquierda del cursor, laC-yinserta ("tira") nuevamente.fuente
También puede cortar y pegar (kill-yank en términos de emacs / bash) desde la línea de comandos para duplicar partes para su edición.
M-dmata hacia adelante hasta el límite de la palabra, y puede matar el texto varias veces y todos se concatenan juntos en una sola 'pegar' para tirar. ¡Conveniente!Yank todo esto de vuelta a la línea de comandos en el cursor por
C-y. Entonces, si tiene una línea como esta (el elemento de bloque █ indica la posición del cursor):De cualquier manera que prefiera hacerlo, familiarizarse con lo que bash tiene para ofrecer en el departamento de claves interactivas será beneficioso. http://web.mit.edu/gnu/doc/html/features_7.html
fuente
En
tcshozsh, Alt+Ctrl+_enemacsmodo (copy-prev-wordwidget) inserta la última palabra, entoncesbashtiene uncopy-backward-wordwidget (no está vinculado a ninguna tecla de forma predeterminada) pero que solo copia la palabra en el búfer de anillo, también deberías presionar Ctrl-Y(enemacsmodo) para tirar de ella. Pero podrías hacer:Para tener Alt+Ctrl+_tanto copiar / snarf y pegar / tirar como en
tcsh/zsh.fuente