Menggunakan -
sebagai nama file berarti stdin / stdout adalah konvensi yang banyak digunakan program. Ini bukan properti khusus dari nama file. Kernel tidak mengenali -
sebagai istimewa sehingga panggilan sistem apa pun yang merujuk -
sebagai nama file akan digunakan -
secara harfiah sebagai nama file.
Dengan pengalihan bash, -
tidak dikenali sebagai nama file khusus, jadi bash akan menggunakannya sebagai nama file literal.
Ketika cat
melihat string -
sebagai nama file, itu memperlakukannya sebagai sinonim untuk stdin. Untuk menyiasatinya, Anda perlu mengubah string yang cat
melihat sedemikian rupa sehingga masih merujuk ke file yang disebut -
. Cara biasa untuk melakukan ini adalah dengan mengawali nama file dengan path - ./-
, atau /home/Tim/-
. Teknik ini juga digunakan untuk mengatasi masalah serupa di mana opsi baris perintah berbenturan dengan nama file, jadi file yang disebut sebagai ./-e
tidak muncul sebagai -e
opsi baris perintah ke suatu program, misalnya.