Mở rộng ~ ,. và '..`


7

Kể từ khi ~, ...là thư mục đặc biệt, tại sao họ xử lý khác nhau trong ví dụ sau?

$ echo ~
/home/tim
$ echo ..
..
$ echo .
.
  1. ~ được mở rộng thành thư mục, nhưng hai cái kia thì không.
  2. Hai cái còn lại được mở rộng theo nghĩa đen, nhưng ~không phải.

8
~không phải là một thư mục, nó là một cấu trúc của shell của bạn và không thực sự tồn tại.
casey

.không phải (tên của) một thư mục, nhưng ~đề cập đến thư mục chính của bạn như .đề cập đến thư mục hiện tại và ..đề cập đến thư mục mẹ.
iconoclast

Câu trả lời:


18

~là một tên đặc biệt được mở rộng bởi shell ...là tên thư mục phù hợp thực sự, vì vậy không có sự mở rộng nào được thực hiện bởi shell ở đó.


4
Ví dụ, nhập ls -avà bạn sẽ thấy các thư mục .... Lý do duy nhất mà chúng không thường được hiển thị là .mặc định mọi thứ bắt đầu đều bị ẩn.
Vô dụng

4
Một cách khác để thấy sự khác biệt là trích dẫn nó: ls -ld '~'sẽ báo lỗi (trừ khi có tệp thư mục có tên ~trong thư mục hiện tại) trong khi ls -ld '.'sẽ hiển thị thông tin về thư mục hiện tại.
celtschk

+1 Cũng có thể hữu ích khi đề cập đến thực tế .là một liên kết cứng đến thư mục hiện tại và ..là một liên kết cứng đến thư mục gốc của thư mục hiện tại.
Joseph R.

.không một tên thư mục, trừ khi bạn phát hànhmkdir '.'
đả phá tín ngưỡng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.