También puede usar la expansión del historial para referirse a palabras en la línea de comando actual:
convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf !#:$:r.png
- El designador de eventos se
!# refiere a la línea de comando escrita hasta ahora
- El designador de palabras
$ indica la última palabra (antes de la expansión)
- El modificador
r elimina la extensión del archivo. Esto también marca el final del texto, que se reemplaza cuando se produce la expansión del historial.
.pngEs la nueva extensión. Esto no pertenece a la expansión misma.
Cuando se ejecuta esta línea, !#:$:rse reemplaza por el nombre de su archivo pdf menos la extensión, creando así el comando a partir de la pregunta:
convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png
Esta línea se ejecuta directamente.
Si desea verificar el comando después de la expansión del historial, antes de la ejecución, use
setopt histverify
Esto volverá a cargar la línea expandida en el búfer de edición en lugar de ejecutarla.
Nota: a diferencia de cualquier otra expansión, la expansión del historial se realiza antes de que el comando se guarde en el historial. Entonces echo !#aparecerá como echo echoy no como echo !#en tu $HISTFILE.