Login
Newsletter

Thema: Entpacken von typischen Windows-Archiven in der Shell

20 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von Michael am Fr, 11. April 2003 um 09:27 #
...wenns auch einfach geht?!

apt-get install unp
unp

'unp' liegt übrigens in contrib, da es von unrar abhängt, welches in non-free abgelegt ist.
Die, die das nicht verstehen, betrifft das wohl eh nicht. Der Rest sollte wissen, was damit gemeint ist.

Gruss, Michael

[
| Versenden | Drucken ]
  • 0
    Von TheJester am Fr, 11. April 2003 um 09:29 #
    toll, zwei Dumme ein Gedanke, und das auch noch zur
    selben Zeit :) Nur warst du mitm Tippen schneller *g*

    Grus
    TheJester

    [
    | Versenden | Drucken ]
    0
    Von Barross am Fr, 11. April 2003 um 13:34 #
    Hallo,
    es stimmt, ich kenne das "Original"-unp auch, allerdings ist es in perl geschrieben (ich mag kein perl) und hat zumindest unter debian nervige abhängigkeiten zu Entpackern, die ich überhaupt nicht brauche (z.B. cabextract und unzoo), die ich dann aber mitinstallieren müsste.
    Deswegen ratzbatz ein eigenes Skript gebastelt. Vielleicht weckt dieses einfache Bespiel ja das Interesse am scripten. Ich kann nur jedem fortgeschrittenen Linuxer empfehlen, mal in den advanced bash scripting guide (auf www.linuxdoc.org zu finden) reinzuschmökern.
    [
    | Versenden | Drucken ]
    • 0
      Von Lord am Fr, 11. April 2003 um 22:55 #
      Tja aber Perl ist nunmal geiler und kann man für mehr gebrauchen, habe diese Woche ein Script geschrieben, das früher als bash script gelaufen ist, nur in Perl waren es jetzt in etwa die Hälfte der Zeilen(zwar immer noch 1600 Zeilen Code) mit der gleichen Funktionalität und das Programm braucht nur noch in etwa die Hälfte der Zeit um seine Aufgabe zu erfüllen:-)
      [
      | Versenden | Drucken ]
0
Von TheJester am Fr, 11. April 2003 um 09:28 #
Hallo zusammen,

aehm, ich will ja nicht staenkern, aber ein Tool namens
unp gibt es schon, und spannenderweise macht es auch
genau das selbe *g* Ist auch ein shell-Script, zu
finden unter /usr/bin/unp

apt-get install unp

Gruss
TheJester

[
| Versenden | Drucken ]
  • 0
    Von Egal am Fr, 11. April 2003 um 09:43 #
    Es gibt zig Programme die im Prinzip das gleiche machen (Mail-Reader, etc.). Wenn da jeder gesagt haette: Brauchen wir nicht, gibts schon einen, waere die Softwarewelt doch ziemlich eintoenig oder? ;-)
    [
    | Versenden | Drucken ]
0
Von NaBaend am Fr, 11. April 2003 um 09:58 #
Hallo

was bedeutet denn die Abfrage: while [ x"$1" != x ]; do ?

Bis denn...

[
| Versenden | Drucken ]
  • 0
    Von hjb am Fr, 11. April 2003 um 10:13 #
    Das ist ein Shell-Programmiertrick. Er soll verhindern, daß es einen Syntaxfehler gibt, wenn $1 leer ist. Es wäre aber lesbarer, zu schreiben: while [ "$1" != "" ]. Oder, in diesem speziellen Fall: while [ -n "$1" ] (-n steht für nonzero, -z für zero, was sich auf die Länge des Strings bezieht).
    [
    | Versenden | Drucken ]
    • 0
      Von Chris Arndt am Fr, 11. April 2003 um 11:19 #
      Ja, aber...

      wie ich auch erst letztens gelernt habe:

      Wenn $1 mit "-" (Strich) anfängt kann das vom "[" (test) Befehl als Option interpretiert werden und unerwartete Effekte haben. Deswegen das hinzugefügte "x".

      Bei Shell-Programmierung ist halt alles ein wenig anders ;-)

      [
      | Versenden | Drucken ]
    0
    Von Barross am Fr, 11. April 2003 um 13:44 #
    die while schleife wird solange durchlaufen, wie "$1" eine zeichenkette enthält. Wenn "$1" leer ist, dann steht in der abfrage x != x, was nicht mehr wahr ist und die schleife beendet.


    "$1" ist dabei ein bezeichner für den ersten parameter nach dem kommando (in unserem fall ein archivname). mit dem befehl "shift" in der case-anweisung wird dann "$2" nach "$1" kopiert und so geht die schleife solange weiter, bis keine archivnamen mehr übergeben worden sind. Du kannst die whileschleife weglassen, wenn du immer nur ein einziges archiv auf einmal mit dem befehl entpacken willst.

    [
    | Versenden | Drucken ]
