Làm cách nào để tạo một liên kết tượng trưng đến một thư mục có khoảng trắng trong đó?


24

Tôi đã cố gắng tạo một liên kết tượng trưng bằng cách sử dụng lệnh sau:

ln -s "~/Foo Bar/" Foo

... nhưng nó không hoạt động (nghĩa là khi tôi vào công cụ tìm và thử nhấp đúp vào nó, nó nói rằng nó trỏ đến một đường dẫn không hợp lệ và nhắc tôi xóa bí danh hoặc sửa nó). Tôi đã phải đổi tên thư mục thành FooBar và sau đó chạy lệnh sau:

ln -s ~/FooBar/ Foo

Làm cách nào để tạo liên kết mà không phải xóa khoảng trắng khỏi tên thư mục?

Tôi đang tìm cách để làm điều này trong Terminal chứ không phải trong UI của Finder.


1
Trong khi Gordon Davisson đúng, bạn nên lưu ý rằng bí danh và liên kết tượng trưng (symlink) là khác nhau. ln -s làm liên kết tượng trưng. Finder tìm bí danh. Chúng gần như giống hệt nhau trong thực tế, sử dụng phổ biến, nhưng điều quan trọng là phải nhận ra rằng họ khác nhau . Các liên kết chỉ đến một đường dẫn thư mục, trong khi các bí danh trỏ đến một tệp. Nếu bạn vừa trỏ đến cùng một tệp và bạn di chuyển tệp sang một thư mục khác, sau đó tạo một tệp mới trong thư mục cũ, bí danh sẽ trỏ đến bản gốc đã di chuyển và symlink sẽ trỏ đến tệp mới.
CajunLuke

1
@Cajun: cảm ơn đã làm rõ. Thật khó hiểu khi công cụ tìm thấy hiển thị thuộc tính "Loại" của liên kết tượng trưng là "Bí danh".
Senseful

4
Hoàn thành tab cũng là một điều tuyệt vời, nếu bạn muốn làm điều này: ln -s ~/Foo<tab> (trong đó & lt; tab & gt; biểu thị phím ⇥ (tab) thực tế trên bàn phím của bạn), nếu chỉ có một thư mục bắt đầu bằng "Foo" trong ~ sau đó nó sẽ tự động mở rộng đường dẫn đến ~/Foo\ Bar/.
Jason Salaz

Câu trả lời:


41

Các dấu ngoặc kép đang ngăn chặn ~ từ việc được mở rộng vào thư mục nhà của bạn, vì vậy bạn cần chỉ trích dẫn phần có khoảng trống trong đó:

ln -s ~/"Foo Bar/" Foo

Lưu ý: chính xác số lượng trích dẫn không thành vấn đề, miễn là khoảng trống nằm trong phần được trích dẫn và ~ / không. ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/ vv đều tương đương. Ngoài ra, dấu ngoặc đơn và dấu ngoặc kép có cùng tác dụng đối với khoảng trắng (mặc dù chúng khác nhau trên các ký tự khác), vì vậy ~/'Foo Bar/', ~/Foo' 'Bar/ vv cũng sẽ làm việc.

Bạn cũng có thể sử dụng một lối thoát để ngăn không gian được coi là dải phân cách:

ln -s ~/Foo\ Bar/ Foo

5
Bạn có thể trích dẫn nghiêm túc CHỈ không gian? Thật tuyệt vời!
Jason Salaz

Hoặc là "$HOME/Foo Bar/".
wchargin

@wchargein Điều đó sẽ làm việc. Lưu ý rằng không giống như ~, $HOME Nên ở trong dấu ngoặc kép để tránh nhầm lẫn nếu thư mục chính của bạn chứa khoảng trắng hoặc các ký tự lạ khác. "$HOME/Foo Bar/" (như bạn đề xuất), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, vv sẽ làm việc.
Gordon Davisson

0

Tôi đã tự mình kiểm tra nó. Tôi không có vấn đề với một không gian trong đó:

    $ ln -s "/Users/joe/test/foo bar"/ linkToFoo_Bar

ls cho thấy: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ và nó hoạt động trong thiết bị đầu cuối và công cụ tìm mà không có bất kỳ vấn đề.


10
Bạn đã sử dụng một đường dẫn đầy đủ, không phải ~ người giúp đỡ.
Jason Salaz
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.