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.