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.