Bastante sencillo. Si omite el -f
parámetro, la salida se pasa a 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 desastre!
El -f
parámetro (como lo citó) espera un nombre de archivo (y opcionalmente un nombre de host), de ahí que el primer argumento después de que sea el nombre de archivo de salida:
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$