Hoàn thành lập trình của Bash hoạt động bằng cách phân tích dòng lệnh và tìm hiểu những gì đang được hoàn thành:
- Một số bối cảnh được xử lý đặc biệt, ví dụ từ đầu tiên trong lệnh được hoàn thành dưới dạng tên lệnh, phần tiếp theo
$
được hoàn thành dưới dạng tên biến, v.v.
- Bên ngoài các bối cảnh này, bash cố gắng hoàn thành đối số của lệnh và cài đặt cho lệnh hoặc không thành công (thường là trường hợp) cho tên cơ sở của lệnh được áp dụng.
Ví dụ, sau , bash hoàn thành các tên lệnh bắt đầu bằng . Sau đó , bash hoàn thành các tên biến bắt đầu bằng . Sau đó , bash áp dụng các quy tắc hoàn thành cho lệnh . Quy tắc hoàn thành có thể chỉ định một danh mục (người dùng, biến, tệp, v.v.), mẫu ký tự đại diện cho tên tệp hoặc đoạn mã hoặc đoạn mã để thực thi.sqllTab
sqll
sqlldr $aTab
a
sqlldr Tab
sqlldr
Quy tắc hoàn thành được xác định bởi complete
nội dung. Bash không theo dõi khi nào complete
nội dung được gọi hoặc tập lệnh nào (nếu có). Hầu hết các bản phân phối đều gửi gói hoàn thành bash , cung cấp một loạt các quy tắc cho các lệnh chung. Điều này có dạng một loạt các tập tin chứa các lệnh gọi complete
, với một tập lệnh phải được đọc từ .bashrc
(hoặc /etc/bash.bashrc
nếu được triển khai) để tải tất cả các tập lệnh này: thường . /etc/bash_completion
là cần thiết để kích hoạt hoàn thành lập trình và tải các tập lệnh có sẵn.
Gói tiêu chuẩn không bao gồm hỗ trợ cho sqlldr
. Nếu bạn có sự hỗ trợ như vậy, nó phải đến từ một nguồn khác. Nguồn này có thể đã bỏ một tệp trong một thư mục như /etc/bash_completion.d
hoặc có thể có các hướng dẫn để bao gồm một số mã trong của bạn .bashrc
. Bạn có thể sử dụng complete -p sqlldr
để xem các quy tắc hiện hành cho sqlldr
; như đã đề cập trước đây, điều này sẽ không cho bạn biết những quy tắc đó được tải từ đâu.
Tcsh, zsh và cá có cơ chế hơi giống nhau (mọi người đều lấy cảm hứng từ tcsh) nhưng các nội dung, cú pháp và khả năng khác nhau.
/etc/bash_completion.d
. Xem thêm/etc/bash_completion
và hãy xem đầu ra củaset
, môi trường của bạn đã phát triển bao nhiêu.