2017-02-10 2 views
0

Ich möchte eine .tgz-Datei entpacken und in das freigegebene Verzeichnis springen. Ich weiß, dass der Befehl im Terminal ist:Wie kann man das Entpackverzeichnis im Shell-Skript überspringen?

tar -xvzf xxx.tgz 

und dann auf die direcotory springen:

cd xxx 

Aber wie kann ich das in Shell-Skript? Ich weiß nicht, wie ich das Verzeichnis bekomme, in dem der 'tar'-Befehl veröffentlicht wird. Kann mir jemand helfen?

+0

Alles, was Sie in ein Terminal eingeben können, funktioniert in einem Shell-Skript, also ist das Skript nichts anderes als diese beiden Befehle in eine Datei zu setzen und auszuführen – arco444

+0

Aber im Terminal bekomme ich den Verzeichnisnamen manual und 'cd' dazu , im Skript weiß ich nicht, wie man den Verzeichnisnamen bekommt. – geekzhu

+0

Der Verzeichnisname nach dem Entpacken von tar, gz ist gleich, z. 'xxx.tar.gz' wird in' xxx' entpackt, sofern nicht anders angegeben. – vish4071

Antwort

0

Wie here erwähnt:

test1=$(tar -axvf something-1.3.5a.tar.gz) 
cd $(echo $test1 | cut -f1 -d" ") 
0

Die folgende xxx.tgz und cd in je nachdem, was Verzeichnis Archiv entfernen würde es extrahiert in:

tar -xvzf xxx.tgz && cd $(tar -tf ${_} | head -1 | cut -d/-f 1) 

Dies berücksichtigt dies, dass das Verzeichnis, das das Archiv extrahiert wird ist möglicherweise nicht derselbe Name wie das Archiv. Die Methode extrahiert das Archiv und prüft dann den Inhalt, um festzustellen, wohin es tatsächlich extrahiert wird. Es gibt ein gewisses Maß an Fragilität, das beachtet werden muss, und möglicherweise müssen Anpassungen für ungewöhnliche Dateinamen vorgenommen werden.

Hier sind ein paar andere (etwas mehr Generika) Beispiele:

mkdir -p xxx && tar -xvzf ${_}.tgz -C ${_%%.tgz} 

das Verzeichnis erstellen Wollen xxx und xxx.tgz in xxx auch extrahieren, wenn es in der Regel zu xyz extrahiert.

tar -xvzf xxx.tgz && cd ${_%%.tgz} 

Unarchives xxx.tgz verwendet dann bash Parameter Substitution cd in das xxx Verzeichnis.

+0

Dies setzt voraus, dass das Präfix des Tar-Dateinamens dasselbe ist wie das Verzeichnis, in dem alle Dateien extrahiert werden. Das ist eine sehr verbreitete Konvention, aber nicht garantiert. Allerdings wird es für eine große Anzahl von Fällen funktionieren, so dass es für das, was der Anforderer benötigt, ausreichend sein kann. – sheltond

Verwandte Themen