Вы также можете использовать расширение истории, чтобы ссылаться на слова в текущей командной строке:
convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf !#:$:r.png
- Обозначение события
!# относится к командной строке, набранной до сих пор
- Обозначение слова
$ указывает на последнее слово (перед расширением)
- Модификатор
r удаляет расширение файла. Это также отмечает конец текста, который заменяется, когда происходит расширение истории.
.pngэто новое расширение. Это не относится к самому расширению.
Когда эта строка запускается, !#:$:rона заменяется именем вашего pdf-файла за вычетом расширения, создавая команду из вопроса:
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
Эта строка затем выполняется напрямую.
Если вы хотите проверить команду после раскрытия истории, перед выполнением используйте
setopt histverify
Это перезагрузит расширенную строку в буфер редактирования вместо ее выполнения.
Примечание. В отличие от любого другого расширения, расширение истории выполняется до сохранения команды в истории. Так echo !#будет выглядеть как echo echoи не так как echo !#по вашему $HISTFILE.