Jak przechwycić wynik Curl do pliku?


421

Mam dokument tekstowy zawierający kilka adresów URL w tym formacie:

URL = "sitehere.com"

To, co chcę zrobić, to uruchomić curl -K myfile.txti pobrać wynik odpowiedzi Curl do pliku.

W jaki sposób mogę to zrobić?


23
curl http://{one,two}.example.com -o "file_#1.txt" curl.haxx.se/docs/manpage.html
— onmyway133

Odpowiedzi:


608
curl -K myconfig.txt -o output.txt 

Zapisuje pierwsze wyjście otrzymane w określonym pliku (zastępuje, jeśli istnieje stary).

curl -K myconfig.txt >> output.txt

Dołącza wszystkie dane wyjściowe do określonego pliku.

Uwaga: Opcja -K jest opcjonalna.


1
Przepraszam, może muszę wyjaśnić - dokument ze wszystkimi moimi adresami URL w formacie about nazywa się myfile.txt, więc zawijam -K myfile.txt i działa on każdy, ale nie otrzymuję danych wyjściowych do żadnego pliku.
— Tony

22
Używam przekierowania dla moich wierszy poleceń:curl url > destfile.x
— wasatchwizard 20.04.16

1
Kiedy to zrobię, dane wyjściowe są nadal wyświetlane w terminalu, a nie w pliku
— Kris,

5
@ kris prawdopodobnie masz znak ampersand w adresie URL. umieść adres URL w podwójnym cudzysłowie, a następnie spróbuj
— jglouie

Działa bez -K. Dzięki niemu otrzymuję komunikat „Nie określono adresu URL”.
— Arya Pourtabatabaie

162

W przypadku pojedynczego pliku możesz użyć -Ozamiast -o filenameostatniego segmentu ścieżki URL jako nazwy pliku. Przykład:

curl http://example.com/folder/big-file.iso -O

zapisze wyniki w nowym pliku o nazwie big-file.iso w bieżącym folderze. W ten sposób działa podobnie do wget, ale pozwala określić inne opcje zwijania , które nie są dostępne podczas używania wget.


1
dla wielu plików użyj --remote-name-all unix.stackexchange.com/a/265819/171025
— qwr

28

Istnieje kilka opcji, aby zawinąć wyjście do pliku

 # saves it to myfile.txt
curl http://www.example.com/data.txt -o myfile.txt

# The #1 will get substituted with the url, so the filename contains the url
curl http://www.example.com/data.txt -o "file_#1.txt" 

# saves to data.txt, the filename extracted from the URL
curl http://www.example.com/data.txt -O 

# saves to filename determined by the Content-Disposition header sent by the server.
curl http://www.example.com/data.txt -O -J 

6

Dla tych, którzy chcą skopiować dane wyjściowe cURL do schowka zamiast wyjścia do pliku, możesz użyć pbcopy, używając potoku |po poleceniu cURL.

Przykład: curl https://www.google.com/robots.txt | pbcopy. Spowoduje to skopiowanie całej zawartości z podanego adresu URL do schowka.


pbcopy jest dostępny tylko na MacOS. Jednak xclipmoże być używany w jego miejsce na Linux patrz na to pytanie . Jednak w większości przypadków curl http://example.com -o example_com.html & cat example_com.html | pbcopy wolałbym, abyś nie musiał się ponownie zwijać, jeśli przypadkowo wyczyścisz swój schowek.
— lacostenycoder,

Należy również zachować ostrożność, jeśli nie masz pewności co do wielkości ładunku. Na przykład prawdopodobnie nie chcesz wkleić tego do edytora tekstu, ale otwarcie go w vimie nie stanowi problemu. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopymoże nie próbuj tego!
— lacostenycoder,

0

Jeśli chcesz zapisać dane wyjściowe na pulpicie, wykonaj poniższe polecenie, używając polecenia post w git bash. To zadziałało dla mnie.

curl https: // localhost: 8080 --request POST --header "Content-Type: application / json" -o "C: \ Desktop \ test.txt"


-1

Trochę późno, ale myślę, że OP szukał czegoś takiego:

curl -K myfile.txt --trace-asci output.txt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.