Se intendi il nudo - alla fine del tar comando, che è comune a molti comandi che vogliono usare un file.
Ti consente di specificare l'input o l'output standard piuttosto che un effettivo nome file.
Questo è il caso del tuo primo e terzo esempio. Ad esempio, il cdrecord sta prendendo l'input standard (il flusso di immagini ISO prodotto da mkisofs ) e scrivendolo direttamente in /dev/dvdrw .
Con il cd comando, ogni volta che cambi directory, memorizza la directory da cui provieni. Se fai cd con lo speciale - "nome directory", usa quella directory ricordata invece di quella reale. Puoi facilmente passare da una directory all'altra abbastanza velocemente usando questo.
Altri comandi possono trattare - come diverso valore speciale.
Non è magia. Alcuni comandi interpretano - come utente che desidera leggere da stdin o scrivere su stdout; non c'è niente di speciale nella shell.
- significa esattamente ciò che ogni comando vuole che significhi. Esistono diverse convenzioni comuni e hai visto esempi della maggior parte di esse in altre risposte, ma nessuna di esse è universale al 100%.
Non c'è niente di magico nel - carattere per quanto riguarda la shell (tranne che la shell stessa e alcuni dei suoi comandi incorporati come cd e echo , usalo in modi convenzionali). Alcuni caratteri, come \ , ' e " , sono "magico", con significati speciali ovunque appaiano. Questi sono "metacaratteri shell". - non è così.
Per vedere come un dato comando usa - , leggi la documentazione per quel comando .