Hoàn thành tab shell Bash, không mở rộng ~


12

Tôi sử dụng Tabkhóa rất nhiều khi tôi sử dụng shell (bash).

Nhưng tôi cảm thấy khó chịu khi ~luôn bị mở rộng /home/"user". Tôi không nghĩ nó luôn như thế này; Có cách nào để ngăn chặn hành vi này?

Một ví dụ:

  1. cj@zap:~$ ls ~/
  2. nhấn Tab
  3. cj@zap:~$ ls /home/cj/

Tôi muốn tiếp tục có ~/và không kết thúc với /home/cj/.


2
"Tôi không nghĩ nó luôn như thế này." - Hoàn thành lập trình ghi đè cài đặt đường đọc set expand-tilde off(mặc định hoặc được đặt ~/.inputrc).
Tạm dừng cho đến khi có thông báo mới.

"bind -v | grep tilde" trả về "thiết lập mở rộng-tilde" ... vì vậy tôi không nghĩ rằng nó sẽ giúp ích.
Johan

Bạn có thể có một cái nhìn vào shopt -p direxpand.
gam3

Câu trả lời:


10

Vô hiệu hóa mở rộng dấu ngã là nhanh chóng và không đau. Mở ra ~/.bashrcvà chèn cái này:

_expand()
{
    return 0;
}

Điều này sẽ ghi đè chức năng mở rộng từ /etc/bash_completion. Tôi khuyên bạn nên bình luận về những gì nó làm trên hàm trong trường hợp bạn muốn mở rộng trở lại trong tương lai. Thay đổi sẽ có hiệu lực trong một trường hợp mới.


mặc dù _expand(){ true; }ngắn hơn :)
tig

nó sẽ không được _expand(){ false; }chứ? @tig
John T

2
@ John: không nên như vậy truetrả về kết quả thành công và kết quả thành công là 0, do đó return 0bằng với truetrạng thái thoát và return 1bằng false. chỉ cần cố gắng true; echo $?false; echo $?.
tig

@tig quá nhiều chương trình đã làm tôi bối rối ... codepad.org/Frb3RyAN Tương tự, bạn tìm thấy mã này trong rất nhiều mã (xem trên cùng): cs.nthu.edu.tw/~tingting/DS_mid_solution.pdf Tôi sẽ cho rằng nó đã được bật lên trong các công cụ GNU để biểu thị ý nghĩa thực tế hơn, nghĩa là "Đúng, chương trình đã chạy thành công" hoặc "sai - chương trình chạy không chính xác".
John T

@ John: không sao đâu :), «Ngay cả John T cũng có thể sai» (không bị xúc phạm :))
tig

5

Với bash_completion mới hơn, có vẻ như bạn cũng cần ghi đè __Exand_tilde_by_Vf:

__expand_tilde_by_ref() {
  return 0
}

1

Thậm chí gọn hơn:

_expand() { :; }

... Như ":" là một vỏ được tích hợp sẵn tương đương với "true" :-)


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.