Síða 1 af 1

Bash script - útfærsla á curl niðurhali útfrá textaskjali ?

Sent: Mán 17. Nóv 2014 00:34
af snaeji
Sælir strákar.

Ég hef verið að reyna læra eitthvað á bash/unix og ákvað að reyna búa til script til þess að hlaða niður eftir slóðum í textaskjali.

Síðan sem ég valdi heitir Piazza og með hjálp Link clipper sem er Chrome addon þá fæ ég skjal sem inniheldur linka sem redirecta á file

Gefum skjalinu nafnið piazza.txt og það lítur svona út:

https://piazza.com/class_profile/get_re ... 16m5i2a1e1
https://piazza.com/class_profile/get_re ... 16m5i2a1e1
....
....

Til þess að hlaða niður file:
curl -L "SLÓÐ" >> "nafnafile.pdf"


Til þess að sækja nafnið á file:
curl -v "SLÓÐ" | cut -d'?' -f1 | cut -d'/' -f7

Nú þarf ég að búa til eitthvað script sem nær í slóðina í textaskjali, keyrir sækja nafn skipunina.
Keyrir síðan hlaða niður skipunina með nafnið á filenum sem output. Og endur tekur ferlið síðan fyrir næstu línu.

Það næsta sem ég hef komist er að fá forritið til þess að ná í öll gögnin og skila þeim í einn file. En þar sem þetta er pdf þá virkar ekki >> til þess að búa bara til eitt stórt pdf skjal. Myndi annars virka fínt ef þetta væri .txt en það væri allveg ásættanleg niðurstaða. En þetta gerði ég allavegana þessari hérna skipun:

cat piazza.txt | awk '{print "curl -L " "\"" $1 "\""}' | bash >> gogn.pdf

Eftir keyrslu þá endar gogn.pdf sem seinasta skjal sem hlóðst niður.

Ég er algjör nýgræðingur í þessu svo ég gæti verið í einhverri algjörri vitleysu og ekki viss um að awk sé endilega rétta skipunin í þessa vinnslu.

En endilega vísið mér rétta átt með þetta!


/EDIT -

Get hlaðið niður öllum gögnunum með þessari skipun og gefið þeim heiti frá 1-(fjöldi):
cat piazza.txt | awk '{print "curl -L " "\"" $1 "\" " ">" NR }' | bash

En er enþá ekki viss hvernig ég næ að skipta út NR og setja í staðinn curl -v "SLÓÐ" | cut -d'?' -f1 | cut -d'/' -f7

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Sent: Mán 17. Nóv 2014 02:14
af dori
Ég veit ekki, hvað með að lúppa þessu txt skjali og vinna svo með hverja línu fyrir sig. Þá geturðu gert margt með sömu breytu. Annars er pottþétt hægt að gera þetta með awk en ég kann of lítið á það.

Kóði: Velja allt

for path in $(cat piazza.txt)
do
    filename=$(curl -I $path | grep Location | awk '{ print $2 }' | cut -d'?' -f1 | cut -d'/' -f7)
    curl -L $path > $filename
done


Þetta sækir fyrst nafnið sem þú vilt vista þetta sem og sækir það svo.

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Sent: Mán 17. Nóv 2014 03:25
af snaeji
Ahhh þetta er sniðug útfærsla og þrælvirkar hjá þér takk!

En já það er greinilega eina vitið að nota lykkjur í þetta. Næst á dagskrá kynna sér syntax fyrir lykkur :D

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Sent: Mán 17. Nóv 2014 09:51
af dori
Ég er nýhættur að þurfa að leita að því hvernig það er. Þarf ennþá að prófa og mistakast (50/50) ef ég er að gera þetta í einni línu (for i in {1..10}; do echo $i; done). Man aldrei hvoru megin við "do" semikomman á að vera.

Það er samt mjög gaman að nota bash, hægt að gera alls konar með því þó svo að það sé náttúrulega miklu auðveldara að fara inní perl eða python ef maður þarf að gera eitthvað flókið (sérstaklega til lengdar til að hafa auðveldara viðhald).

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Sent: Mán 17. Nóv 2014 23:14
af snaeji
Allveg sammála. Það sem kemur manni síðan mest á óvart eru endalausir möguleikarnir og viðbætur með homebrew og fleiru.
Er einnig að læra java og https://projecteuler.net/ hefur haldið manni gangandi með skemmtilegum verkefnum.