0
Von hjb am Fr, 11. April 2003 um 10:08 #
Wem diese Lösung, unp, atool und wie sie alle heißen, zu primitiv sind :-), kann auch lz/uz nehmen: http://grumbeer.dyndns.org/download/lz.html. In die neueste Version habe ich Unterstützung von ACE eingebaut, leider hatte ich noch keine Zeit, diese online zu stellen.
[
| Versenden | Drucken ]
0
Von ratte am Fr, 11. April 2003 um 11:33 #
Tolles Script, aber das unkrontrollierte Entpacken von Archiven ist eine gefaehrliche Sache!
Da das Script frueher oder spaeter von dem User fuer andere Archive, als die hier fokussierten, benutzt, ist z.B. bei *.tgz Archiven eine grosse Gefahr, sich sein System zu versauen, wenn das Archiv nach "/" entpackt wird, und nicht im aktuellen Arbeitsverzeichnis. Oder wenn man gewoehnt ist, dass Archive _immer_ ein eigenes Unterverzeichnis erzeugen, und man damit eines entpackt, was es _nicht_ tut...
Daher wuerde ich eine Archivvorschau einbauen, die abfragt, ob man moechte, was das Archiv Entpacken tun wuerde!
ratte
[
| Versenden | Drucken ]
  • 0
    Von Tester am Fr, 11. April 2003 um 11:40 #
    und wo ist Dein Beispiel?

    Teilst Du uns noch deine ergänzenden Zeilen mit!!

    [
    | Versenden | Drucken ]
    0
    Von toor am Fr, 11. April 2003 um 16:04 #
    Spannend wäre, wenn man testen könnte, ob das Archiv ein Unterverzeichnis anlegen würde.

    [ `tar tfz ${1} | head -n 1 | grep '/'` ] && create_dir=1 || create_dir=0

    [ ${create_dir} = 1 ] && DIR=`tar tfz ${1} | head -n 1 | cut -d "/" -f1`

    Das Problem ist, man müßte überprüfen, ob $DIR wirklich vor _jeder_ Datei im Archiv steht. Da weiß ich nicht, wie ich das machen könnte.

    for X in `tar tvfz ${1}`; do
    [ `echo ${X} | cut -d "/" -f1` = ${DIR} ] || exit 1
    done

    Ginge das ? Halt entsprechend anders für andere Packer.

    Sollte create_dir Null sein, so käme eine Frage ob ein gleichnahmiges Unterverzeichnis erstellt werden soll.
    Das wäre am elegantesten ?!

    [
    | Versenden | Drucken ]
0
Von wolle am Fr, 11. April 2003 um 12:14 #
Ein selbstentpackende RAR-Archiv im MS-DOS Format kann man gut auch mit unrar entpacken. Ich weiß allerdings nicht, ob das mit anderen Formaten auch geht.

Wolle

[
| Versenden | Drucken ]
  • 0
    Von Barross am Fr, 11. April 2003 um 13:50 #
    hi,


    klar, das skript braucht du nicht wirklich, du kannst auch alle archive mit ihren jeweiligen kommandozeilentools entpacken. aber dann musst du dir immer merken, welche schalter die brauchen (ok, bei unrar ist es einfach ;-) ) und wie sie alle heissen. das alles kann man dann bei einem skript vergessen, wenn es einmal nachgeschaut hat.


    exe-archive kannst du mit wine versuchen zu entpacken. (einfach mit wine archiv.exe ausführen) Es klappt aber leider nicht immer.

    [
    | Versenden | Drucken ]
    0
    Von ralf am Fr, 11. April 2003 um 13:52 #
    Selbsentpackende zip-Archive kann man auch mit unzip entpacken.
    Dass es auch mit RAR-Archiven geht, wusste ich nicht. Danke fuer den Tipp.
    [
    | Versenden | Drucken ]
0
Von Matthias Leiterer am Sa, 12. April 2003 um 09:40 #
Danke fürs das Shellskript. Ich kann es sehr gut gebrauchen.

Gruß
Matthias

[
| Versenden | Drucken ]
  • 0
    Von ingo laux am So, 31. August 2003 um 19:07 #
    wie kann man das Script denn ergänzen, damit es auch angegebene Pade (Ziel) nutzt ?
    bsp.: unp dateiname /Zielordner
    Mit dieser Funktion währe das dann echt ne gute Alternative zum "originalem" unp.
    [
    | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten