Untar, ungz, gz, tar - как вы запомнили все полезные опции?

75509
deadprogrammer

Я почти уверен, что я не единственный, кто сталкивается со следующей проблемой: каждый раз, когда мне нужно распаковать файл в * nix, я не могу вспомнить все параметры и заканчиваю поиском в Google, что удивительно, учитывая, как часто мне нужно сделай это.

У вас есть хорошая шпаргалка? Или как насчет мнемоники для всех этих неприятных переключателей в tar?

Я делаю эту статью вики, чтобы мы могли создать хороший шпаргалку здесь.

О, и о страницах руководства: есть одна вещь, для которой они не полезны, это для того, чтобы выяснить, как распаковать файл.

71
используйте страницы справочника, тогда вам не нужно создавать вики, нужно только запомнить команду man :-) man (1) Florenz Kley 13 лет назад 1
eXtract Zee File - это то, как я его помню Canadian Luke 11 лет назад 6
Создать Zee Vocking File может быть подходящим для создания .tar.gz CousinCocaine 11 лет назад 0

16 ответов на вопрос

63
ADEpt

Или как насчет использования оболочки с расширенными возможностями завершения (например, zsh или свежей версией bash), которая дополнит ваши параметры всесторонней помощью? :))

Что касается tar: просто посмотрите на клавиатуру "qwerty". Есть буквы "zxcvf" рядом друг с другом. Вам нужны либо «tar czvf file.tar.gz файлы», либо «tar xzvf file.tar.gz».

Реквизит для фактического ответа на вопрос :) 16 лет назад 0
Теперь это крутой совет "qwerty"! :) 16 лет назад 0
офигенно круто! deadprogrammer 16 лет назад 0
Еще один совет: опция `z` (или опция` j` для файлов `.bz2`) не требуется при извлечении с использованием современных версий tar. Он автоматически распаковывает файл. Nate 15 лет назад 1
Я использовал tar около десяти миллиардов раз и никогда не замечал, что все наиболее часто используемые опции находятся рядом друг с другом на клавиатуре. * Headsmack * Tyler McHenry 15 лет назад 9
я только что запомнил легкую для запоминания песенку - "ex vee vee zee eff"! но да, я никогда не мог вспомнить, как сделать архив Claudiu 15 лет назад 0
Одним из советов является то, что последние версии tar автоматически определяют формат при извлечении, поэтому вы можете просто использовать -x для извлечения. Maxim 7 лет назад 0
39
Adam Pierce

Обзор опций Tar

Вы можете редактировать это, чтобы добавить больше эзотерических переключателей, но вот основы:

  • x - извлечь файлы
  • c - создать архив
  • t - список файлов
  • v - подробный (список файлов по мере их обработки)
  • j - использовать сжатие bz2
  • z - использовать сжатие gz
  • f - читать или записывать файлы на диск

Примеры

Распакуйте файл tar.gz: tar zxf tarball.tar.gz

Распакуйте файл tar.bz2: tar jxf tarball.tar.bz2

Создайте файл tar.gz: tar zcvf tarvall.tar.gz mydir / *

22

Есть небольшой скрипт на Perl под названием «unp».

unp filename.tar.gz 

... и это все извлекает. Работает с любым сжатым файлом, если у вас есть нужные двоичные файлы. И ты просто забываешь о синтаксисе или любом другом дерьме. Проверьте репозитории вашего дистрибутива Linux. Это должно быть там (по крайней мере, в Arch, Debian и Ubuntu).

Круто, это ново для меня. Спасибо за чаевые! 16 лет назад 0
Даже после долгого использования tar мне все равно нужно гуглить из-за глупых флагов. Unp это путь. Yada 9 лет назад 0
6
Jeremy Ruten

Просто напечатайте tar --helpи вот ваш чит-лист.

