Câu trả lời:
Bạn có thể sử dụng Tabphím sau khi nhấn một vài ký tự đầu tiên (sau đó sẽ "điền" phần còn lại của thư mục cho bạn, ví dụ như cd ~/L
Tabđiền vào cd ~/Library/
sau đó nhập Ap
Tabvà nó sẽ điền vào phần còn lại cho bạn.
Nếu có một khoảng trống giữa các từ và bạn không muốn sử dụng các phương pháp trên, đặt một \
(backslash) trước khi không gian, ví dụ cd ~/Library/Application\ Support
.
shopt -s nocaseglob
và bind 'set completion-ignore-case on'
làm cho bash ít nhạy cảm hơn với vỏ máy.
Vấn đề cốt lõi ở đây là cách shell ( bash ) trích dẫn và cách điều đó ảnh hưởng đến việc mở rộng dấu ngã và phân tách thành các từ ngữ (các đối số cho chương trình đang chạy).
bash chỉ xử lý dấu ngã hàng đầu đặc biệt nếu nó không được trích dẫn. Ngoài ra, dấu gạch chéo sau đây cũng không được trích dẫn.
Đồng thời, bash phân tích các dòng lệnh thành các từ ngữ trên cơ sở dữ liệu dựa trên khoảng trắng không trích dẫn. Các cd
lệnh thường đòi hỏi chính xác một đối số (thư mục đích). Một dòng lệnh như cd foo bar
có nghĩa là chạy cd
với hai đối số: foo
và bar
. Nếu bạn chỉ muốn gửi một foo bar
đối số duy nhất , thì bạn cần trích dẫn khoảng trắng:
(ví dụ) cd foo\ bar
(xem thêm ví dụ trích dẫn bên dưới).
Trong tình huống cụ thể của bạn, bạn cần để lại dấu ngã và dấu gạch chéo sau không được trích dẫn trong khi trích dẫn khoảng trắng trong tên thư mục. cd "~/Library/Application Support/"
Thử nghiệm của bạn kết thúc trích dẫn quá nhiều (dấu ngã và dấu gạch chéo của nó), trong khi cd ~/Library/Application Support/
thử nghiệm của bạn trích dẫn quá ít (nó bỏ qua trích dẫn khoảng trắng trong tên thư mục).
Giải pháp phổ biến nhất là sử dụng lối thoát một ký tự để chỉ trích dẫn khoảng trắng:
cd ~/Library/Application\ Support
Bạn cũng có thể sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép xung quanh chỉ khoảng trắng hoặc dấu cách và một số bit khác của đối số đó (nhưng không phải là ~/
!):
cd ~/Library/Application' 'Support
cd ~/Library/Application" "Support
cd ~/Library/App'lication 'Support
cd ~/Library/Application" Supp"ort
cd ~/'Library/Application 'Support
cd ~/"Library/Application "Support
Những loại trích dẫn này có ý nghĩa khác nhau, nhưng chúng giống hệt nhau trong các ví dụ này. Dấu ngoặc đơn bảo vệ chuỗi ký tự trong khi dấu ngoặc kép cho phép mở rộng và thay thế khác nhau trong vùng được trích dẫn.
Thông thường, bạn chỉ có thể để vỏ làm công việc cho bạn.
Globbing (ký tự đại diện):
cd ~/L*/Ap*
Bạn có thể sử dụng shopt -s nocaseglob
để làm cho trường hợp toàn cầu không nhạy cảm:
cd ~/l*/ap*
Hoàn thành:
Nhấn Tabsau khi nhập cd ~/L
có thể sẽ mở rộng nó đến cd ~/Library/
.
Nhấn Tablại sau khi nhập Ap
(bây giờ bạn có cd ~/Library/Ap
) có thể sẽ mở rộng nó sang cd ~/Library/Application\ Support/
(vỏ tự động chèn dấu gạch chéo thoát).
Bạn có thể sử dụng bind 'set completion-ignore-case on'
để làm cho trường hợp hoàn thành không nhạy cảm:
cd ~/l
Tab→ cd ~/Library/
; ap
Tab→cd ~/Library/Application\ Support/
<kbd></kbd>
thẻ HTML (một trong một số thẻ HTML được hỗ trợ trong đánh dấu SE ).
Khi bạn trích dẫn hai đường dẫn, bạn đang dừng việc mở rộng dấu ngã. Vì vậy, có một vài cách để làm điều này:
cd ~/"My Code"
cd ~/'My Code'
Dấu ngã không được trích dẫn ở đây, vì vậy mở rộng dấu ngã sẽ vẫn được chạy.
cd "$HOME/My Code"
Bạn có thể mở rộng các biến môi trường bên trong các chuỗi trích dẫn kép; về cơ bản đây là những gì mà bản mở rộng dấu ngã đang làm
cd ~/My\ Code
Bạn cũng có thể thoát các ký tự đặc biệt (chẳng hạn như dấu cách) bằng dấu gạch chéo ngược.
Bạn cũng có thể chỉ cần kéo một thư mục vào cửa sổ Terminal, đường dẫn tệp / thư mục hoàn chỉnh sẽ được tự động dán khi kéo.
Bạn cần thoát khỏi không gian trong " Application Support
"
Thử $ cd ~/Library/Application\ Support/
Bạn có thể thử cách này đối với các thư mục / tệp cách nhau bằng cách Nếu tên tệp hoặc thư mục chứa 1) tên tệp .extension, lệnh sẽ là cd ~ / file \ name.extension / (hoặc) cd ~ / "tên tệp.extension" /