~ Có nghĩa là gì trong một đường dẫn tập tin?


43

~nghĩa là gì trong một đường dẫn tập tin tuyệt đối?

Tôi thấy điều này trong đầu ra của những thứ như xây dựng tập lệnh nhưng đường dẫn không tồn tại.


25
Hệ điều hành nào?
ChrisF

Không phải Windows xúc xắc mặc định ?
Pacerier

Câu trả lời:


35

Thông thường, điều đó có nghĩa là thư mục chính của người dùng, ví dụ như thư ~mike/mục chính của người dùng mike, ~/sẽ là thư mục chính của bạn. Tuy nhiên, tôi không rõ liệu nên ~/~mike/được coi là tuyệt đối hay tương đối; nó dường như phụ thuộc vào định nghĩa được đưa ra (nếu bất cứ ai có thể đưa ra một tài liệu tham khảo có thẩm quyền, xin vui lòng gửi bình luận).

Lưu ý rằng tôi đang nói về các hệ thống dựa trên Unix ở đây.

Xem http://en.wikipedia.org/wiki/Home_directory#Unix


3
Chúng là tuyệt đối, bởi vì chúng là từ đồng nghĩa cho các đường dẫn tuyệt đối: trên UNIX, đường dẫn tuyệt đối có thể được suy ra từ nội dung của /etc/logintệp. Theo truyền thống, việc mở rộng được thực hiện bởi shell, nhưng bất kỳ ngôn ngữ nào có giả vờ là "kịch bản" cũng sẽ làm điều này.
Charles Stewart

2
+1: Tôi không biết về ~username/điều này.
Wuffers

2
Thật thú vị, Windows PowerShell cũng chấp nhận ~như một từ đồng nghĩa với chỉ thị nhà của người dùng.
Joey

1
Jeffery Snover đã nói rằng PowerShell ban đầu được dựa trên VIM / EMAC
Loại ẩn danh

1
@Charles Stewart được cho là ít nhất ~ / là tương đối vì nó phụ thuộc vào bối cảnh người dùng. Ngoài ra, một số tài liệu tham khảo định nghĩa một đường dẫn tuyệt đối là một đường dẫn được đưa ra từ thư mục gốc của hệ thống tập tin, điều này rõ ràng là không có. Nếu bạn có một tài liệu tham khảo cho tuyên bố của bạn, xin vui lòng chia sẻ!
Adrian Mouat

21

Trên thực tế, cả hai câu trả lời của Adrian Mouat và studiohack đều đúng.
Trong các hệ điều hành có quy ước đặt tên giới hạn (Phiên bản cũ hơn của Windows / DOS, v.v.), nó biểu thị một tên dài.

e.g. "c:\program files\" is equivalent to "c:\progra~1\"

Trong một số hệ điều hành (cụ thể là Unix), nó có nghĩa là home-dir (và có thể được xem như là một đường dẫn tuyệt đối nhưng không chính tắc).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* trong đó 'usr' là thư mục nhà.


2
Trong bối cảnh xây dựng các tập lệnh, nó có thể là phiên bản tập trung vào Unix.
Charles Stewart

2
Đường dẫn Unix thường sử dụng dấu gạch chéo phía trước thay vì dấu gạch chéo ngược.
Torben Gundtofte-Bruun

@torbengb, đúng ... opps
Eran

1
Một điều chỉnh nhỏ cho câu trả lời xuất sắc của Xenorose. Tên tệp như "progra ~ 1" không dành cho các hệ điều hành cũ. Hệ thống Windows 7 của tôi vẫn sử dụng chúng. (Thực hiện dir / x để xem.) Đây là một tính năng cũ hỗ trợ phần mềm cũ không biết về tên tệp dài trong các hệ thống hiện đại. Phần mềm cũ nghĩ rằng tất cả tên tệp theo quy ước 8.3 . Khi tên tệp không hoạt động với quy ước này, hệ thống tệp sẽ tự động tạo tên tương thích thứ hai, 8.3.
Isaac Rabinovitch


5

Và nếu bạn lập trình ASP.NET, điều đó có nghĩa là cấp cao nhất của trang web; thay vì điều hướng bằng cách sử dụng ../../images/some_image.jpg (và nhận mức độ lồng của bạn sai!) bạn có thể chỉ cần nói ~ / hình ảnh / some_image.jpg


2
/images/some_image.jpgsẽ đưa bạn đến thư mục gốc của bất kỳ trang web nào. Những dấu hiệu bổ sung nào mà dấu ngã cung cấp trong ASP.NET?
Sonny

7
~ đưa bạn đến thư mục gốc của ứng dụng web không giống với thư mục gốc của trang web nếu bạn đang sử dụng một thư mục ảo. Ví dụ: nếu trang web của bạn được cài đặt trên myserver trong thư mục ảo myapp, ~ / images / myimage.jpg sẽ phân giải thành myserver / myapp / hình ảnh / myimage.jpg . Xem msdn.microsoft.com/en-us/l Library / ms178116.aspx .
MCS

1

Dưới đây là một số gợi ý có thể giúp bạn tìm ra nó tốt hơn:

$ readlink -f ~

$ echo $HOME

Lưu ý: $là quy ước để chỉ định dấu nhắc dòng lệnh người dùng, nó không phải là một phần của lệnh.


'readlink' không được công nhận là lệnh nội bộ hoặc bên ngoài.
Pacerier

@vtest đó là vì ví dụ trong nhận xét này dành cho các hệ thống dựa trên unix, không phải Windows.
dudewad 14/03/2016

-1

Tìm hiểu thêm về Windows:

  1. Nếu tên tệp ẩn bắt đầu bằng '~' thì Windows Explorer sẽ xử lý nó dưới dạng tệp ẩn hệ thống. Thông tin thêm trong Tại sao các tệp bị ẩn với dấu ngã hàng đầu được coi là siêu ẩn?

  2. Nếu tên tệp / thư mục ngắn chứa '~' (như "c: \ ololoo ~ 1") thì có thể tên dài tương ứng của tệp / thư mục này vượt quá độ dài tối đa (MAX_PATH = 260). Các nhà phát triển nên giải quyết vấn đề này với tiền tố "\\? \" (Ngay cả trên Windows 10 mới hơn vì người dùng có thể vô hiệu hóa hỗ trợ đường dẫn "> 260" với LongPathsEnabledtham số đăng ký hoặc với chính sách nhóm "Bật đường dẫn dài NTFS"). Ví dụ cho cách giải quyết này bằng C # có thể được tìm thấy trong các nguồn thư viện ZetaLongPaths .

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.