현재 파일을 업데이트하는 스크립트를 작성 중입니다. 이 파일에는 여러 버전이 있습니다. 중요한 것은 정적 링크입니다. 이것들은 실제 파일로 리디렉션되어 사용됩니다 . 수신된 헤더를 인쇄하는 플래그가 있음 wget
을 발견했습니다 . wget
위치 목록이 있습니다. 헤더의 마지막 위치는 실제 URL입니다. 나는 그것을 얻어야 해!
내 생각은 wget -S
헤더를 얻는 것입니다(파일 다운로드 및 생성을 방지하려면 다른 플래그가 필요합니다). 그런 다음 파이프를 사용하여 행을 구문 분석하고 포함된 마지막 행을 캡처합니다 location
. 를 사용하면 이것이 가능하다고 생각합니다 grep -l -i "location:" | tail -l
. 그러면 쉽게 파싱할 수 있는 한 줄을 남겨야겠습니다.
따라서 명령은 다음과 같습니다.
# The -??? flag is the one that prevents the file from downloading. (I don't know it)
Location=$(wget -S -??? $URL | grep -l -i "location:" | tail -l)
내 질문은 파일을 다운로드하지 않으려면 어떤 플래그를 사용해야 합니까? wget
아니면 이를 수행하는 다른 방법/명령이 있습니까?
답변1
원하는 것은 HEAD 요청이지만 wget
그렇게 하는 것은 지원되지 않습니다 curl
.
배포판은 curl
저장소에 있을 가능성이 높습니다.
curl -s -I $URL -L | awk '/Location: (.*)/ {print $2}' | tail -n 1
$ URL=http://unix.stackexchange.com/questions/89282/
$ curl -s -I $URL | awk '/Location: (.*)/ {print $2}' | tail -n 1
/questions/89282/how-to-figure-out-where-a-link-gets-redirected
$ _
여기:
-s
curl
진행률 표시줄이 표시되지 않도록 합니다 .-I
curl
HEAD 요청을 발행하십시오 .-L
다음 리디렉션을 만드세요curl
(@brianstone에게 감사드립니다). 추적하려는 리디렉션 헤더에 따라 이를 포함할 수도 있고 포함하지 않을 수도 있습니다.- awk 스크립트는 URI의 로컬 부분인 괄호 안에 일치하는 표현식을 인쇄합니다.