Câu trả lời:
Đối với &
(hoặc gần như bất kỳ nhân vật nào khác, bạn có hai khả năng đơn giản.
' -3ab_&_-3dc.img'
-3ab_\&_-3dc.img
Có hai trường hợp ngoại lệ:
foo'bar\qux
: cd 'foo'\''bar\qux'
. Bạn có thể nhớ nó theo cách đó: bên trong các trích dẫn đơn, '\''
sẽ giúp bạn có một trích dẫn.Bạn cũng có thể sử dụng dấu ngoặc kép, nhưng sau đó bạn cần đặt dấu gạch chéo ngược trước một số ký tự. Trích dẫn đơn là đơn giản hơn.
Có một khó khăn nữa ở đây, đó là tên của thư mục bắt đầu bằng dấu gạch ngang. Nhân vật đó nói với cd
lệnh (giống như hầu hết mọi lệnh) mà một tùy chọn tuân theo. Dấu gạch ngang không đặc biệt đối với shell, chỉ với lệnh, vì vậy các trích dẫn sẽ không ảnh hưởng đến nó. Bạn có hai cách để chuyển một đối số bắt đầu bằng dấu gạch ngang sang một lệnh mà không cần nó được hiểu là một tùy chọn:
./
vào phía trước vẫn chỉ định cùng một tệp.--
trước. Điều đó nói với lệnh ngừng tìm kiếm các tùy chọn.Vì vậy, đây là một số cách bạn có thể thay đổi thành thư mục con này:
cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'
Dấu và không cần phải thoát, nhưng vấn đề bạn đang gặp phải có thể xảy ra với phần đầu -
, hơn là phần ký hiệu. Các -
cd hàng đầu làm cho rằng bạn đang vượt qua trong các tùy chọn. Bạn có thể giải quyết vấn đề này bằng cách sử dụng ./
:
cd './-3ab_&_-3dc.img'
&
chắc chắn là một vấn đề. Đối với -
, nó phụ thuộc vào vỏ. Zsh khá hài lòng cd
với một thư mục bắt đầu bằng a -
. Tuy nhiên bash thì không.