Bem simples. Se você omitir o -f
parâmetro, a saída será passada para 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$
...que bagunça!
O -f
parâmetro (como você citou) espera um nome de arquivo (e opcionalmente um nome de host), portanto, o primeiro argumento após o nome do arquivo de saída:
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$