Tworzę skrypt powłoki, aby spakować niektóre pliki. Zamykam taki katalog:
zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/
Problem polega na tym, że wynikowe archiwum out.zip zawiera całą ścieżkę do pliku. Oznacza to, że po rozpakowaniu będzie zawierała całą ścieżkę „/ Users / me / development / anotherthing /”. Czy można uniknąć tych głębokich ścieżek podczas umieszczania katalogu w archiwum?
Gdy uruchamiam zip z katalogu docelowego, nie mam tego problemu.
zip -r out.zip ./folder/
W tym przypadku nie dostaję wszystkich śmieci. Jednak dany skrypt zostanie wywołany z dowolnego miejsca.
FWIW, używam basha w systemie Mac OS X 10.6.
$ pushd /some/path ; do-something ; popd
... lub nawet z podpowłokami:$ ( cd /some/path ; do-something )
&&
zamiast;
jest dobrym pomysłem, aby inne polecenie nie zostało uruchomione, jeśli błądcd
(literówka lub inny problem):(cd /some/path && do-something)
zip -j
?Tak. Użyj
-j
opcji zzip
.-j
jest „śmieciowa ścieżka”. Według strony man na zip :Użycie
-j
oznacza następujące polecenie:Stworzy archiwum, które wygląda jak:
źródło