Can anyone here please answer me why should I use -f option with -t option to list content of archive?
Tar começou como uma ferramenta para gravar dados não compactados em uma unidade de fita. (Daí o nome, TApe ARchive). É por isso que o padrão é a unidade de fita.
Em sistemas operacionais semelhantes a unix, os dispositivos são tratados da mesma forma que o arquivo. Uma unidade de fita pode ser / dev / st0 (dispositivo, fita SCSI 0). Esta foi a entrada / saída padrão para o tar.
Se você quiser que o tar acesse outro arquivo, por exemplo, / dev / st1 (segunda unidade de fita) ou /home/my_backup.tar (um arquivo real ), então você precisa especificar isso com a opção -f.
Testando isso em uma instalação moderna, confirme que ele ainda tenta abrir um dispositivo SCSI por padrão:
toad:/home/hennes/demo>tar t demo.tar
tar: Error opening archive: Failed to open '/dev/sa0': No such file or directory
Especificar manualmente um arquivo para abrir com -f funciona conforme o esperado
toad:/home/hennes/demo>tar tf demo.tar
testfile1
testfile2
testfile3
O post de Pauls parece indicar que isso pode não ser mais o padrão em todas as versões do tar. Ler a partir de stdin faz muito mais sentido nos dias de hoje, apesar de quebrar com compatibilidade retroativa. Por esse motivo, ainda prefiro o nome de arquivo -
para usar stdout.