명령줄에서 데이터 URL을 다운로드하는 방법은 무엇입니까?

명령줄에서 데이터 URL을 다운로드하는 방법은 무엇입니까?

브라우저 콘솔을 통해 이 작업을 수행하는 JavaScript 코드만 찾았습니다.

예를 들어 Google 이미지 검색 결과 그리드의 첫 번째 이미지에서 이미지 주소를 복사하면 데이터 URL을 얻게 됩니다.

시도한 명령과 오류:

$curl 'data:stuff' -o 파일명 
컬: (3) URL이 잘못된/잘못된 형식을 사용하거나 URL이 누락되었습니다.
$curl '데이터:물건'>파일 이름
컬: (3) URL이 잘못된/잘못된 형식을 사용하거나 URL이 누락되었습니다.
$ wget 'data:stuff' -O 파일 이름
데이터(data) 구문 분석 중... 실패: 이름 또는 서비스를 알 수 없습니다.
wget: 호스트 주소 'data'를 확인할 수 없습니다.

명령줄을 통해 데이터 URL을 다운로드하는 방법은 무엇입니까?

답변1

data:구성표는 웹 페이지 컨텍스트에서 로컬이지만 둘 다 원격 데이터로 wget작동합니다 . curl아마도 당신에게 정말로 필요한 것은 base64 -d이런 종류의 데이터를 해독할 수 있는 능력일 것입니다.

마지막으로 데이터 URI 체계는 셸에서 허용하는 것보다 길거나 클 수 있습니다. 다음을 참조하세요.https://stackoverflow.com/a/41755526쉘 기록에 그렇게 많은 임의의 데이터를 보관하고 싶은지 의심됩니다.

답변2

Artem의 답변에 추가합니다.

패키지 관리자를 통해 xclip을 다운로드하고 쉘 스크립트를 사용할 수 있습니다(데이터 URL을 복사해야 함):

#! /usr/bin/bash

data=$(xclip -out -selection clipboard)

ext=${data#*/}
ext=${ext%%;*}
ext=${ext/jpeg/jpg}

if [ $1 ]; then
        filename=$1
else
        filename=file
fi

echo "${data#*,}" | base64 -d > $filename.$ext

인수가 없으면 파일 이름이 파일로 저장되고, 그렇지 않으면 첫 번째 인수가 됩니다.

편집: 향상된 스크립트 - 훌륭한 의견을 주신 Freddy에게 감사드립니다.

관련 정보