[Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

toro1984
Użytkownik
Posty: 24
Rejestracja: 2007-10-13, 11:03
Lokalizacja: Częstochowa

[Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: toro1984 »

Witam
Mam do napisania skrypt pakujący i rozpakuwujący pliki, obsługujący wiele formatów plików. Z pierwszą częścią sobie poradziłem, z drugą mam problem. Użytkownik podaje nazwę pliku do rozpakowania i nie wiem jak z niego wyłuskać rozszerzenie (np. tar, tar.gz) żeby wiedzieć jakim poleceniem go rozpakować. Proszę o radę :)
Ostatnio zmieniony 2008-05-04, 14:10 przez toro1984, łącznie zmieniany 1 raz.
largo3
Moderator
Posty: 1302
Rejestracja: 2006-06-11, 11:08

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: largo3 »

Zobacz jak to zrobił Zielony w SlackBuildach z SCXD:
http://scxd.info/pub/slackbuilds/5X.SlackBuild
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
-- Dennis Ritchie
Linux Registered User #419452
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: mina86 »

Eh ten Zielony... Mógłby lepiej się postarać pisząc skrypty:

Kod: Zaznacz cały

case $nazwa_pliku in
*.tar.bz2) tar jxf ... ;;
*.tar.gz) tar zxf ... ;;
*.gz) gzip -d ... ;;
*.bz2) bzip2 -d ...;
*.zip) unzip ... ;;
*.rar) unrar -x ... ;;
*.ace) unace ... ;;
*.cab) cabextract ...;
*.arj) unarj ... ;;
...
*) echo unknown archive format
esac
Ostatnio zmieniony 2008-05-04, 08:36 przez mina86, łącznie zmieniany 1 raz.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: Zielony »

mina86 pisze:Eh ten Zielony... Mógłby lepiej się postarać pisząc skrypty:
Akurat ten fragment pisałem dosyć dawno. Wziąłem sobie to do serca, poprawiłem i w najbliższym czasie opublikuję finalną wersję (5X nie jest jeszcze oficjalnie wydane).
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]
toro1984
Użytkownik
Posty: 24
Rejestracja: 2007-10-13, 11:03
Lokalizacja: Częstochowa

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: toro1984 »

Ok, jak na razie działa wszystko :) Programik jednak jak dla mnie działa troszkę bezsensownie. Chodzi o to, że po wybraniu jakiejś opcji np. pakowanie pakuje plik i kończy działanie. Zastanawiam się jak zrobić i czy w ogóle da się zrobić menu z prawdziwego zdarzenia, tzn. żeby program po wybraniu np. pakowania wracał z powrotem do menu wyboru opcji pakowania / wypakowania, żeby można było kilka plików rozpakować / spakować podczas jednego uruchomienia programu. Wydaje mi się, że trzeba by użyć pętli, tylko nie jestem pewien w którym miejscu i jak...Jak na razie mój skrypcik wygląda tak:

Kod: Zaznacz cały

#!/bin/bash 
 
dialog --title "Zadanie 13" \ 
--backtitle "Przykłady okien dialogowych" \ 
--menu "Wybierz opcję: " 8 40 2 \ 
1 "Pakowanie plików" \ 
2 "Rozpakowanie plików" 2> wynik.txt 
 
