Nguyên tắc cú pháp tiện ích POSIX (cụ thể là # 13) chỉ định rằng đối với các tiện ích mong muốn đọc tên tệp, -
có nghĩa là đầu vào tiêu chuẩn và cho các tiện ích mong muốn tên tệp ghi vào, -
có nghĩa là đầu ra tiêu chuẩn. Ví dụ, cat somefile -
sao chép nội dung của somefile
đầu ra tiêu chuẩn của nó, theo sau là những gì nó đọc trên đầu vào tiêu chuẩn của nó.
Hướng dẫn này không áp dụng cho cd
lệnh vì nó không đọc hoặc ghi vào tệp. cd
làm một cái gì đó khác nhau: đối số -
có nghĩa là thư mục trước đó. Lệnh cd -
tương đương với cd "$OLDPWD" && pwd
. Hành vi này là cụ thể cho cd
lệnh và các lệnh được truyền cảm hứng trực tiếp như pushd
.
Lưu ý rằng đó -
là một toán hạng, không phải là một tùy chọn. Chỉ các đối số bắt đầu bằng -
và không chỉ -
hoặc --
là các tùy chọn. Ý nghĩa chính của việc là một toán hạng là --
không ảnh hưởng đến ý nghĩa đặc biệt của nó. Ví dụ: cd -- -P
thay đổi thư mục con được gọi -P
, nhưng cd -- -
giống như cd -
, nó không thay đổi thành thư mục được gọi -
. Tương tự, cat -- -
không đọc từ một tệp được gọi -
nhưng từ đầu vào tiêu chuẩn.
cd
là một nội trang, không phải là lệnh bên ngoài (cũng không có cách nào để làm việc như một).cd -
do đó là một tính năng cấp vỏ.