Untar, ungz, gz, tar - як ви пам’ятаєте всі корисні варіанти?


76

Я впевнений, що я не єдиний із такою проблемою: кожен раз, коли мені потрібно розпакувати файл у * nix, я не можу запам’ятати всі комутатори, і в кінцевому підсумку погуглити його, що дивно, враховуючи, як часто мені потрібно зробити це.

Чи є у вас хороший чіт-лист для стиснення? А як щодо мнемонічного для всіх тих неприємних перемикачів у дьогті?

Я перетворюю цю статтю у вікі, щоб ми могли створити тут хороший чіт-лист.

О, і про довірені сторінки: є одна річ, для якої вони не корисні, це для того, щоб з'ясувати, як розпакувати файл.


1
користуйтеся сторінками з посібниками, тоді вам не потрібно створювати вікі, а пам'ятати потрібно лише команду man :-) man (1)
Florenz Kley

9
Файл eXtract Zee таким, яким я його пам’ятаю
канадський Люк

Створення Zee Vocking File може бути доречним для створення .tar.gz
CousinCocaine

Відповіді:


65

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

Щодо дьогтю: просто подивіться на клавіатуру "qwerty". Поруч є літери "zxcvf". Вам потрібні або "tar czvf file.tar.gz файли", або "tar xzvf file.tar.gz".


Реквізити для того, щоб насправді відповісти на питання :)

Тепер, це COOL "qwerty" рада! :)

фрикінг дивовижно!
мертвий програміст

2
Ще одна порада полягає в тому, що zопція (або jопція для .bz2файлів) не потрібна при витягуванні з сучасних версій tar. Він автоматично розпаковує файл.
Нейт

10
Я використовував дьоготь близько десяти мільярдів разів і ніколи не помічав, що всі найпоширеніші параметри знаходяться поруч один з одним на клавіатурі. головний убір
Тайлер Макенрі

41

Резюме варіанту смоли

Ви можете редагувати це, щоб додати ще езотеричні перемикачі, але ось основні принципи:

  • 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 / *


23

Існує невеликий сценарій Perl, який називається "unp".

unp filename.tar.gz

... і це витягує все. Працює з будь-яким стислим файлом до тих пір, поки у вас є правильні бінарні файли. І ви просто забуваєте про синтаксис або будь-яке з цього лайна. Перевірте сховища дистрибутива Linux. Він повинен бути там (принаймні, на Arch, Debian та Ubuntu).


Навіть після використання дьогтю досить тривалий час мені все одно потрібно гуляти за дурні прапори. ООН - це шлях.
Яда

8

Дійсно при частому використанні я розрізняю вилучення (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
 }

5

Просто введіть tar --helpі там є ваш чіт-лист.


12
серйозно, ви коли-небудь намагалися прочитати сторінку цієї людини?
мертвий програміст

Це може бути трохи нечитабельним і довгим, але я думаю, що він працює добре, просто шукаючи назву опції. Ви також можете похвалитись за потрібний варіант, тобто 'tar --help | екстракт грепа '.
Джеремі Рутен

1
Чудово. І тоді вам доведеться переглядати аркуш-сторінку, яка (серед речей, яку ви шукаєте) повідомляє вам багато архаїчних команд стримера та параметрів, яким ніхто, крім розробника, не потребує.

2
Я дійсно не бачу, що в цьому так важко. Щоб витягнути архів, просто знайдіть варіант вилучення та додайте -x до вашої команди. Якщо ви хочете його багатослівно, знайдіть цей варіант і додайте av, щоб отримати -xv. Потім продовжуйте, поки не отримаєте точну команду, яку хочете. У ньому навіть є приклади команд для загальних операцій.
Джеремі Рутен

1
Джеремі, справжня проблема полягає в тому, що ти не завжди можеш знати належну лексику. Таким чином, легко заплутатися і знайти подібні варіанти, і вони не працюють. Тоді ви повинні розмістити (деякі) з них у належному порядку. Це нетривіально для тих, хто мігрує далеко від Windows. Тим більше, якщо вони не знали сценаріїв у Windows.
Назадус

3

Якщо у вас є проблеми з запам'ятовуванням параметрів смоли, спробуйте скористатися трубами:

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

Замініть tar xvна, tar tvщоб просто переглянути вміст тарболу.

Особисто я використовую такі мнемоніки:

  • t, x або c для "табуляції", "xtracting" або "створення" відповідно.
  • v для переліку всіх файлів.
  • z, j або нічого для tar.gz, tar.bz2 або звичайного .tar відповідно.
  • f для надання імені файлу, порівняно з типовим для використання stdin / stdout або стрічковим пристроєм.

Хоча "j" і "bzip2", здається, не мають нічого спільного між собою, мені легко запам'ятати цей виняток.

Також мені здається смішним, що Гуглінг замінив "чоловічий дьоготь".


Вам слід звикнути завжди надавати fможливість: розповсюдження tar за замовчуванням до f -, попереднього за замовчуванням є f /dev/rmt0чи подібним лише останнім часом . Зрештою, дьоготь - стрічковий АРХИВЕР.
ефеміент

1
що таблично?
Клавдіу


2

Три найчастіше використовувані операції :

--create -c

Створіть новий архів дьогтю.

--list -t

Перерахуйте вміст архіву.

--extract -x

Витягнути один або кілька членів з архіву.


П'ять вдосконалених операцій з деградацією :

--append -r

Додайте нові записи до архіву, який вже існує.

--update -u

Додайте новіші копії членів архіву до кінця архіву, якщо вони існують.

--concatenate --catenate -A

Додайте один або кілька наявних архівів до кінця іншого архіву.

--delete

Видалити елементи з архіву (не працює на стрічках).

--compare --diff -d

Порівняйте членів архіву зі своїми аналогами у файловій системі.



2

Я завжди зачитував команди в думці, під час набору тексту

стиснути багатослівний zip-файл

tar cvzf FILE

витягнути докладний поштовий файл FILE

tar xvzf FILE

2

Я роблю наступне

Щоб створити дьоготь:

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 - )

1

90% часу, який я просто використовую

tar -xvf file.*  

x: витяг
v: бути багатослівним (необов’язково)
f: вхідний файл (tar, gz, bzip2 тощо)

Легко, так? :)
Використовуйте Fileroller або Ark, якщо він не в консолі.


До сих пір я використовував файлероллер, але наразі мені не пощастило, тому що в моїй версії використовується 1,1 Гб пам'яті.
Ендрю Грімм

1

Я вже багато років використовую сценарій Perl, який називається aunpackчастиною проекту atool . Отже, ви просто запускаєте: aunpack foo.{zip/tar.gz/tar.bz2}і це робиться правильно на основі розширення файлу.

Інша перевага aunpackполягає в тому, що він не забруднює поточний каталог великою кількістю файлів. Скажімо, у них є 20 файлів foo.zip, які не знаходяться у підкаталозі. Замість того, щоб записувати ці файли в поточному каталозі, aunpackстворіть fooпідкаталог і помістіть туди всі файли.


1

Все , що вам потрібно tar x(витримка зі стандартного вводу), tar c(дьоготь на стандартний висновок), gzip -c(GZIP зі стандартного вводу на стандартний висновок, -1щоб -9для рівнів стиснення, то ж саме стосується bzip2) і gunzip -c(Gunzip зі стандартного вводу на стандартний висновок) - все інше труби.

Щоб націлити та gzip:

$ tar c * | gzip -c > out.tar.gz

Щоб un-gzip та untar

$ gunzip -c < out.tar.gz | tar x

Якщо ви хочете солодкі бари прогресу, використовуйте pv , схожий на cat, але показує смужки ходу:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%

0

Я думаю, що легко думати про те, що ти хочеш, а не лише деякі листи.

Для ілюстрації я використаю приклад того, як витягти file.tar.gz:

Оскільки це файл tar, ви повинні використовувати програму tar. Тоді це варіанти:

  1. x так як ви хочете e х тракту.
  2. z, якщо файл закінчується на .gz. (gz - після tar у назві файлу) Цей параметр gunzip архів.
  3. f для файлу з ім'ям архіву.

Це показано на прикладі нижче:

tar xzf file.tar.gz

0

Я пам'ятаю, що це завжди "tar XXvf", де є два X

  • x для e X тракту або c для реакції C і,
  • або z = gzip, j = bzip2 (gzip частіше, тому зазвичай z, з будь-якої причини j = bzip2 просто застряг у моїй голові).

Іноді ви стикаєтесь зі стислими, але не відміченими файлами, де ви додаєте UN до будь-якого типу стиснення. наприклад, g un zip або b un zip2.

Якщо що, я забуваю 2, а іноді набираю "bzip".


0

ви також можете створити псевдонім. просто додайте ці два рядки у свій ~/.bash_aliasesфайл:

alias untar="tar xvf"
alias dotar="tar cvf"

потім можна використовувати untar foo.tar.gzдля витягування і dotar foo.barстискання. ви можете використовувати інші псевдоніми, які вам легко запам’ятати.


0

C реагуйте Z ip на F ilename

tar -czf myfile.tar.gz myfile.sql

e X урочище Z ip з іменем F

tar -xzf myfile.tar.gz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.