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
Bash script - útfærsla á curl niðurhali útfrá textaskjali ?
Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal
É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ð.
Þetta sækir fyrst nafnið sem þú vilt vista þetta sem og sækir það svo.
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.
-
Höfundur - Tölvutryllir
- Póstar: 614
- Skráði sig: Fös 05. Mar 2010 01:39
- Reputation: 27
- Staða: Ótengdur
Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal
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
En já það er greinilega eina vitið að nota lykkjur í þetta. Næst á dagskrá kynna sér syntax fyrir lykkur
Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal
É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).
Þ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).
-
Höfundur - Tölvutryllir
- Póstar: 614
- Skráði sig: Fös 05. Mar 2010 01:39
- Reputation: 27
- Staða: Ótengdur
Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal
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.
Er einnig að læra java og https://projecteuler.net/ hefur haldið manni gangandi með skemmtilegum verkefnum.