TwojePC.pl © 2001 - 2025
|
 |
A R C H I W A L N A W I A D O M O Ś Ć |
 |
|
|
Skryptuje ktoś w BASHu? Mały problem , hokr 26/04/21 12:31 Wczoraj zacząłem się uczyć, więc pewnie błahostka.
Pobieram archiwum zip taką komendą
curl -JLO https://github.com/...rchive/refs/heads/master.zip
na dysku zostaje to zapisane jako github-vscode-theme-master.zip
teraz chcę to wypakować komendą unzip, ale nie chcę robić tego tak unzip *.zip, tylko unzip i konkretna nazwa. Wiem, że mogę użyć -o i zapisać do bla.zip i później unzip bla.zip, ale nie chcę tak robić. W skrócie, czy mogę jakoś zapisać tę nazwę github-vscode-theme-master do zmiennej "file" i później strzelić unzip ${file}.zip ?- możesz , myszon 26/04/21 12:59
ale chyba łatwiej będzie
git clone https://github.com/primer/github-vscode-theme.git- To z githubem , hokr 26/04/21 13:07
to jest tylko przykład ;) Chodzi mi o to, że w linku jest master.zip, a po pobraniu github-vscode-theme-master.zip i pytam jak można zapisać tę nazwę do zmiennej, tak żeby skrypt mógł to wypakować. Jest folder, w którym jest np. 100 plików zip i nie chcę używać unzip *.zip, bo chcę wypakować tylko ten konkretny plik. Rozwiązaniem naokoło jest -o i moja nazwa lub później np. file=$(find *.zip -newermt '-10 seconds'), ale zastanawiam się czy może curl może to jakoś zrobić bardziej elegancko.
- takie rzeczy , myszon 26/04/21 13:21
chyba najładniej jest załatwić rurą. Zamiast zapisywać plik na dysku przesyłasz go bezpośrednio do czegoś co to odpakuje.
https://stackoverflow.com/...from-wget-qo#23108309- unzip z rurą , hokr 26/04/21 14:08
nie zadziała, ale poczytałem, to co podesłałeś i powinno zadziałać z czym innym, dzięki
- Możesz , ligand17 26/04/21 13:10
na przykład wyciągnąć sobie nazwę ostatnio zmienianego pliku: FILE=$(ls -tr |tail -1)- możesz , Holyboy 26/04/21 13:58
nadać nazwę
FILE=temp-name.zip
curl example.com/some.zip -o $FILE
unzip $FILEStrength is irrelevant.
Resistance is futile.
We wish to improve ourselves. - Napsiałem wyżej , hokr 26/04/21 14:14
że nie chcę stosować -o nazwa.zip (potrzebuję oryginalnej nazwy), jeżeli curl nie ma jakiejś opcji odpowiedzialnej za to, to skorzystam z pipe + coś innego niż unzip albo zrobię tak jak napisał ligand17.- a racja , Holyboy 26/04/21 14:39
nie doczytałem, gdzie ja się dzisiaj tak spieszę ;)Strength is irrelevant.
Resistance is futile.
We wish to improve ourselves.
- no to jest , hokr 26/04/21 14:10
rozwiązanie "naokoło", ale ładniejsze, niż to, które ja wyżej napisałem, dzięki :)
- tu poczytaj , kicior 26/04/21 19:26
https://linuxhint.com/...e_without_extension_bash/- próbowałem tym , hokr 26/04/21 19:38
na samym początku i to nie zadziała, bo operuje na tym linku, gdzie jest master.zip. Tutaj potrzeba czegoś, co zwraca nazwę ściągniętego pliku, myślałem, że może curl potrafi coś takiego, ale chyba nie. - moze to nie jest piekne i wspaniale rozwiązanie , rulezDC 26/04/21 20:19
Ale jak popatrzysz na komende curl i co zwraca w nagłówkach, to mozesz wyciągnąć nazwę pliku jaki będzie ściągnięty a nastepnie zapisac sobei go do zmiennej, np z twojego przykładu:
# ZMIENNA=$(curl -sI -k -L https://github.com/...rchive/refs/heads/master.zip | awk -F'=' '/filename/ {print $2}')
# echo ${ZMIENNA}
github-vscode-theme-master.zip
koniec koniec koniec
- wget nie zmienia nazwy pliku zasysanego z githuba , kicior 26/04/21 20:15
123- Którą wersję curl-a masz? , myszon 26/04/21 23:16
Starsze nie miały -J podobno. Zobacz man czy to już obsługuje.- Sorry , myszon 26/04/21 23:17
Nie trafiłem - obsługuje mi J , hokr 27/04/21 08:19
bez J ściąga plik master.zip
z J github-vscode-theme-master
- czyli wget , hokr 27/04/21 10:49
ściąga jako master.zip? curl też tak potrafi, ale mi chodzi właśnie o to, żeby ściągnęło jako github-vscode-theme-master.zip (co też curl robi), ale przy okazji, żeby zapisało nazwę pliku do zmiennej lub od razu wypakowało.
Póki co, rozwiązanie rulezDC mnie satysfakcjonuje, ale wymieniłem | awk -F'=' '/filename/ {print $2}' na | grep -oP '(?<==).*\.zip'. Wieczorem jeszcze sprawdzę rurowanie z czymś innym niż unzip, jak proponuje myszon.- tylko jak uzyjesz grep to chyba dluzej potrwa komenda.. , rulezDC 27/04/21 11:05
bo masz zachłanna regułekoniec koniec koniec - akurat , hokr 27/04/21 11:56
tutaj średnie wyniki są bardzo podobne
- jjeszcze raz , rulezDC 26/04/21 20:20
Ale jak popatrzysz na komende curl i co zwraca w nagłówkach, to mozesz wyciągnąć nazwę pliku jaki będzie ściągnięty a nastepnie zapisac sobei go do zmiennej, np z twojego przykładu:
# ZMIENNA=$(curl -sI -k -L https://github.com/...rchive/refs/heads/master.zip | awk -F'=' '/filename/ {print $2}')
# echo ${ZMIENNA}
github-vscode-theme-master.zipkoniec koniec koniec - ooo , hokr 26/04/21 21:22
działa elegancko :) dzięki! Musiałem poczytać o awk, bo nie znałem tego, ale mam jeszcze jedno pytanie.
ZMIENNA=$(curl -sI -k -L https://github.com/...rchive/refs/heads/master.zip)
Dlaczego w tym, co zwraca mi to polecenie wyżej, nie mam nigdzie github-vscode-theme-master.zip? Bo jak rozumiem, awk bierze ten zwrócony tekst i wyciąga mi nazwę.
- jeżeli zrobię tak , hokr 26/04/21 22:09
ZMIENNA=$(curl -sI -k -L https://github.com/...rchive/refs/heads/master.zip | awk '{print}')
no to zwraca mi tekst i jest tam filename=github-vscode-theme-master.zip, ale dlaczego bez awk zwraca mi inny blok tekstu?- dobra mam , hokr 26/04/21 22:18
trzeba dodać -v ;)
jeżeli robiłeś to inaczej to daj znać- hmm , rulezDC 27/04/21 10:47
nie dawałem -v
tylko
ZMIENNA=$(curl -sI -k -L https://github.com/...rchive/refs/heads/master.zip | awk -F'=' '/filename/ {print $2}')
ale fakt -v pokaze ci headery :)koniec koniec koniec - ale skąd , hokr 27/04/21 10:52
wiedziałeś, co ma awk robić jak nie miałeś pokazane, że w bloku teksu masz filename=github-vscode-theme-master.zip? U mnie bez -v nie pokazuje tego, tylko jakiś całkiem inny blok tekstu. No chyba że to u mnie tylko tak ;)- nie wiem, czy dobrze opisałem , hokr 27/04/21 11:15
tu jest lepiej
https://privatebin.net/...4kYnDpGYP94dFj6PCUpgi7U5 - najpierw sprawdzilem z -v jakie sa headery , rulezDC 27/04/21 15:12
potem juz nie potezebnekoniec koniec koniec - aaa ok , hokr 27/04/21 15:46
myślałem, że w ogóle tego nie używałaś i się głowię skąd wiedziałeś co i jak :P dzięki :)
|
|
|
|
 |
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL |
 |
|
|
|