Может кто-нибудь здесь, пожалуйста, ответьте мне, почему я должен использовать опцию -f с опцией -t для просмотра содержимого архива?
Tar начал как инструмент для записи несжатых данных на ленточный накопитель. (Отсюда и название, TApe ARchive). Вот почему по умолчанию используется стример.
В unix-подобных операционных системах устройства обрабатываются так же, как и файлы. Ленточный накопитель может быть /dev /st0 (устройство, лента SCSI 0). Это был ввод / вывод по умолчанию для tar.
Если вы хотите, чтобы tar обращался к другому файлу, например, /dev /st1 (второй стример) или /home/my_backup.tar (реальный файл), вам нужно указать это с опцией -f.
Тестирование этого на современной установке подтверждает, что оно все еще пытается открыть устройство SCSI по умолчанию:
toad:/home/hennes/demo>tar t demo.tar
tar: Error opening archive: Failed to open '/dev/sa0': No such file or directory
Указание файла для открытия вручную с -f работает как положено
toad:/home/hennes/demo>tar tf demo.tar
testfile1
testfile2
testfile3
Похоже, что сообщение Пола указывает, что это больше не может быть значением по умолчанию во всех версиях tar. Чтение из stdin имеет гораздо больше смысла в наши дни, хотя и нарушает обратную совместимость. По этой причине я все еще предпочитаю имя файла -
использовать стандартный вывод.