Có một công cụ để tóm tắt những gì tất cả các lệnh làm?


8

Vì vậy, tôi hiểu rằng có những mantrang để nhận tài liệu khi internet không khả dụng hoặc khi bạn cần sử dụng nâng cao, nhưng nếu tôi ngoại tuyến và tôi thậm chí không biết tôi cần công cụ gì cho công việc? Có một lệnh cho phép tôi xem từng chương trình / lệnh và một mô tả ngắn không?

Câu trả lời:


4

Bạn có thể sử dụng bash (1) tích hợp compgen

  • compgen -c sẽ liệt kê tất cả các lệnh bạn có thể chạy.
  • compgen -a sẽ liệt kê tất cả các bí danh bạn có thể chạy.
  • compgen -b sẽ liệt kê tất cả các tích hợp bạn có thể chạy.
  • compgen -k sẽ liệt kê tất cả các từ khóa bạn có thể chạy.
  • compgen -A function sẽ liệt kê tất cả các chức năng bạn có thể chạy.
  • compgen -A function -abck sẽ liệt kê tất cả những điều trên trong một lần.

Lệnh trên liệt kê tất cả các lệnh có sẵn cho người dùng dựa trên tập đặc quyền của anh ta. Tôi đã vô hiệu hóa mạng và kiểm tra lệnh trên và nó hoạt động ngay cả khi bị tắt. Tuy nhiên, để mô tả ngắn, theo như tôi có thể nói, một khi bạn nhận được lệnh, bạn có thể xem trang man.

Một số lệnh khác có thể được sử dụng để xem mô tả về một lệnh là,

apropos
whatis
less
groff

Người giới thiệu

https://stackoverflow.com/a/949006/1742825


Tất nhiên, điều đó sẽ không nhất thiết cho bạn biết nếu chạy các lệnh đó sẽ làm được gì hữu ích . Lấy ví dụ về các mạng bị vô hiệu hóa của bạn, tôi cho rằng pingvẫn sẽ được liệt kê là có thể thực thi được, nhưng nó sẽ không giúp bạn nhiều. Ngoài ra, điều này không dựa trên hiện tại của người dùng $PATH, có nghĩa là nếu một lệnh không nằm trong một trong các thư mục có tên là đường dẫn tìm kiếm thì nó sẽ không bao giờ xuất hiện?
CVn

apropos -s1có vẻ như là một câu trả lời tốt hơn, bởi vì nó bao gồm một mô tả một dòng về những gì mỗi lệnh làm. Câu trả lời này đóng góp gì là một danh sách các bí danh, hàm, v.v., nhưng không có lời giải thích nào về chúng, đó là việc sử dụng hạn chế, IMO.
user1404316

9

Nói chung: Không, một số chương trình đến mà không có tài liệu.

Tuy nhiên, aproposcó thể chỉ là những gì bạn cần.

Ví dụ: apropos sshsẽ liệt kê các trang man liên quan đến ssh, trong trường hợp của tôi:

authorized_keys (5)  - OpenSSH SSH daemon
git-shell (1)        - Restricted login shell for Git-only SSH access
rlogin (1)           - OpenSSH SSH client (remote login program)
rsh (1)              - OpenSSH SSH client (remote login program)
slogin (1)           - OpenSSH SSH client (remote login program)
ssh (1)              - OpenSSH SSH client (remote login program)
ssh-add (1)          - adds private key identities to the authentication agent
ssh-agent (1)        - authentication agent
ssh-argv0 (1)        - replaces the old ssh command-name as hostname     handling
ssh-copy-id (1)      - use locally available keys to authorise logins on a     remote machine
ssh-keygen (1)       - authentication key generation, management and conversion
ssh-keyscan (1)      - gather ssh public keys
ssh-keysign (8)      - ssh helper program for host-based authentication
ssh-pkcs11-helper (8) - ssh-agent helper program for PKCS#11 support
ssh_config (5)       - OpenSSH SSH client configuration files
sshd (8)             - OpenSSH SSH daemon
sshd_config (5)      - OpenSSH SSH daemon configuration file
XAllocClassHint (3)  - allocate class hints structure and set or read a window's WM_CLASS property
XClassHint (3)       - allocate class hints structure and set or read a window's WM_CLASS property
XGetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XSetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XtIsShell (3)        - obtain and verify a widget's class

Bạn có thể thấy một số trang xuất hiện nhiều hơn một lần, lý do là như vậy rsh sloginsshcó cùng một trang man. Cũng có (như bình thường) dương tính giả.


Tôi đoán mặc dù không chính xác những gì tôi đang tìm kiếm, chắc chắn là một công cụ rất hữu ích và tương tự. Cảm ơn!
OneChillDude

Có thể thêm vào câu trả lời của bạn apropos -s1, sẽ kéo tất cả các lệnh từ manphần 1 và chỉ những lệnh đó, dường như là những gì OP muốn.
user1404316

3

Bạn có thể đọc mô tả ngắn về nhiều lệnh bằng cách sử dụng whatis:

$ whatis pwd
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory

Và bạn có thể yêu cầu một số lệnh:

$ whatis pwd ls ps
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory
ls (1p)              - list directory contents
ls (1)               - list directory contents
ps (1)               - report a snapshot of the current processes.
ps (1p)              - report process status

Do đó, bạn có thể thử tạo danh sách mô tả của tất cả các lệnh bằng cách kết hợp whatisvới compgen:

$ whatis $(compgen -c)

Nếu nó tạo ra một số rác trên STDERR, bạn có thể sử dụng `whatis $ (compgen -c) 2> / dev / null` để dọn sạch nó.
Hastur

2

Trong bashbạn có thể bắt đầu với một đơn giản helpgọi từ dấu nhắc để có một built-in tinh chỉnh danh sách lệnh và sau với help commandname, man commandnameman -k commandname(người cuối cùng để mở rộng nghiên cứu để những người có liên quan).

Bạn có thể thấy hữu ích để đọc chẵn info coreutilsinfo. (Không chỉ trong bash)

Ở cuối các mantrang (và infoquá) cho mỗi lệnh có một danh sách các lệnh liên quan khác sau tiêu đề SEE ALSO. Một điểm khởi đầu tốt để mở rộng nghiên cứu của bạ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.