For some tar
adept, I'm sure all of the following could be achieved on one line?
mkdir si开发者_JS百科te_media/media
cp fixtures/media.tar site_media/media/media.tar
cd site_media/media/
tar -xvf media.tar
rm media.tar
cd ../../
There is really no need to copy the tar file if you are only going to delete the copy anyway. This will work for you without the copying, deleting, and changing directories:
mkdir site_media/media; tar -xvf fixtures/media.tar -C site_media/media
Comedy answer:
mkdir site_media/media && cp fixtures/media.tar site_media/media/media.tar &&
cd site_media/media/ && tar -xvf media.tar && rm media.tar && cd ../../
Slightly more serious: I don't know of a way to create the base directory as part of a single tar
, but it can be reduced somewhat:
mkdir -p site_media/media
tar -xvf fixtures/media.tar -C site_media/media
This avoids the delete by avoiding the copy in the first place. The C
option in extract mode means 'change to this directory after opening the archive but before extracting anything'.
As @Steve-o humorously points out, you can combine lines with &&
, which also has the effect of Boolean short-circuiting: stopping if a command fails.
精彩评论