2011-01-14 102 views
1

对于一些熟练的tar,我肯定以下所有内容都可以在一行中实现?焦油在一条线上?

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 ../../ 
+0

不编程... – leppie 2011-01-14 04:52:18

+0

切线,我想。这看起来像是自动测试设置的一部分。 – 2011-01-14 04:53:57

回答

1

如果你只是要删除副本,实际上不需要复制tar文件。这将适用于你没有复制,删除和改变目录:

mkdir site_media/media; tar -xvf fixtures/media.tar -C site_media/media 
0

喜剧回答:

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 ../../ 
0

稍微更严重的:我不知道的一种方式来创建基本目录为单tar的一部分,但它可以一定程度上减少:

mkdir -p site_media/media 
tar -xvf fixtures/media.tar -C site_media/media 

这避免了首先避免复制的删除。提取模式下的C选项表示“在打开存档但未提取任何内容之前更改为此目录”。

正如@史蒂夫o幽默地指出的那样,您可以将行与&&相结合,这也具有布尔短路的效果:如果命令失败则停止。