серьезно, ты когда-нибудь пробовал читать эту справочную страницу? deadprogrammer 16 лет назад 11
Это может быть немного нечитаемо и долго, но я думаю, что это хорошо работает только для поиска названия опции. Вы также можете использовать опцию, которую вы ищете, например, 'tar --help | grep extract '. Jeremy Ruten 16 лет назад 0
действительно? как бы вы вывели из этого tar -xvf? deadprogrammer 16 лет назад 0
Отлично. А затем вам нужно пройтись по man-странице, которая (среди того, что вы ищете) расскажет вам тонны архаичных команд и опций стримера, которых нет ни у кого, кроме потребностей разработчика. 16 лет назад 1
Ну, похоже, это работает для меня (с tar, а также с другими программами linux ocmmand-line). Я просто использую опцию --help или man и сканирую нужную мне информацию, и это всегда хорошо для меня работает. Если есть слишком много бесполезной информации, я просто пропускаю ее. Jeremy Ruten 16 лет назад 0
Джереми, ты либо аутист-ученый, либо полностью полон дерьма. Выделение человеком дегтя хуже, чем бесполезного, но и его использование бесполезно. deadprogrammer 16 лет назад 0
Я действительно не понимаю, что в этом такого сложного. Чтобы извлечь архив, просто найдите опцию extract и добавьте -x к вашей команде. Если вы хотите, чтобы он был подробным, найдите эту опцию и добавьте av, чтобы получить -xv. Затем продолжайте, пока не получите точную команду, которую вы хотите. У него даже есть примеры команд для общих операций. Jeremy Ruten 16 лет назад 2
Джереми, настоящая проблема в том, что ты не всегда знаешь правильный словарный запас. Таким образом, легко запутаться, найти похожие варианты и заставить их не работать. Затем вы должны разместить (некоторые) из них в правильном порядке. Это нетривиально для тех, кто мигрирует из Windows. Тем более, если они не знали скриптов в Windows. Nazadus 15 лет назад 1
6
Ali Mezgani

Действительно при частом использовании я делаю различие между извлечением (x) данных и сжатием (c) данных:

Извлекать:

tar xzf data.tgz 

Сжать:

tar czf data.tgz 

Кроме того, вы можете добавить две функции в ваш .bashrc:

function extract () {  if ($# -ne 1); then echo "Usage: $0  `<compressed archive>"` exit 1 fi tar xzf $1 }  function compress () { if ($# -ne 2); then echo "Usage: $0 `<compressed archive> <files|directories>"` exit 1 fi tar czf $1 $2 } 

Есть еще одна приятная функция извлечения, она определяет расширение вашего сжатого файла и делает всю работу за вас:

extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file!" fi } 
3

Если у вас возникли проблемы с запоминанием параметров tar, попробуйте использовать pipe:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Замените tar xvна, tar tvчтобы просто просмотреть содержимое тарбола.

Лично я использую следующую мнемонику:

  • t, x или c для «табулирования», «извлечения» или «создания» соответственно.
  • v для перечисления всех файлов.
  • z, j или ничего для tar.gz, tar.bz2 или простого .tar соответственно.
  • f для указания имени файла по сравнению с использованием по умолчанию stdin / stdout или ленточного устройства.

Хотя «j» и «bzip2», похоже, не имеют ничего общего друг с другом, мне легко запомнить это исключение.

Кроме того, мне смешно, что Googling заменил «man tar».

Вы должны иметь привычку всегда предоставлять опцию `f`: только недавно дистрибутивы tar по умолчанию установились на` f -`, историческое значение по умолчанию - `f / dev / rmt0` или подобное. В конце концов, tar - это Tape ARchiver. ephemient 16 лет назад 0
что такое табулирование? Claudiu 15 лет назад 1
3

Человек твой друг.

man tar

2
Jauder Ho

Я делаю следующее

Чтобы создать tar:

tar czvf foo.tar.gz <files to be included> 

Распаковать:

tar zxvf foo.tar.gz 

Это должны быть основные переключатели, о которых вам нужно беспокоиться:

c - create z - compress/uncompress x - extracte v - verbose f - file 

Пока вы пытаетесь перемещать файлы по каталогам, вы можете делать некоторые более интересные вещи, такие как tar и untar inline:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - ) 
2
feeela

Я всегда зачитываю команды в уме, печатая

сжать подробный zip-файл

tar cvzf FILE 

извлечь подробный почтовый файл ФАЙЛ

tar xvzf FILE 
1
ramayac

90% времени я просто использую

tar -xvf file.* 

x: extract
v: быть подробным (необязательно)
f: входной файл (tar, gz, bzip2 и т. д.)

Полегче, а? :)
Используйте Fileroller или Ark, если вы не в консоли.

До сих пор я использовал fileroller, но в настоящее время мне не повезло, потому что у меня есть версия, использующая 1,1 ГБ памяти. Andrew Grimm 15 лет назад 0