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.
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
Aber im Terminal bekomme ich den Verzeichnisnamen manual und 'cd' dazu , im Skript weiß ich nicht, wie man den Verzeichnisnamen bekommt. – geekzhu
Der Verzeichnisname nach dem Entpacken von tar, gz ist gleich, z. 'xxx.tar.gz' wird in' xxx' entpackt, sofern nicht anders angegeben. – vish4071