Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » NWN 02:26
 » biEski 01:59
 » AdiQ 01:57
 » resmedia 01:43
 » Martens 01:38
 » Star Ride 01:35
 » piszczyk 01:20
 » Elektron 01:12
 » R_I_P_ 00:35
 » cVas 00:31
 » Never 00:24
 » metacom 00:12
 » rooter666 23:56
 » maddog 23:54
 » dugi 23:33
 » Fl@sh 23:31
 » GLI 23:24
 » m&m 23:20
 » rainy 23:20
 » ziemoone 23:03

 Dzisiaj przeczytano
 3179 postów,
 wczoraj 31212

 Szybkie ładowanie
 jest:
włączone.

 
ccc
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 ?

  1. możesz , myszon 26/04/21 12:59
    ale chyba łatwiej będzie

    git clone https://github.com/primer/github-vscode-theme.git

    1. 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.

      1. 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

        1. 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

  2. Możesz , ligand17 26/04/21 13:10
    na przykład wyciągnąć sobie nazwę ostatnio zmienianego pliku: FILE=$(ls -tr |tail -1)

    1. możesz , Holyboy 26/04/21 13:58
      nadać nazwę
      FILE=temp-name.zip
      curl example.com/some.zip -o $FILE
      unzip $FILE

      Strength is irrelevant.
      Resistance is futile.
      We wish to improve ourselves.

      1. 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.

        1. 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.

    2. 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 :)

  3. tu poczytaj , kicior 26/04/21 19:26
    https://linuxhint.com/...e_without_extension_bash/

    1. 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.

    2. 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

  4. wget nie zmienia nazwy pliku zasysanego z githuba , kicior 26/04/21 20:15
    123

    1. 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.

      1. Sorry , myszon 26/04/21 23:17
        Nie trafiłem

      2. obsługuje mi J , hokr 27/04/21 08:19
        bez J ściąga plik master.zip
        z J github-vscode-theme-master

    2. 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.

      1. tylko jak uzyjesz grep to chyba dluzej potrwa komenda.. , rulezDC 27/04/21 11:05
        bo masz zachłanna regułe

        koniec koniec koniec

        1. akurat , hokr 27/04/21 11:56
          tutaj średnie wyniki są bardzo podobne

  5. 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.zip

    koniec koniec koniec

    1. 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ę.

      1. 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?

        1. dobra mam , hokr 26/04/21 22:18
          trzeba dodać -v ;)
          jeżeli robiłeś to inaczej to daj znać

          1. 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

            1. 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 ;)

              1. nie wiem, czy dobrze opisałem , hokr 27/04/21 11:15
                tu jest lepiej

                https://privatebin.net/...4kYnDpGYP94dFj6PCUpgi7U5

              2. najpierw sprawdzilem z -v jakie sa headery , rulezDC 27/04/21 15:12
                potem juz nie potezebne

                koniec koniec koniec

                1. 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