Untuk perintah, jika menggunakan -
sebagai argumen menggantikan nama file akan berarti STDIN atau STDOUT.
-
Tetapi dalam contoh ini, ia membuat file dengan nama
-
:echo hello > -
Bagaimana saya bisa membuat
-
dalam contoh ini berarti STDOUT? -
Sebaliknya, bagaimana saya bisa membuat
-
berarti file bernama-
dalam contoh seperti:cat -
Jawaban yang Diterima:
Menggunakan -
sebagai nama file berarti stdin/stdout adalah konvensi yang digunakan banyak program. Ini bukan properti khusus dari nama file. Kernel tidak mengenali -
khusus sehingga setiap panggilan sistem mengacu pada -
sebagai nama file akan menggunakan -
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, ia memperlakukannya sebagai sinonim untuk stdin. Untuk menyiasatinya, Anda perlu mengubah string yang cat
melihat sedemikian rupa sehingga masih merujuk ke file bernama -
. Cara yang biasa dilakukan 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, sehingga file disebut sebagai ./-e
tidak muncul sebagai -e
opsi baris perintah ke program, misalnya.