Estou criando um script de shell para empacotar alguns arquivos. Estou compactando um diretório como este:
zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/
O problema é que o arquivo out.zip resultante possui todo o caminho do arquivo. Ou seja, quando descompactado, terá todo o caminho "/ Users / me / development / anotherthing /" nele. É possível evitar esses caminhos profundos ao colocar um diretório em um arquivo morto?
Quando executo o zip de dentro do diretório de destino, não tenho esse problema.
zip -r out.zip ./folder/
Nesse caso, não recebo todo o lixo. No entanto, o script em questão será chamado de qualquer lugar.
FWIW, estou usando o bash no Mac OS X 10.6.
$ pushd /some/path ; do-something ; popd
... ou mesmo com subshells:$ ( cd /some/path ; do-something )
&&
em vez de;
é uma boa idéia para que o outro comando não é executado se ocd
falhou (erro de digitação ou outro problema):(cd /some/path && do-something)
zip -j
?Sim. Use a
-j
opção comzip
.-j
é "junk the path". De acordo com a página do manual no zip :Usar
-j
significa o seguinte comando:Criará um arquivo que se parece com:
fonte
Existe
pushd
epopd
e$OLDPWD
. Supondo que o$PWD
is/Users/me/development
do:Agora o
$PWD
está de volta a/Users/me/development
fonte