Những lệnh gạch dưới là gì?


10

Khi tôi tab tab _ở thiết bị đầu cuối, Bash gợi ý 206 tính tích cực. Tôi đã cố gắng để chạy một trong số họ _git_rmnhưng không có gì xảy ra, họ là gì?

Đây là một ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


11
type _git_rmcó lẽ sẽ cho bạn biết rằng đó là một chức năng. grep -R '_git_rm' /etc/bash_completion.d/có lẽ sẽ tìm thấy nó Những chức năng này thường là những chức năng cung cấp các danh sách hoàn thành khác nhau để bashhoàn thành.
manatwork 18/03/13

@manatwork xin vui lòng gửi đó như là một câu trả lời.
derobert

@derobert, tôi chỉ có ý định cung cấp một gợi ý nhanh để chủ sở hữu câu hỏi nhận được một cái gì đó trước khi câu trả lời của chuyên gia được đăng ~ 7 giờ sau.
manatwork

@manatwork Câu trả lời là đủ cho tôi ... Tôi có thể tự mình khám phá thêm: D Nếu bạn không phiền, tôi sẽ chấp nhận anwser của Gilles mặc dù tôi nghĩ tôi nên chấp nhận của bạn ..
vẽ

@draw, câu trả lời của Gilles có lẽ dựa trên nghiên cứu và kinh nghiệm, trong khi câu trả lời của tôi dựa trên những quan sát tình cờ được thực hiện trong quá trình thu thập thông tin thư mục. Hãy chấp nhận anh.
manatwork

Câu trả lời:


12

Các hàm có tên bắt đầu bằng dấu gạch dưới là một phần của công cụ hoàn thành có thể lập trình. Bash tuân theo quy ước của zsh ở đây, trong đó hàm tạo ra các phần hoàn thành somecommandđược gọi _somecommandvà nếu hàm đó yêu cầu các hàm phụ trợ, chúng được gọi _somecommand_stuff.

Các hàm hoàn thành này thường không có gì hữu ích hoặc gây ra lỗi nếu bạn gọi chúng theo cách thủ công: chúng dự định được gọi từ công cụ hoàn thành.

Điều này tuân theo một thực tiễn khá phổ biến trong các ngôn ngữ lập trình khác nhau để sử dụng dấu gạch dưới hàng đầu để chỉ ra rằng một hàm hoặc biến theo cách nào đó nằm trong thư viện và không dành cho người dùng cuối (hoặc lập trình viên cuối).

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.