Sử dụng -
làm tên tệp để có nghĩa là stdin / stdout là một quy ước mà rất nhiều chương trình sử dụng. Nó không phải là một tài sản đặc biệt của tên tệp. Hạt nhân không nhận ra -
là đặc biệt nên bất kỳ cuộc gọi hệ thống nào đề cập đến -
như một tên tệp sẽ sử dụng theo -
nghĩa đen là tên tệp.
Với chuyển hướng bash, -
không được nhận dạng là một tên tệp đặc biệt, vì vậy bash sẽ sử dụng đó làm tên tệp theo nghĩa đen.
Khi cat
thấy chuỗi -
là một tên tệp, nó coi nó như một từ đồng nghĩa với stdin. Để giải quyết vấn đề này, bạn cần thay đổi chuỗi cat
nhìn theo cách mà nó vẫn đề cập đến một tệp được gọi -
. Cách thông thường để làm điều này là tiền tố tên tệp với một đường dẫn - ./-
hoặc /home/Tim/-
. Kỹ thuật này cũng được sử dụng để khắc phục các vấn đề tương tự trong đó các tùy chọn dòng lệnh đụng độ với tên tệp, do đó, một tệp được gọi là ./-e
không xuất hiện dưới dạng -e
tùy chọn dòng lệnh cho một chương trình, ví dụ.