Có cách nào để làm cho tab Bash hoàn thành trường hợp không nhạy cảm không?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Tôi đang sử dụng Mac OS X 10.6
Có cách nào để làm cho tab Bash hoàn thành trường hợp không nhạy cảm không?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Tôi đang sử dụng Mac OS X 10.6
Câu trả lời:
Cập nhật văn bản /etc/inputrc
để bao gồm
đặt hoàn thành-bỏ qua trường hợp trên
Sau đó sử dụng ^X ^R
để tải lại cấu hình.
^X ^R
để tải lạiinputrc
bind "set completion-ignore-case on"
từ dòng lệnh; đối với, tôi tin rằng, chỉ phiên cuối cùng
Tái cấu trúc với lợi ích của nhận thức muộn để tương phản với những ưu và nhược điểm của việc sử dụng [.]inputrc
so với .bash_profile
.
Mẹo của chiếc mũ để gạch dưới cho sự giúp đỡ của anh ấy.
Lưu ý: Chỉnh sửa dòng lệnh trong Bash được cung cấp bởi thư viện Readline; tùy chỉnh nó là không tầm thường, nhưng cũng đáng học hỏi; các tính năng của nó bao gồm khả năng xác định các phím tắt tùy chỉnh để chèn đoạn văn bản được xác định trước - xem Chỉnh sửa dòng lệnh trong Hướng dẫn tham khảo Bash
Để kiên trì thực hiện không phân biệt trường hợp hoàn thành tab trong Bash:
Tùy chọn A: Nếu bạn đã có:
/etc/inputrc
tệp (áp dụng toàn hệ thống, yêu cầu sửa đổi sudo
) và / hoặc một ~/.inputrc
tệp (dành riêng cho người dùng)
và / hoặc
bạn đang dự định tùy chỉnh rộng rãi thư viện readline và / hoặc muốn làm cho các tùy chỉnh có hiệu quả đối với các tập lệnh khi chúng gọi read -e
:
Thêm dòng
set completion-ignore-case on
cho một trong hai tệp, tùy thuộc vào việc bạn muốn cài đặt có hiệu lực cho tất cả người dùng hay người dùng hiện tại (tạo tệp, nếu cần).
Một lệnh liên quan giúp hoàn thành tên tệp và thư mục dễ dàng hơn là:
set show-all-if-ambiguous on
Điều này khiến bạn không cần phải nhấn Tab hai lần khi có nhiều hơn một trận đấu.
Tùy chọn B: Ngoài ra, bạn có thể thêm các lệnh Readline vào ~/.bash_profile
tệp dành riêng cho người dùng của mình trên OS X (hoặc ~/.bashrc
trên Linux), bằng cách chuyển chúng dưới dạng một đối số duy nhất cho bind
nội dung :
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Lưu ý rằng bind
các lệnh trong ~/.bash_profile
/ ~/.bashrc
được ưu tiên hơn các lệnh tương đương trong một /etc/inputrc
hoặc ~/.inputrc
.
Như đã ngụ ý ở trên, cấu hình Readline được xác định theo cách này sẽ không có hiệu lực trong các tập lệnh gọi read -e
để kích hoạt hỗ trợ Readline để đọc đầu vào của người dùng.
cd
các lệnh. Điều này giải quyết được câu hỏi này và cũng sẽ tiết kiệm cho tôi hàng ngàn tổ hợp phím. :)
show-all-if-ambiguous
. Tuy nhiên, vì bạn nói "như một giải pháp thay thế", thực sự có lợi ích gì khi thực hiện việc này thông qua bind
, khi các inputrc
tệp dường như làm cho điều đó không cần thiết?
inputrc
, nhưng tôi vui vẻ tạo ~/.inputrc
và thêm chúng, cộng với các chỉ thị thực sự hữu ích khác. Tôi đoán rằng chúng tôi giả định rằng tất cả các độc giả đều biết rằng điều đó /etc/inputrc
ảnh hưởng đến những người dùng khác (trừ khi điều này ghi đè lên các cài đặt bị ảnh hưởng)? Ngay trong khi chúng tôi đề cập đến hãy cẩn thận;)
Để tránh thay đổi cấu hình cho tất cả người dùng và để tránh quyền root, hãy sử dụng như sau:
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc
Sau đó đăng nhập lại hoặc tải lại ~ / .inputrc
/etc/inputrc
hoặc~/.inputrc
một tệp được chỉ địnhINPUTRC
là những nơi duy nhất nó có thể đi. Nhập vào đó tại một dấu nhắc Bash sẽ không hoạt động.