Chà, đây là cách rất riêng của tôi để đọc các trang:
Người đàn ông
Khi bạn mở một manpage bằng cách sử dụng man
lệnh, đầu ra sẽ được hiển thị / render bằng less
hoặc more
lệnh, hoặc bất kỳ lệnh khác sẽ được thiết lập như máy nhắn tin của bạn (manpager).
Nếu bạn đang sử dụng Linux, có lẽ bạn được phục vụ với cơ sở hạ tầng người đàn ông đã được cấu hình để sử dụng /usr/bin/less -is
(trừ khi bạn đã cài đặt một số bản phân phối tối thiểu) như man(1)
, giải thích trên phần Tùy chọn của nó:
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
Trên FreeBSD và OpenBSD chỉ là vấn đề chỉnh sửa MANPAGER
biến môi trường vì chúng chủ yếu sẽ sử dụng more
và một số tính năng như tìm kiếm và tô sáng văn bản có thể bị thiếu.
Có một câu trả lời tốt cho câu hỏi về sự khác biệt more
, less
và most
có ở đây (không bao giờ được sử dụng most
). Khả năng cuộn lùi và cuộn về phía trước theo trang bằng Spacehoặc cả hai cách theo dòng ↓hoặc ↑(cũng, sử dụng vi
các ràng buộc jvà k) là điều cần thiết trong khi duyệt các trang. Nhấn htrong khi sử dụng less
để xem tóm tắt các lệnh có sẵn.
Và đó là lý do tại sao tôi khuyên bạn nên sử dụng less
làm máy nhắn tin cho người đàn ông của mình. less
có một số tính năng cần thiết sẽ được sử dụng trong câu trả lời này.
Làm thế nào là một lệnh được định dạng?
Các quy ước về tiện ích : Thông số kỹ thuật cơ sở nhóm mở Vấn đề 7 - Phiên bản IEEE Std 1003.1, 2013. Bạn nên truy cập liên kết đó trước khi cố gắng hiểu một trang web. Tham chiếu trực tuyến này mô tả cú pháp đối số của các tiện ích tiêu chuẩn và giới thiệu thuật ngữ được sử dụng trong suốt POSIX.1-2017 để mô tả các đối số được xử lý bởi các tiện ích. Điều này cũng sẽ gián tiếp giúp bạn cập nhật về ý nghĩa thực sự của các từ như tham số, đối số, tùy chọn đối số ...
Người đứng đầu của bất kỳ trang web nào sẽ trông ít khó hiểu hơn đối với bạn sau khi hiểu được ký hiệu của các quy ước tiện ích:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Có trong tâm trí những gì bạn muốn làm.
Khi thực hiện nghiên cứu của bạn về xargs
bạn đã làm điều đó cho một purpouse, phải không? Bạn có một nhu cầu cụ thể đó là đọc đầu ra tiêu chuẩn và thực thi các lệnh dựa trên đầu ra đó.
Nhưng, khi tôi không biết tôi muốn lệnh nào?
Sử dụng man -k
hoặc apropos
(chúng là tương đương). Nếu tôi không biết cách tìm tập tin : man -k file | grep search
. Đọc các mô tả và tìm thấy một trong đó sẽ phù hợp hơn với nhu cầu của bạn. Thí dụ:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Apropose hoạt động với các biểu thức thông thường theo mặc định, ( man apropos
, đọc mô tả và tìm hiểu xem cái gì -r
) và trong ví dụ này tôi đang tìm mọi trang chủ nơi mô tả bắt đầu bằng "báo cáo".
Để tìm thông tin liên quan đến việc đọc xử lý đầu vào / đầu ra tiêu chuẩn và tiếp cận xargs
như một tùy chọn có thể:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Luôn đọc DESCRIPTION
trước khi bắt đầu
Hãy dành thời gian và đọc mô tả. Chỉ cần đọc mô tả của xargs
lệnh chúng ta sẽ biết rằng:
xargs
đọc từ STDIN và thực thi lệnh cần thiết. Điều này cũng có nghĩa là bạn sẽ cần có một số kiến thức về cách hoạt động của đầu vào tiêu chuẩn và cách thao tác thông qua các đường ống để ra lệnh chuỗi
- Các hành vi mặc định là hành động như thế nào
/bin/echo
. Điều này cung cấp cho bạn một mẹo nhỏ rằng nếu bạn cần xâu chuỗi nhiều hơn một xargs
, bạn không cần sử dụng echo để in.
- Chúng tôi cũng đã học được rằng tên tập tin unix có thể chứa các dòng trống và dòng mới, rằng đây có thể là một vấn đề và đối số
-0
là một cách để ngăn chặn mọi thứ bùng nổ bằng cách sử dụng dấu tách ký tự null. Mô tả cảnh báo bạn rằng lệnh đang được sử dụng làm đầu vào cũng cần hỗ trợ tính năng này và GNU cũng find
hỗ trợ nó. Tuyệt quá. Chúng tôi sử dụng rất nhiều tìm thấy với xargs
.
xargs
sẽ dừng lại nếu đạt trạng thái thoát 255.
Một số mô tả rất ngắn và đó thường là do phần mềm hoạt động theo cách rất đơn giản. Thậm chí đừng nghĩ đến việc bỏ qua phần này của trang web ;)
Những điều khác cần chú ý ...
Bạn biết rằng bạn có thể tìm kiếm các tập tin bằng cách sử dụng find
. Có rất nhiều lựa chọn và nếu bạn chỉ nhìn vào SYNOPSIS
, bạn sẽ bị choáng ngợp bởi những thứ đó. Đó chỉ là phần nổi của tảng băng chìm. Không bao gồm NAME
, SYNOPSIS
và DESCRIPTION
, bạn sẽ có các phần sau:
AUTHORS
: những người đã tạo hoặc hỗ trợ trong việc tạo lệnh.
BUGS
: liệt kê bất kỳ khiếm khuyết đã biết. Có thể chỉ là những hạn chế thực hiện.
ENVIRONMENT
: Các khía cạnh của shell của bạn có thể bị ảnh hưởng bởi lệnh hoặc các biến sẽ được sử dụng.
EXAMPLES
hoặc NOTES
: Tự giải thích.
REPORTING BUGS
: Ai bạn sẽ phải liên hệ nếu bạn tìm thấy lỗi trên công cụ này hoặc trong tài liệu của nó.
COPYRIGHT
: Người đã tạo và từ chối trách nhiệm về phần mềm. Tất cả liên quan đến giấy phép của chính phần mềm.
SEE ALSO
: Các lệnh, công cụ hoặc các khía cạnh làm việc khác có liên quan đến lệnh này và không thể phù hợp với bất kỳ phần nào khác.
Rất có thể bạn sẽ tìm thấy thông tin thú vị về các khía cạnh bạn muốn của một công cụ trên phần ví dụ / ghi chú.
Thí dụ
Trong các bước sau tôi sẽ lấy find
ví dụ, vì các khái niệm của nó "đơn giản" hơn là xargs
giải thích (một lệnh tìm tệp và các giao dịch khác với thực thi stdin và đường ống của đầu ra lệnh khác). Chúng ta hãy giả vờ rằng chúng ta không biết gì (hoặc rất ít) về lệnh này.
Tôi có một vấn đề cụ thể đó là: Tôi phải tìm mọi tệp có .jpg
phần mở rộng và với 500KiB (KiB = 1024 byte, thường được gọi là kibibyte) hoặc có kích thước lớn hơn trong thư mục máy chủ ftp.
Đầu tiên, mở hướng dẫn : man find
. Là SYNOPSIS
mỏng. Hãy tìm kiếm những thứ bên trong hướng dẫn: Nhập /cộng với từ bạn muốn ( size
). Nó sẽ lập chỉ mục rất nhiều mục -size
sẽ tính kích thước cụ thể. Bị kẹt. Không biết cách tìm kiếm với "nhiều hơn" hoặc "nhỏ hơn" một kích thước nhất định và người đàn ông không cho tôi thấy điều đó.
Hãy thử xem và tìm kiếm mục tiếp theo được tìm thấy bằng cách nhấn n. ĐỒNG Ý. Tìm thấy một cái gì đó thú vị : find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Có thể ví dụ này cho chúng ta thấy rằng với -size +100M
nó sẽ tìm thấy các tệp có 100MB trở lên. Làm thế nào tôi có thể xác nhận? Đi đến đầu trang và tìm kiếm các từ khác.
Một lần nữa, hãy thử từ greater
. Nhấn gsẽ dẫn chúng tôi đến đầu trang. /greater
và mục đầu tiên là:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Âm thanh tuyệt vời. Có vẻ như khối hướng dẫn này đã xác nhận những gì chúng tôi nghi ngờ. Tuy nhiên, điều này sẽ không chỉ áp dụng cho kích thước tập tin. Nó sẽ áp dụng cho bất kỳ n
cái gì có thể tìm thấy trên trang này (như cụm từ đã nói: "Đối số số có thể được chỉ định là").
Tốt Hãy để chúng tôi tìm cách lọc theo tên : g /insensitive
. Tại sao? Vô cảm? Wtf? Chúng tôi có một máy chủ ftp giả thuyết, trong đó "mà khác hệ điều hành" mọi người có thể cung cấp cho một tên tập tin với phần mở rộng như .jpg
, .JPG
, .JpG
. Điều này sẽ dẫn chúng ta đến:
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
Tuy nhiên, sau khi bạn tìm kiếm lname
bạn sẽ thấy rằng điều này sẽ chỉ tìm kiếm các liên kết tượng trưng. Chúng tôi muốn các tập tin thực sự. Mục tiếp theo:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
Tuyệt quá. Tôi thậm chí không cần phải đọc về -name
để xem đó -iname
là phiên bản không nhạy cảm của trường hợp này. Cho phép tập hợp lệnh:
Chỉ huy: find /ftp/dir/ -size +500k -iname "*.jpg"
Điều gì tiềm ẩn ở đây: Kiến thức mà ký tự ?
đại diện cho "bất kỳ ký tự nào tại một vị trí" và *
đại diện cho "không hoặc nhiều hơn bất kỳ ký tự nào". Các -name
tham số này sẽ cung cấp cho bạn một bản tóm tắt kiến thức này.
Mẹo áp dụng cho tất cả các lệnh
Một số tùy chọn, ghi nhớ và "kiểu cú pháp" di chuyển qua tất cả các lệnh khiến bạn phải mua một thời gian bằng cách không phải mở manpage. Những người được học bằng thực tiễn và phổ biến nhất là:
- Nói chung,
-v
có nghĩa là dài dòng. -vvv
là một biến thể "rất rất dài dòng" trên một số phần mềm.
- Theo tiêu chuẩn POSIX, thường có thể xếp chồng một đối số gạch ngang. Ví dụ:
tar -xzvf
, cp -Rv
.
- Nói chung
-R
và / hoặc -r
có nghĩa là đệ quy.
- Hầu như tất cả các lệnh có một trợ giúp ngắn gọn với
--help
tùy chọn.
--version
hiển thị phiên bản của một phần mềm.
-p
, trên các tiện ích sao chép hoặc di chuyển có nghĩa là "bảo vệ quyền".
-y
có nghĩa là CÓ, hoặc "tiến hành mà không cần xác nhận" trong hầu hết các trường hợp.
Lưu ý rằng những điều trên không phải lúc nào cũng đúng. Ví dụ, công -r
tắc có thể có nghĩa là những thứ rất khác nhau cho các phần mềm khác nhau. Luôn luôn là một ý tưởng tốt để kiểm tra và đảm bảo khi nào một lệnh có thể nguy hiểm, nhưng đây là những mặc định phổ biến.
Giá trị mặc định của lệnh.
Tại phần máy nhắn tin của câu trả lời này, chúng tôi thấy đó less -is
là máy nhắn tin của man
. Hành vi mặc định của các lệnh không phải lúc nào cũng được hiển thị ở một phần riêng biệt trên các trang hoặc các phần được đặt nhiều nhất.
Bạn sẽ phải đọc các tùy chọn để tìm ra mặc định hoặc nếu bạn may mắn, việc gõ /pager
sẽ dẫn bạn đến thông tin đó. Điều này cũng đòi hỏi bạn phải biết khái niệm máy nhắn tin (phần mềm cuộn trang này) và đây là điều bạn sẽ chỉ có được sau khi đọc nhiều trang.
Tại sao điều đó quan trọng? Điều này sẽ mở ra nhận thức của bạn nếu bạn tìm thấy sự khác biệt về cuộn và hành vi màu trong khi đọc man(1)
trên Linux ( less -is
máy nhắn tin) hoặc FreeBSD man(1)
chẳng hạn.
Còn SYNOPSIS
cú pháp thì sao?
Sau khi nhận được tất cả thông tin cần thiết để thực hiện lệnh, bạn có thể kết hợp các tùy chọn, đối số tùy chọn và toán hạng nội tuyến để thực hiện công việc của mình. Tổng quan về các khái niệm:
- Tùy chọn là các công tắc ra lệnh cho một hành vi lệnh. " Làm điều này " " không làm điều này " hoặc " hành động theo cách này ". Thường được gọi là công tắc.
- Đối số tùy chọn được sử dụng trong hầu hết các trường hợp khi tùy chọn không phải là nhị phân (bật / tắt) như
-t
trên mount, chỉ định loại hệ thống tệp ( -t iso9660
, -t ext2
). " Làm điều này với đôi mắt nhắm " hoặc " cho thú ăn, nhưng chỉ những con sư tử ". Cũng được gọi là đối số.
- Toán tử là những thứ bạn muốn lệnh đó hành động. Nếu bạn sử dụng
cat file.txt
, toán hạng là một tệp trong thư mục hiện tại của bạn và nội dung của nó sẽ được hiển thị trên đó STDOUT
. ls
là một lệnh trong đó toán hạng là tùy chọn. Ba dấu chấm sau toán hạng ngầm cho bạn biết rằng cat
có thể hành động trên nhiều toán hạng (tệp) cùng một lúc. Bạn có thể nhận thấy rằng một số lệnh đã đặt loại toán hạng mà nó sẽ sử dụng. Thí dụ:cat [OPTION] [FILE]...
Tóm tắt nội dung liên quan:
Khi nào phương pháp này sẽ không hoạt động?
- Các trang không có ví dụ
- Trang web nơi các tùy chọn có một lời giải thích ngắn
- Khi bạn sử dụng các từ khóa chung chung như
and
, to
, for
bên trong trang man
- Các trang không được cài đặt. Điều này có vẻ hiển nhiên nhưng, nếu bạn chưa
lftp
cài đặt (và các trang của nó), bạn không thể biết đó là một lựa chọn phù hợp như một ứng dụng khách ftp tinh vi hơn bằng cách chạyman -k ftp
Trong một số trường hợp, các ví dụ sẽ khá đơn giản và bạn sẽ phải thực hiện một số lệnh thực thi lệnh của mình để kiểm tra hoặc trong trường hợp xấu nhất là Google.
Khác: Ngôn ngữ lập trình và các mô-đun:
Nếu bạn đang lập trình hoặc chỉ tạo tập lệnh, hãy nhớ rằng một số ngôn ngữ có các hệ thống trang riêng, như perl
( perldocs
), python ( pydocs
), v.v., nắm giữ thông tin cụ thể về phương thức / chức năng, biến, hành vi và thông tin quan trọng khác về mô-đun bạn đang cố gắng sử dụng và học hỏi Điều này hữu ích với tôi khi tôi đang tạo một tập lệnh để tải xuống các email IMAP chưa đọc bằng perl Mail::IMAPClient
mô-đun.
Bạn sẽ phải tìm ra những trang cụ thể đó bằng cách sử dụng man -k
hoặc tìm kiếm trực tuyến. Ví dụ:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
... Hàng tấn thứ khác ở đây, với các phần như một trang thông thường ...
Với trăn:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
Hoặc, chức năng help()
bên trong vỏ trăn nếu bạn muốn đọc thêm chi tiết về một số đối tượng:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Bonus: Các wtf
lệnh có thể giúp bạn với từ viết tắt và nó hoạt động như whatis
nếu không có chữ viết tắt trên đó là cơ sở dữ liệu được tìm thấy, nhưng những gì bạn đang tìm kiếm là một phần của cơ sở dữ liệu người đàn ông. Trên Debian lệnh này là một phần của bsdgames
gói. Ví dụ:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager