Что-f параметр делает в команде tar

Мое взятие на конвенциях имени файла Unix/Linux:

  • Файловые системы Unix/Linux по сути не поддерживают понятие расширения. Понятие расширения файла полностью существует как что-то поддерживаемое утилитами такой как cp, ls, или оболочка Вы используете. Я полагаю, что это - этот путь на NTFS также, но я мог быть неправым.

  • Исполняемые файлы, включая сценарии оболочки, обычно никогда не имеют типа расширения. Сценарии будут иметь hashbang строку (т.е. #!/bin/bash) это определяет, какая программа должна интерпретировать его.

  • Любой исполняемый файл, который является двумя буквами долго, супер важен. Не называйте свои исполняемые файлы двухбуквенными именами файлов. Любой файл в /etc окончание в tab также супер важный, такой как fstab, mtab, inittab.
  • Иногда .d добавляется к именам каталогов, особенно в /etc, но это не широко распространено (ОБНОВЛЕНИЕ: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux)
  • rc широко используется для сценариев конфигурации или файлов, любое предварительное ожидание (например, rc.local) или добавление суффикса (.vimrc)
  • Сообщество Unix/Linux никогда не имело предела с тремя символами на расширения и осуждает сокращение, хорошо знают, что расширения соответствуют. Например, не использовать .htm в конце файлов HTML на Unix/Linux использовать .html.
  • В ряде файлов имя файла иногда используется для своей выгоды, или всеми заглавными буквами, таким образом, это появляется во главе списка каталогов. Классический пример Makefile в исходных пакетах. Только сделайте это для материала как README.
  • ~ используется для идентификации файла резервной копии или каталога, как в important_stuff~, или /etc~. Много оболочек развернут одинокое ~ кому: $HOME.
  • Файлы библиотеки почти всегда начинаются lib. Исключение zlib и вероятно немногие другие.
  • Сценарии, которые называет inetd иногда, отмечаются с продвижением in., такой как in.tftpd.
  • Окончание z в vmlinuz средства архивировали, но я никогда не видел никакой другой файл, названный этим путем.

19
11.05.2013, 09:50
3 ответа

-f опция говорит tar то, что следующим аргументом является имя файла архива или стандартный вывод, если это -.

20
27.01.2020, 19:45
  • 1
    , За Ваше здоровье! я предположил, что имя файла должно будет появиться затем так или иначе, таким образом, этот-f делал что-то более специальное! –  Toby 26.08.2010, 13:45
  • 2
    @Toby: Я подозреваю, что это по историческим причинам. "tar" короток для "ленточного архива", и по-видимому исходные версии не предполагали людей, использующих дисковые файлы для архивов все настолько часто. –  David Thornley 28.08.2010, 00:10

Довольно простой. Если Вы опускаете -f параметр, вывод передается stdout:

gammy@denice:/tmp/demo$ tar -c a b c
a0000644000175000017500000000000011435437117010223 0ustar  gammygammyb0000644000175000017500000000000011435437117010224 0ustar  gammygammyc0000644000175000017500000000000011435437117010225 0ustar  gammygammygammy@denice:/tmp/demo$ ls
a  b  c
gammy@denice:/tmp/demo$ 

... какая путаница!

-f- параметр (когда Вы заключили в кавычки) ожидает имя файла (и дополнительно имя хоста), следовательно первый аргумент после того, как это будет выходное имя файла:

gammy@denice:/tmp/demo$ tar -cf output.tar a b c
gammy@denice:/tmp/demo$ ls
a  b  c  output.tar
gammy@denice:/tmp/demo$ 
8
27.01.2020, 19:45
  • 1
    > при угнетении-f параметра произведи, передается stdout. Это верно с tar GNU, но я помню, что на Солярисе значение по умолчанию было накопителем на магнитной ленте (/dev/rmt0 или что-то вроде этого). –  Cristian Ciupitu 27.08.2010, 21:42

Это позволяет Вам указать файл или устройство, с которым Вы собираетесь быть работой. Или создание, обновление или извлечение вещей от него в зависимости от других предоставленных флагов. Например:

# Create a tar file with the contents of somepath/
tar -cvf filename.tar somepath/

# Extract the tar file.
tar -xvf filename.tar
2
27.01.2020, 19:45

Теги

Похожие вопросы