Hoàn thành Bash cho các lệnh trong Mac OS X


35

Làm sao tôi có thể lấy finkmacports để tự động điền tên chương trình khi gõ lệnh, như trong Ubuntu apt-get?

Ví dụ khi tôi gõ

sudo port install ca

và hãy nhấn chuyển hướng , Tôi muốn thiết bị đầu cuối tự động hoàn thành hoặc hiển thị cho tôi các lệnh có sẵn.

OS X thậm chí không tự động hoàn thành các lệnh sau sudo!

Câu trả lời:


68

bash-hoàn thành thêm hoàn thành cho:

  • Tên lệnh sau sudowhich
  • Tên gói Macports và Homebrew (tùy chọn)
  • Tên máy chủ trong known_hosts cho các lệnh như ssh
  • Thư mục trên CDPATH

Và như vậy. Bạn có thể in danh sách các lệnh hoàn thành với complete -p và xem nguồn của hàm với declare -f.

Cài đặt Homebrew hoặc MacPorts và Bash

Đầu tiên, bạn phải cài đặt Homebrew hoặc là MacPorts Theo các hướng dẫn. Chú thích: Không cài đặt cả hai, vì chúng xung đột.

Sau đó, cài đặt phiên bản mới hơn của Bash. Bash tích hợp trong OS X hơi cũ và bạn sẽ có nhiều tùy chọn hoàn thành hơn với Bash & gt; 4.1, mà bạn có thể vượt qua

brew install bash

hoặc là

sudo port install bash

tùy thuộc vào việc bạn sử dụng Homebrew hay MacPorts.

Cài đặt bash-hoàn thành với Homebrew

Để cài đặt bash-completion, bạn phải:

brew install bash-completion

Và thêm những điều sau đây vào ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

Homebrew hiện cài đặt phiên bản cũ hơn của bash-xong (1.3) vẫn hoạt động với Bash 3.x, nhưng vẫn sử dụng Bash 4.x.

Cài đặt hoàn thành bash với MacPorts

Với MacPorts:

sudo port install bash-completion

Sau đó, thêm vào của bạn ~/.bash_profile:

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

Xem trac.macports.org/wiki/howto/bash-completion để được hướng dẫn về cách kích hoạt hoàn thành tên cổng.


MacPorts ' bash-completion gói cung cấp hỗ trợ để hoàn thành tên gói dưới dạng đối số bổ sung sau port <verb>. Xem đây , dòng 48-58. Hành vi này được gợi ý trong wiki MacPorts , trong đó nêu rõ: " Điều này không chỉ dành cho các tệp và thư mục, mà còn ví dụ: cho các lệnh của port. Vì vậy, bạn gõ port <Tab> và nhận được một danh sách tất cả các lệnh có thể. ", Mặc dù nó chỉ đề cập rõ ràng đến việc hoàn thành các động từ (đơn giản hơn nhiều).
Daniel Beck

Tên gói tự động hoàn tất, wiki chỉ không đề cập đến điều đó. Xem mã script được liên kết.
Daniel Beck

Các variants.conf không phải để hoàn thành cho chính MacPorts; biến thể.conf định nghĩa các biến thể để tự động đặt cho tất cả các cổng, như được giải thích trên trang wiki bạn liên kết. Thêm dòng đó khiến hỗ trợ hoàn thành bash được bật khi có thể cho các cổng bạn cài đặt.
Kevin Reid

Cảm ơn các mẹo về tự động hoàn thành trong homebrew. Điều đó một mình kiếm được câu trả lời này bỏ phiếu lên.
Paul Wagland

Tuyệt vời, điều này cho phép make tự động hoàn thành, chỉ là những gì tôi muốn.
Мати Тернер
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.