[Rozw.] Skryp w bashu - odczyt rozszerzenia plików
Moderatorzy: Moderatorzy, Administratorzy
[Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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ę
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.
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
Zobacz jak to zrobił Zielony w SlackBuildach z SCXD:
http://scxd.info/pub/slackbuilds/5X.SlackBuild
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
-- Dennis Ritchie
Linux Registered User #419452
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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).mina86 pisze:Eh ten Zielony... Mógłby lepiej się postarać pisząc skrypty:
Ż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]
[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]
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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:
Macie jakieś sugestie?
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
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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
--------------------------------------------
"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
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
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.
[ Komentarz dodany przez: Zielony: 2008-05-04, 19:34 ]
Jest rozwiązany. Przeczytaj regulamin.
Re: [Rozw.] Skryp w bashu - odczyt rozszerzenia plików
Przecież difrost nie napisał żebyś dodał, tylko żebyś pamiętał o dodaniu.