Jeśli chcę przekonwertować pdf
na png
zdjęcie za pomocą imagemagick, robię coś takiego:
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
Plik pdf często ma bardzo długą nazwę z kilku powodów i chcę, aby png
plik miał tę samą nazwę oprócz rozszerzenia.
Zazwyczaj wybieram this_is_a_very_long_filename_of_my_pdf_file.pdf
dwa razy i za pośrednictwem zakładki zsh-menu
, a następnie zmieni pdf
się png
ręcznie do drugiego argumentu.
Czy jest jednak szybszy sposób to zrobić?
command-line
zsh
imagemagick
student
źródło
źródło
To wywołanie mogrify spowoduje utworzenie nowego pliku png zamiast zastąpienia pliku pdf - mam nadzieję;)
dla * .pdf użyj odpowiedniej liczby znaków, aby wybrać odpowiedni plik lub lepiej uzupełnić tabulatorem, aż uzyskasz pełną nazwę.
W ten sposób możesz utworzyć alias do całej komendy aż do parametru png.
źródło
Jeśli zawsze używasz tego samego polecenia z małymi odmianami (np. Nazwa pliku), możesz napisać funkcję:
(ta funkcja jest specyficzna dla
zsh
) i dla każdego pliku twój_plik.pdf, który chcesz przekonwertować:Uwaga 1: Możesz napisać ten sam rodzaj funkcji dla innych powłok, ale jest to nieco bardziej złożone.
Uwaga 2: Za pomocą
zsh
, cytaty są użyteczne tylko wtedy, gdySH_WORD_SPLIT
ustawiona jest opcja (która nie jest domyślna).źródło
Rozważ użycie zmiennych do przechowywania nazw plików. Uzupełniają się również:
Używam cytatów, ponieważ czasami gryzą spacje.
Istotnymi korzyściami z tego są:
cat listOfFiles | while read f; do ... ; done
struktury pętli.abc<tab>d<tab>x<tab>2<tab>
itp. W ten sposób wystarczy wpisać go tylko raz, a nawet można pobrać najnowszy plik lub największy plik za pomocą skryptu takiego jakf=\
ls -t | głowa -1 '', zamiast najpierw uruchomić wyszukiwanie, szukać nazwy pliku i transkrybować ją jak wyszkoloną małpę.źródło
Możesz także użyć rozszerzenia historii, aby odnieść się do słów w bieżącym wierszu poleceń:
!#
odnosi się do wpisanego do tej pory wiersza poleceń$
wskazuje ostatnie słowo (przed rozwinięciem)r
usuwa rozszerzenie pliku. Oznacza to także koniec tekstu, który jest zastępowany po rozszerzeniu historii..png
jest nowym rozszerzeniem. To nie należy do samego rozszerzenia.Po uruchomieniu tego wiersza zostaje
!#:$:r
zastąpiony nazwą pliku pdf pomniejszoną o rozszerzenie, tworząc w ten sposób polecenie z pytania:Ta linia jest następnie bezpośrednio wykonywana.
Jeśli chcesz sprawdzić polecenie po rozwinięciu historii, przed wykonaniem, użyj
Spowoduje to ponowne załadowanie rozwiniętej linii do bufora edycji zamiast jej wykonania.
Uwaga: W przeciwieństwie do innych rozszerzeń, rozszerzanie historii jest wykonywane przed zapisaniem polecenia w historii. Tak
echo !#
będzie wyglądać jakecho echo
i nie jakecho !#
w twoim$HISTFILE
.źródło
Użycie rozszerzenia nawiasów klamrowych nie może być pobite w tym specjalnym przykładzie. Jednak nieco bardziej elastyczny jest widget zle
copy-prev-shell-word
, który robi to, co sugeruje jego nazwa i jest przydatny, jeśli chcesz podobny argument jak poprzedni, którego nie można systematycznie z niego wyprowadzać.Powiąż widżet np. Z
CTRL+W
:Jeśli jesteś tak leniwy jak ja, użyj tej sekwencji kluczy bind
uzyskać następujące zachowanie:
CTRL+W
wstawia poprzednie słowo powłoki z wiodącym pustym znakiem (stąd oszczędzasz jedno naciśnięcie klawisza!)CTRL+W CTRL+W
wstawia bezpośrednio poprzednie słowo powłokiźródło