Warum all die Abstimmungen? Es gibt mehr Optionen als nur -C (und möglicherweise bietet seine Version dies nicht).
Alfe
2
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Weitere Informationen zu den Themen finden Sie hier in der Hilfe. Vielleicht ist Super User oder Unix & Linux Stack Exchange ein besserer Ort, um zu fragen.
JWW
@jww Während ich Ihren Standpunkt sehe, haben wir auch Tags mit Namen tarund gzin diesem Forum. Das Extrahieren eines Tarballs in ein bestimmtes Verzeichnis kann durchaus Teil eines Shell-Skripts und damit Teil der Programmierung sein. Ich denke, diese Art von Frage kann dann in beiden Foren gestellt werden.
Alfe
Antworten:
319
Sie können die Option verwenden -C(oder --directorywenn Sie lange Optionen bevorzugen), um das Zielverzeichnis Ihrer Wahl anzugeben, falls Sie die Gnu-Version von verwenden tar. Das Verzeichnis sollte existieren:
mkdir foo
tar -xzf bar.tar.gz -C foo
Wenn Sie nicht tarin der Lage sind, in ein bestimmtes Verzeichnis zu extrahieren, können cdSie vor dem Aufruf einfach in Ihr Zielverzeichnis wechseln tar. dann müssen Sie natürlich einen vollständigen Pfad zu Ihrem Archiv angeben. Sie können dies in einer Scoping-Subshell tun, um eine Beeinflussung des umgebenden Skripts zu vermeiden:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
Wenn weder ein absoluter Pfad noch ein relativer Pfad zur Archivdatei geeignet ist, können Sie das Archiv auch außerhalb der Scoping-Subshell benennen:
Mit der for- Schleife können Sie mehrere .tar.gz-Dateien in einem anderen Ordner entpacken. Der folgende Code verwendet / destination / folder / path als Argument für das Skript und entpackt alle .tar.gz-Dateien, die am aktuellen Speicherort in / destination / folder / path vorhanden sind.
if [ $# -ne 1 ];
then
echo "invalid argument/s"
echo "Usage: ./script-file-name.sh /target/directory"
exit 0
fi
for file in *.tar.gz
do
tar -zxvf "$file" --directory $1
done
tar
undgz
in diesem Forum. Das Extrahieren eines Tarballs in ein bestimmtes Verzeichnis kann durchaus Teil eines Shell-Skripts und damit Teil der Programmierung sein. Ich denke, diese Art von Frage kann dann in beiden Foren gestellt werden.Antworten:
Sie können die Option verwenden
-C
(oder--directory
wenn Sie lange Optionen bevorzugen), um das Zielverzeichnis Ihrer Wahl anzugeben, falls Sie die Gnu-Version von verwendentar
. Das Verzeichnis sollte existieren:Wenn Sie nicht
tar
in der Lage sind, in ein bestimmtes Verzeichnis zu extrahieren, könnencd
Sie vor dem Aufruf einfach in Ihr Zielverzeichnis wechselntar
. dann müssen Sie natürlich einen vollständigen Pfad zu Ihrem Archiv angeben. Sie können dies in einer Scoping-Subshell tun, um eine Beeinflussung des umgebenden Skripts zu vermeiden:Wenn weder ein absoluter Pfad noch ein relativer Pfad zur Archivdatei geeignet ist, können Sie das Archiv auch außerhalb der Scoping-Subshell benennen:
quelle
oder mit GNU Teer
quelle
gzip
falls der Teer komprimierte Archive nicht versteht.Extrakte myArchive.tar zu / destinationDirectory
Befehle:
quelle
Mit der for- Schleife können Sie mehrere .tar.gz-Dateien in einem anderen Ordner entpacken. Der folgende Code verwendet / destination / folder / path als Argument für das Skript und entpackt alle .tar.gz-Dateien, die am aktuellen Speicherort in / destination / folder / path vorhanden sind.
quelle