少ないキーストロークで複数のファイル名を入力する方法

少ないキーストロークで複数のファイル名を入力する方法

imagemagickを使用して画像を画像pdfに変換するには:png

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

png何らかの理由で、PDFファイルは通常長いファイル名を持ち、ファイルの拡張子を除いて同じ名前を持つことを望みます。

通常、this_is_a_very_long_filename_of_my_pdf_file.pdfタブの選択を2回実行してから、2番目のzsh-menuパラメータを手動でpdf変更します。png

しかし、これを行うより速い方法はありますか?

答え1

あなたはそれを使用することができます支柱の拡張:

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.{pdf,png}

答え2

mogrifyを呼び出すと、pdfを上書きする代わりに新しいpngファイルが作成されます。うまくいけば;)

mogrify -trim density 400 -format png th*.pdf

th*.pdfの場合は、適切な数の文字を使用して正しいファイルを選択するか、フルネームを取得するまでタブの完成を実行することをお勧めします。

これにより、pngパラメータまでコマンド全体のエイリアスを作成できます。

答え3

常に同じコマンドを使用しますが、わずかな変更(ファイル名など)を適用した場合は、次のように関数を作成できます。

pdf2png() { convert -trim -density 400 "$1" "$1:r.png" }

(この関数はのみ適用されますzsh。)変換する各ファイルyour_file.pdfに対して、次の操作を行います。

pdf2png your_file.pdf

注1:他のシェルでも同じタイプの関数を作成できますが、少し複雑です。

zsh注2:の場合、引用符はこのオプションが設定されている場合にのみ有効です(デフォルトではありません)。SH_WORD_SPLIT

答え4

また、使用することができます歴史的拡張現在のコマンドラインからの単語の引用:

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 echoecho !#$HISTFILE

関連情報