Tôi đang sử dụng, trong số những thứ khác, bash 4.2.37 trên Linux Mint 14.
Khi tôi tự động hoàn thành tên của một biến môi trường bằng cách gõ Tab, nó sẽ mở rộng thành tên của biến theo sau là khoảng trắng.
Nếu giá trị của biến xảy ra là tên thư mục, tôi muốn nó mở rộng thành tên của biến theo sau /
.
Ví dụ: nếu tôi gõ:
$ ls $HOM<tab>
nó mở rộng tới:
$ ls $HOME _
nơi _
đánh dấu vị trí của con trỏ. Vấn đề là sau đó tôi thường muốn tiếp tục gõ tên của một số tệp hoặc thư mục trong thư mục chính của tôi, có nghĩa là tôi phải gõ backspacevà sau đó /
.
Vì vậy, tôi muốn mở rộng ở trên để:
$ ls $HOME/_
Điều tương tự cũng xảy ra khi tôi gõ toàn bộ tên biến; sau đó ls $HOME
, tabthêm một khoảng trắng và tôi muốn nó thêm vào một /
.
(Và tất nhiên tôi không muốn nó thêm /
nếu giá trị của biến không phải là tên thư mục.)
Có cách nào để tôi có thể bảo bash hành xử theo cách tôi muốn, thông qua các lệnh bash hoặc bằng cách cập nhật $HOME/.inputrc
không?
Lưu ý: Tôi đặc biệt tìm kiếm một cách để tabhành xử theo cách tôi muốn. Các cách để đạt được cùng một hành vi với các tổ hợp phím khác nhau sẽ rất thú vị, nhưng sẽ không trả lời câu hỏi của tôi.
(Tôi đã vô hiệu hóa /etc/profile.d/bash_completion.sh
trên hệ thống của mình vì nó tương tác kém set -o nounset
. Một thử nghiệm nhanh cho thấy rằng điều này có thể không liên quan đến câu hỏi của tôi.)
Ngẫu nhiên, tcsh thực hiện điều này: đưa ra một biến môi trường $FOOBAR
, gõ $FOOBA<tab>
sẽ mở rộng $FOOBAR/
nếu tham chiếu đến một thư mục, $FOOBAR
(có dấu cách) nếu không. Không, điều đó không đủ để thuyết phục tôi quay trở lại tcsh. zsh làm điều này là tốt.