To pytanie ma już tutaj odpowiedź:
Pracuję nad wierszem poleceń dość często i często muszę zrobić zrzut ekranu regionu ekranu i zapisać go w katalogu, w którym aktualnie pracuję.
(załóżmy, że zrobiłem już zrzut ekranu i ma go schowek).
W ten sposób muszę to zrobić teraz (po zrobieniu zrzutu ekranu w schowku):
- uruchom podgląd.
- w Preview, ⌘ + N ( Plik, nowy ze schowka ) tworzy nowy plik z zawartością schowka.
- Wróć do wiersza poleceń i skopiuj nazwę katalogu (skopiuj wyniki
pwd
) - przejdź do Podgląd, ⌘ + S dla Zapisać . Rodzaj
/
wyświetla monit o wskazanie katalogu, w którym mogę wkleić nazwę katalogu z kroku 3. - Na koniec podaj rzeczywistą nazwę pliku, this_is_where_I_get_the_error.png w moim przykładzie.
Zamiast tego chciałbym to zrobić:
$savemyscreenshot ./this_is_where_I_get_the_error.png
Jak bym o tym pisał savemyscreenshot
dowództwo? W grzmotnąć ? Jako skrypt Automatora (który musi być wywoływany z Terminalu, w przeciwnym razie pokonuje to nieco cel)?
Wszystkie rzeczy są równe, wolałyby nieco javascript ze skryptem Automatora w AppleScript.
env: MacOS Sierra
źródło
man screencapture
dla trybu ze schowka nie istnieje.Edytuj: Na komentarze ta odpowiedź nie zadziałała. Wygląda na to, że ostatni raz ktoś zapytał tego kogoś innego o napisanie narzędzia: Jaki jest najszybszy sposób zapisania grafiki w schowku na dysku? konkretnie ta odpowiedź
Następuje oryginalna odpowiedź
Powinno być polecenie terminalu „pbpaste”, które możesz przekierować do pliku. Więc jeśli masz dane obrazu w schowku
pbpaste > my_img.png
powinien załatwić sprawę.źródło
pbpaste
jest tylko tekst - robipbpaste
bez przekierowania w terminalu nic nie pokazywało, a ja wykonałem kolejną komendę-Nowość Zapowiedź aby potwierdzić dane schowka. dobra sugestia, gdyby to zadziałało, byłoby najprościej.Zanim przejdę dalej, pozwól mi przeprosić: wiem, że wyraziłeś lekką preferencję dla Javascript w AppleScript. Jednak mój Javascript to spodnie, a ja już wiem, jak to zrobić za pomocą tego drugiego i zdecydowanie zapewnia on jeden sposób na uzyskanie danych obrazu ze schowka bezpośrednio z wiersza poleceń.
Następujący jeden linijka (rozłożona na cztery wiersze tylko w celu ułatwienia czytania) spowoduje pobranie obrazu ze schowka i zapisanie go w pliku o nazwie ustawionej jako bieżąca data i godzina, znajdującym się w bieżącym katalogu roboczym:
Jeśli zdecydujesz się skorzystać z tej metody, sugeruję utworzenie aliasu / funkcji w celu zawinięcia jej w środku, co możesz następnie wywołać, wpisując nazwę funkcji +/- parametr, jeśli chcesz określić nazwę pliku ręcznie (za pomocą małe ulepszenie ostatniej części powyższego polecenia, w którym deklarowana jest nazwa pliku).
EDYTOWAĆ: Poszedłem do przodu i napisałem skrypt powłoki, który robi to za ciebie:
Można go skopiować i wkleić do zwykłego pliku tekstowego o nazwie „SaveMyScreenshot”, wykonanego przez uruchomienie polecenia
chmod +x /path/to/SaveMyScreenshot
w Terminal , a następnie przeniósł się do jednego z katalogów określonych w$PATH
(Używam / usr / local / bin ).Od tego momentu możesz po prostu wpisać
SaveMyScreenshot
jak każde inne polecenie Terminal .P.S. Nie zapomnij skomentować lub usunąć wiersz w skrypcie, który wykonuje zrzut ekranu (
screencapture -c
). Uważam, że masz własną, preferowaną metodę uzyskiwania zrzutu ekranu, a ja wrzucam to tylko do własnych celów testowych i dla kompletności w przypadku, gdyby ktoś inny mógł uznać tę odpowiedź za przydatną w bardziej ogólnym kontekście.źródło
the clipboard as JPEG picture
powinno byćthe clipboard as «class PNGf»
i zmienić.jpg
do.png
. Powinieneś również uruchomić swój kod powłoki ShellCheck i podwójnie cytuj jak pokazano na ShellCheck, aby zapobiec globbingowi i dzieleniu wyrazów.