wynik=`cat wynik.txt` 
case $wynik in 
  "1") dialog --title "Zadanie 13" \ 
       --backtitle "Przykłady okien dialogowych" \ 
       --inputbox "Podaj plik do kompresji:" 8 40 2> nazwa.txt 
       nazwa=`cat nazwa.txt` 
       dialog --title "Zadanie 13" \ 
       --backtitle "Przykłady okien dialogowych" \ 
       --menu "Wybierz metodę kompresji:" 20 40 6 \ 
       1 "tar" \ 
       2 "tar.gz" \ 
       3 "tgz" \ 
       4 "zip" \ 
       5 "bz2" \ 
       6 "gz" 2> metoda.txt 
       metoda=`cat metoda.txt` 
 
       case $metoda in  
         "1") tar -cvf $nazwa.tar $nazwa 
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
              --msgbox "Spakowano plik $nazwa do pliku $nazwa.tar" 8 40 ;;  
         "2") tar -cvzf $nazwa.tar.gz $nazwa 
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
              --msgbox "Spakowano plik $nazwa do pliku $nazwa.tar.gz" 8 40 ;; 
         "3") tar -cvzf $nazwa.tgz $nazwa 
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
	      --msgbox "Spakowano plik $nazwa do pliku $nazwa.tgz" 8 40 ;; 
	 "4") zip $nazwa.zip $nazwa  
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
	      --msgbox "Spakowano plik $nazwa do pliku $nazwa.zip" 8 40 ;; 
	 "5") bzip2 $nazwa 
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
	      --msgbox "Spakowano plik $nazwa do pliku $nazwa.bz2" 8 40 ;; 
	 "6") gzip $nazwa 
	      dialog --title "Zadanie 13" \ 
	      --backtitle "Przykłady okien dialogowych" \ 
	      --msgbox "Spakowano plik $nazwa do pliku $nazwa.gz" 8 40 ;; 
       esac ;;      
  "2") dialog --title "Zadanie 13" \ 
       --backtitle "Przykłady okien dialogowych" \ 
       --inputbox "Podaj nazwę pliku do rozpakowania: " 8 40 2> rozpakuj.txt 
       rozpakuj=`cat rozpakuj.txt` 
       case $rozpakuj in 
         *.tar) tar -xvf $rozpakuj 
                dialog --title "Zadanie 13" \ 
                --backtitle "Przykłady okien dialogowych" \ 
                --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;;  
         *.tar.gz) tar -xvzf $rozpakuj 
	           dialog --title "Zadanie 13" \ 
	           --backtitle "Przykłady okien dialogowych" \ 
	           --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;; 
	 *.tgz) tar -xvzf $rozpakuj 
           	dialog --title "Zadanie 13" \ 
	        --backtitle "Przykłady okien dialogowych" \ 
	        --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;; 
	 *.zip) unzip $rozpakuj 
                dialog --title "Zadanie 13" \ 
                --backtitle "Przykłady okien dialogowych" \ 
                --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;; 
         *.bz2) bunzip2 $rozpakuj 
	        dialog --title "Zadanie 13" \ 
	        --backtitle "Przykłady okien dialogowych" \ 
	        --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;; 
	 *.gz) gunzip $rozpakuj 
	       dialog --title "Zadanie 13" \ 
	       --backtitle "Przykłady okien dialogowych" \ 
	       --msgbox "Plik $rozpakuj rozpakowany." 8 40 ;; 
      esac ;; 
esac 
rm -f wynik.txt 
rm -f nazwa.txt 
rm -f metoda.txt 
rm -f rozpakuj.txt
Macie jakieś sugestie? :)
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: mina86 »

toro1984, po co za każdym razem powtarzasz wywołanie dialog? Lepiej to dać poza case'a. Poza tym winieneś obsłużyć też sytuację, gdy nie rozpoznajesz rozszerzenia.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: difrost »

toro1984, pamiętaj o dodawaniu [Rozw.] do tematu!
[url=http://bdtk.sourceforge.net][img]http://pin.if.uz.zgora.pl/~beton/bdt-ready.png[/img][/url] #337142
--------------------------------------------
"I had a letter in the post today. It said 'Gas Bill'. It sounds a tempting offer." -- Alan Cox
"Users have been trained that when a computer bluescreens and losing all of their data, it's either (a) just the way things are, or (b) it's microsoft's fault." -- Theodore Tso
toro1984
Użytkownik
Posty: 24
Rejestracja: 2007-10-13, 11:03
Lokalizacja: Częstochowa

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: toro1984 »

difrost, czemu miałbym dać [Rozw.] skoro temat nie jest zakończony ? :)

[ Komentarz dodany przez: Zielony: 2008-05-04, 19:34 ]
Jest rozwiązany. Przeczytaj regulamin.
Sajmon
Moderator
Posty: 1215
Rejestracja: 2004-05-22, 23:19
Lokalizacja: Graz
Kontakt:

Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików

Post autor: Sajmon »

Przecież difrost nie napisał żebyś dodał, tylko żebyś pamiętał o dodaniu. :mrgreen:
ODPOWIEDZ