ubuntuusers.de

Per Terminal im Ordner extrahieren, in dem die Datei sich befindet.

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

El_Nakhla

Avatar von El_Nakhla

Anmeldungsdatum:
12. Dezember 2007

Beiträge: 401

Wohnort: 127.0.0.1

Angeregt aus einem älteren Thema habe ich die den Script 'extract' installiert, der Archive automatisch an ihren Dateiendungen erkennt und extrahiert.

Hier der Script

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
   if [ -f $1 ] ;
      then
         case $1 in
               *.tar.bz2)	tar xjf $1		;;
               *.tar.gz)	tar xzf $1		;;
               *.bz2)		bunzip2 $1		;;
               *.rar)		rar x $1		;;
               *.gz)		gunzip $1		;;
               *.tar)		tar xf $1		;;
               *.tbz2)		tar xjf $1		;;
               *.tgz)		tar xzf $1		;;
               *.zip)		unzip $1		;;
               *.Z)		uncompress $1		;;

               *)		echo "'$1' cannot be extracted via extract()" ;;
         esac
      else
         echo "'$1' is not a valid file"
   fi

Wenn ich diesen jetzt im Terminal aufrufe (der Einfachheit halber mit einem alias 'extract')...

user@computer:~$ extract Pfad/zum/Archiv.tar.gz

...extrahiert er es zwar perfekt und alles, aber eben in dem Verzeichnis in dem sich das Terminal gerade befindet. Das ist irgendwie lästig, die Ordner immer wieder zurück zu verschieben.

Jetzt meine Frage: Ist es möglich, dem Script eine Zeile dazuzufügen, damit er die Archive in dem Verzeichnis entpackt, in dem er sie auch findet?

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Ja, dazu musst du das Programm dirname auf das übergebene Argument anwenden. Dessen Ausgabe ist dann das Verzeichnis. Mehr verrät dirname(1).

El_Nakhla

(Themenstarter)
Avatar von El_Nakhla

Anmeldungsdatum:
12. Dezember 2007

Beiträge: 401

Wohnort: 127.0.0.1

Das heißt, ich muss jetzt zu jedem Packprogramm erst rausfinden, wie man einen Zielordner übergibt?

Zum Beispiel

unzip $1 -d dirname $1

und so weiter?

Klingt nach Arbeit, aber das ist's dann wert, danke...

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Jo, bei unzip wäre das beispielsweise unzip -d $(dirname $1) $1.

El_Nakhla

(Themenstarter)
Avatar von El_Nakhla

Anmeldungsdatum:
12. Dezember 2007

Beiträge: 401

Wohnort: 127.0.0.1

Danke, dann setze ich mich dran, das alles rauszufinden!

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo.
El Nakhla schrieb:

Das heißt, ich muss jetzt zu jedem Packprogramm erst rausfinden, wie man einen Zielordner übergibt?

Alternativ könntest du auch:
1) den kompletten Pfad zum Archiv ermitteln (readlink -f),
2) in das gewünschte Zielverzeichnis wechslen (cd) und
3) dort dann auspacken.

Gruß
Norman

El_Nakhla

(Themenstarter)
Avatar von El_Nakhla

Anmeldungsdatum:
12. Dezember 2007

Beiträge: 401

Wohnort: 127.0.0.1

Oder so! Jetzt habe ich es aber schon gemacht, trotzdem Danke! 😉

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

NoKurth schrieb:

Hallo.
El Nakhla schrieb:

Das heißt, ich muss jetzt zu jedem Packprogramm erst rausfinden, wie man einen Zielordner übergibt?

Alternativ könntest du auch:
1) den kompletten Pfad zum Archiv ermitteln (readlink -f),
2) in das gewünschte Zielverzeichnis wechslen (cd) und

Das wäre aber kein guter Stil. Programmcode sollte immer nur die nötigsten Seiteneffekte erzeugen, der Wechsel des Arbeitsverzeichnisses dagegen beeinflusst den gesamten Prozess, ist aber in diesem Fall völlig unnötig.

Antworten |