如何在终端中提取档案到文件系统?


15

我安装了木星,并使用了辐射主题,因此该图标看起来不正确,因此我找到了如何更改它的答案。如何更改木星的图标?。它提到需要超级用户访问权限,我认为在终端中使用sudo比启用root或我需要做的任何事情都容易,但是我在这里找不到任何内容来解释如何将tar.bz文件提取到终端中的目录。


1
sudo tar -xzvf example.tar.bz,您真的无法通过谷歌搜索找到它吗?:P
adempewolff 2012年

好吧,我是linux的新手,我不确定这是否正确。那是行不通的。我需要将一些图标提取到pixmap文件夹中
Jeff H

-1:有关此基本问题的信息应通过网络搜索解决。
Scott Severance,2012年

3
实际上,这里需要考虑一些正确的做法。您必须确保存档中的文件到达正确的位置,并具有正确的所有权。(tar将负责权限,但不一定要拥有所有权。)对于新手来说,任务的哪些部分需要哪些部分sudo以及哪些不需要哪些部分不是显而易见的。对于我们的网站,这似乎是一个有价值的问题。
伊利亚·卡根

很公平。实话实说,我无法在Ask Ubuntu本身上找到重复的问题,因此我没有被问到任何问题...我个人将尝试至少通过网络搜索或阅读man tar提出候选命令,然后再提出问题,但我确实认为这对网站可能是一个有价值的问题,我想我知道应该由谁来写答案……(轻推@EliahKagan,嘿嘿)
adempewolff 2012年

Answers:


25

方法1:提取文件,然后将其复制为根

在终端中导航到文件所在的位置。例如,如果它位于Downloads主文件夹内的文件夹中,请运行以下命令:

cd ~/Downloads

~在这种情况下,该字符是主文件夹全名的缩写。(例如,如果您的用户名是jeff,则是的缩写/home/jeff。)

现在使用提取档案tar。由于该文件是.gz归档文件,因此您将使用该z标志来告知tar

tar xvzf Jupiter_Radiance_theme_icons.tar.gz

x意味着提取。v表示在提取文件时列出文件(如果需要,可以将其保留)。z意味着gunzip它(因为.tar存档本身是用gzip- .gz扩展名指定的)压缩的。f意味着在文件系统中将其解压缩(并且对它的需求是tar,用于创建和解压缩磁带档案的较早的常见用法的产物)。

您刚刚提取的归档文件包含三个文件(如果将v标志保留在命令中,则会看到它们的文件名)。他们的名字是bolt1.pngbolt2.pngbolt4.png。因此,现在将这些文件复制到/usr/share/pixmaps。这是需要root特权的部分,因此应在此使用sudo

sudo cp --no-preserve=ownership bolt1.png bolt2.png bolt4.png /usr/share/pixmaps

您已将它们提取为自己的(非root)用户,这使您对其拥有所有权。但是root应该拥有其中的文件/usr/share/pixmaps,这就是为什么要使用--no-preserve=ownership参数的原因cp。由于您要复制的文件root位于所拥有的目录中root,因此您制作的副本将被root适当地拥有。

方法2:将存档复制并提取为根

您可能会发现,像做所有事情一样简单root。然后root将最初拥有文件,因为root将提取它们。最简单的方法是将存档放入目标文件夹(如果尚未存在)。

假设文件位于Downloads

cd ~/Downloads
sudo cp Jupiter_Radiance_theme_icons.tar.gz /usr/share/pixmaps

请注意,您可以改用而mv不是cp移动它而不是复制它(前提是源文件夹和目标文件夹位于同一分区上)。

现在转到目标文件夹并提取存档:

cd /usr/share/pixmaps
sudo tar xzvf Jupiter_Radiance_theme_icons.tar.gz

您可能应该删除归档文件,因为在目录中包含多余的文件不是很好/usr/share/pixmaps

sudo rm Jupiter_Radiance_theme_icons.tar.gz

方法3:仅提取存档作为根

如果愿意,可以将存档保存在下载的任何位置,并将其解压缩为/usr/share/pixmapsas root。(感谢adempewolff建议我介绍此方法。)

cd /usr/share/pixmaps
sudo tar xzvf ~/Downloads/Jupiter_Radiance_theme_icons.tar.gz

之所以tar可行,是因为默认情况下会将存档解压缩到您所在的任何文件夹,而不是解压缩到存档所在的文件夹(如果它们不同)。

其他方法

您可以轻松地对方法1进行更改,在该方法中,您可以使用存档管理器以图形方式提取文件,然后使用将该文件复制到终端中sudo。但是,您也可以root通过将Nautilus(文件浏览器)运行为来实现两者root。如果执行此操作,则可以使用Nautilus执行任何文件管理任务,并且 Nautilus 启动的任何程序也将以方式运行root。您必须对此小心谨慎,因为您可能会因犯错误而损坏系统(就像用来运行错误的命令一样sudo),并且因为忘记此Nautilus窗口root不是正常运行而特别糟糕。

要将图形程序运行为root,请勿sudo直接使用。而是使用gksu。因此,要将Nautilus作为运行root,可以按Alt+ F2并运行:

gksu nautilus

如果这样做,请确保在完成操作后关闭Nautilus窗口,并仅将其用于您需要执行的任务root(例如更改的内容/usr/share/pixmaps)。

您甚至可以进行方法2方法3的变体,在其中您不复制任何内容root,而是root通过将Archive Manager运行为来以图形方式提取存档root。为此,请按Alt+ F2并运行:

gksu file-roller

但是,大多数用户发现通过从Nautilus中启动存档管理器可以更轻松地提取文件,因为这样一来,它便会打开,知道您要使用哪个存档。(您可以将存档的名称作为file-roller命令的一部分进行传递……但是,此时,您开始失去了GUI优于命令行的易用性。)

建议资源

要了解有关使用提取文件的更多信息tar,请参见man tar

如果存档已存在.tar.bz2,则应使用j代替z。如果是的话.xz,您可以J改用。有关所有其他信息,请参见该手册页。

要了解更多关于在Ubuntu执行管理任务,请参阅社区文档sudoroot,也man sudoman gksu(或man kdesudo如果你使用Kubuntu的)。

值得一读的有关文件压缩社区文档,以了解有关归档和文件压缩的​​更多信息。(从技术上讲,这是两个相关且重叠但不同的事物。例如:.tar文件是归档文件。.gz文件被压缩。)

在大多数情况下,您tar可能不会使用它来创建和还原备份,但这样做可能会很有用,此外,了解它的工作原理有助于您更好地了解tar可以做什么和不能做什么以及如何使用它。如果您对此感兴趣,请参阅有关使用备份系统tar的社区文档。


1
+1,但您不能消除这cp一步吗?像cd /usr/share/pixmaps然后sudo tar xzvf ~/Downloads/Jupiter_Radiance_theme_icons.tar.gz
adempewolff 2012年

我将尝试基于GUI的GUI,谢谢。更新:该方法效果很好,谢谢您
Jeff H

@adempewolff是的,这将起作用。我认为我提出的方式在概念上是相似的...但是我也将继续添加这种方式,因为它节省了大量的键入操作,可能是首选。
伊利亚·卡根

我同意这是一个西红柿tom- AW -toes区别。我只是懒于键入多个命令!
adempewolff 2012年

1
@ B1KMusic对,您通常不需要z。从理论上讲,可能会提取损坏的档案(也许只是部分提取),但是只有在您告诉您tar尝试提取哪种档案时才可以提取,但实际上我认为您是对的:即使损坏的档案也可能不会从中受益。至于性能和v标志:我解释了v标志的作用,人们不必使用它。多文件归档(这种情况下性能会下降)也会产生快速滚动,无趣的输出。每当有人真正想要使用它时v,减速的可能性就很小。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.