Eh bien, c’est ma façon très personnelle de lire les pages de manuel:
Le manpager
Lorsque vous ouvrez un manpage en utilisant la man
commande, la sortie sera affiché / rendu par les less
ou more
commandes, ou toute autre commande qui sera défini comme téléavertisseur (MANPAGER).
Si vous utilisez Linux, vous êtes probablement servi avec votre infrastructure man déjà configurée pour utiliser /usr/bin/less -is
(sauf si vous avez installé une distribution minimale) comme man(1)
, expliquez-la dans la section Options:
-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.
Sous FreeBSD et OpenBSD, il ne s’agit que d’éditer la MANPAGER
variable d’environnement car ils l’utiliseront principalement more
, et certaines fonctionnalités telles que la recherche et la mise en surbrillance du texte risquent de manquer.
Il y a une bonne réponse à la question de quelles différences more
, less
et most
ont ici (jamais utilisé most
). La possibilité de faire défiler en arrière et en avant par page avec Spaceou dans les deux sens par ligne avec ↓ou ↑(également, en utilisant les vi
liaisons jet k) est essentielle lors de la navigation dans les pages de manuel. Appuyez sur hpendant l'utilisation less
pour voir le résumé des commandes disponibles.
Et c'est pourquoi je vous suggère d'utiliser less
comme téléavertisseur homme. less
avoir quelques fonctionnalités essentielles qui seront utilisées lors de cette réponse.
Comment une commande est-elle formatée?
Conventions relatives aux utilitaires : spécifications de base d'Open Group, version 7 - Norme IEEE 1003.1, édition 2013. Vous devriez visiter ce lien avant d'essayer de comprendre une page de manuel. Cette référence en ligne décrit la syntaxe des arguments des utilitaires standard et présente la terminologie utilisée tout au long de POSIX.1-2017 pour décrire les arguments traités par les utilitaires. Cela vous informera aussi indirectement sur le sens réel des mots tels que paramètres, arguments, option d'argument ...
Le chef de toute page de manuel vous semblera moins crypté après avoir compris la notation des conventions d’utilité:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Pensez à ce que vous voulez faire.
Lorsque vous avez fait votre recherche, xargs
vous l'avez fait pour un pur plaisir, n'est-ce pas? Vous aviez un besoin spécifique qui consistait à lire la sortie standard et à exécuter des commandes en fonction de cette sortie.
Mais quand je ne sais pas quelle commande je veux?
Utilisez man -k
ou apropos
(ils sont équivalents). Si je ne sais pas comment trouver un fichier: man -k file | grep search
. Lisez les descriptions et trouvez-en une qui correspondra le mieux à vos besoins. Exemple:
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
Apropos fonctionne avec les expressions régulières par défaut (( man apropos
lisez la description et découvrez ce qu’il -r
fait), et sur cet exemple, nous recherchons toutes les pages de manuel où la description commence par "report".
Pour rechercher des informations liées à la lecture du traitement standard des entrées / sorties et atteindre xargs
comme option possible:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Toujours lire le DESCRIPTION
avant de commencer
Prenez un moment et lisez la description. En lisant simplement la description de la xargs
commande, nous apprendrons que:
xargs
lit à partir de STDIN et exécute la commande nécessaire. Cela signifie également que vous aurez besoin de connaissances sur le fonctionnement de l'entrée standard et sur la manière de la manipuler via des canaux pour chaîner des commandes.
- Le comportement par défaut est d'agir comme
/bin/echo
. Cela vous donne un petit conseil: si vous devez en chaîner plusieurs xargs
, vous n'avez pas besoin d'utiliser l'écho pour imprimer.
- Nous avons également appris que les noms de fichiers Unix peuvent contenir des blancs et des nouvelles lignes, que cela pourrait être un problème et que l'argument
-0
est un moyen d'éviter que les choses n'explosent en utilisant des séparateurs de caractères nuls. La description vous avertit que la commande utilisée en tant qu'entrée doit également prendre en charge cette fonctionnalité, et que GNU la prend en find
charge. Génial. Nous utilisons beaucoup de trouver avec xargs
.
xargs
s’arrêtera si le statut de sortie 255 est atteint.
Certaines descriptions sont très courtes et c’est généralement dû au fait que le logiciel fonctionne de manière très simple. Ne pensez même pas à sauter cette partie de la page de manuel ;)
Autres choses à faire attention ...
Vous savez que vous pouvez rechercher des fichiers avec find
. Il y a une tonne d'options et si vous ne regardez que le SYNOPSIS
, vous serez submergé par celles-ci. C'est juste la pointe de l'iceberg. En excluant NAME
, SYNOPSIS
et DESCRIPTION
, vous aurez les sections suivantes:
AUTHORS
: les personnes qui ont créé ou assisté à la création de la commande.
BUGS
: liste les défauts connus. Pourrait être que des limitations de mise en œuvre.
ENVIRONMENT
: Aspects de votre shell pouvant être affectés par la commande ou variables à utiliser.
EXAMPLES
ou NOTES
: explicite.
REPORTING BUGS
: Qui vous devrez contacter si vous trouvez des bugs sur cet outil ou dans sa documentation.
COPYRIGHT
: Personne qui a créé et désaveu du logiciel. Tous liés à la licence du logiciel lui-même.
SEE ALSO
Autres commandes, outils ou aspects de travail liés à cette commande et ne pouvant figurer dans aucune des autres sections.
Vous trouverez très probablement des informations intéressantes sur les aspects que vous souhaitez d'un outil dans la section exemples / notes.
Exemple
Je prendrai find
comme exemple les étapes suivantes , car ses concepts sont "plus simples" que ceux xargs
à expliquer (une commande trouve des fichiers et l’autre traite de l’exécution stdin et en pipeline de la sortie de la commande). Supposons simplement que nous ne savons rien (ou très peu) à propos de cette commande.
J'ai un problème spécifique: je dois rechercher chaque fichier avec l' .jpg
extension et avec 500 Ko (KiB = 1024 octets, communément appelé kibibyte), ou de taille supérieure dans un dossier de serveur ftp.
Tout d' abord, ouvrir le manuel: man find
. Le SYNOPSIS
est mince. Cherchons des choses à l'intérieur du manuel: Tapez /plus le mot que vous voulez ( size
). Il indexera un grand nombre d'entrées -size
qui compteront des tailles spécifiques. Est resté coincé. Je ne sais pas comment chercher avec "plus que" ou "moins que" une taille donnée, et l'homme ne me le montre pas.
Essayons-le et cherchons la prochaine entrée trouvée en appuyant sur n. D'ACCORD. Trouvé quelque chose d' intéressant: find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Peut-être que cet exemple montre -size +100M
qu’il trouvera des fichiers de 100 Mo ou plus. Comment pourrais-je confirmer? Aller à la tête de la page de manuel et chercher d’autres mots.
Encore une fois, essayons le mot greater
. En appuyant sur gnous mènera à la tête de la page de manuel. /greater
, et la première entrée est:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Super. Il semble que ce bloc du manuel a confirmé ce que nous soupçonnions. Cependant, cela ne s'appliquera pas uniquement à la taille des fichiers. Cela s'appliquera à tout ce n
qui peut être trouvé sur cette page de manuel (comme le dit la phrase: "Les arguments numériques peuvent être spécifiés comme").
Bien. Trouvons un moyen de filtrer par nom: g /insensitive
. Pourquoi? Insensible? Wtf? Nous avons un serveur ftp hypothétique, où les gens « que d' autres systèmes d' exploitation » pourrait donner un nom de fichier avec des extensions comme .jpg
, .JPG
, .JpG
. Cela nous mènera à:
-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.
Cependant, après avoir recherché, lname
vous verrez que cela ne cherchera que des liens symboliques. Nous voulons de vrais fichiers. La prochaine entrée:
-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.
Génial. Je n'ai même pas besoin de lire sur le sujet -name
pour voir que -iname
cette version de cet argument ne tient pas compte de la casse. Assemblons la commande:
Commander: find /ftp/dir/ -size +500k -iname "*.jpg"
Ce qui est implicite ici: savoir que le caractère générique ?
représente "n’importe quel caractère à une position unique" et *
représente "zéro ou plus de tout caractère". Le -name
paramètre vous donnera un résumé de cette connaissance.
Conseils applicables à toutes les commandes
Certaines options, mnémoniques et "style de syntaxe" parcourent toutes les commandes, ce qui vous permet de gagner du temps sans avoir à ouvrir la page de manuel. Ceux-ci sont appris par la pratique et les plus courants sont:
- Généralement,
-v
signifie verbeux. -vvv
est une variation "très très verbeuse" sur certains logiciels.
- Suivant le standard POSIX, il est généralement possible d’empiler un seul tiret. Exemple:
tar -xzvf
, cp -Rv
.
- Généralement
-R
et / ou -r
signifie récursif.
- Presque toutes les commandes ont une aide brève avec l'
--help
option.
--version
montre la version d'un logiciel.
-p
, sur copier ou déplacer des utilitaires signifie "préserver les autorisations".
-y
signifie OUI ou "procéder sans confirmation" dans la plupart des cas.
Notez que ce qui précède ne sont pas toujours vrais. Par exemple, le -r
commutateur peut signifier des choses très différentes pour différents logiciels. C'est toujours une bonne idée de vérifier et de s'assurer quand une commande peut être dangereuse, mais ce sont des valeurs par défaut courantes.
Valeurs par défaut des commandes.
À la partie pager de cette réponse, nous avons vu que less -is
c’est le pager de man
. Le comportement par défaut des commandes ne s'affiche pas toujours dans une section distincte des pages de manuel ou dans la section la mieux placée.
Vous devrez lire les options pour connaître les valeurs par défaut ou, si vous avez de la chance, taper /pager
vous mènera à cette information. Cela nécessite également que vous connaissiez le concept du pageur (un logiciel qui fait défiler la page de manuel), ce que vous ne pourrez acquérir qu’après de nombreuses pages de manuel.
Pourquoi est-ce important? Cela ouvrira votre perception si vous trouvez des différences de comportement de défilement et de couleur lors de la lecture man(1)
sous Linux ( less -is
pager) ou FreeBSD man(1)
par exemple.
Et que dire de la SYNOPSIS
syntaxe?
Après avoir obtenu toutes les informations nécessaires à l'exécution de la commande, vous pouvez combiner des options, des arguments d'option et des opérandes en ligne pour effectuer votre travail. Vue d'ensemble des concepts:
- Les options sont les commutateurs qui dictent un comportement de commande. " Faites ceci " " ne faites pas ceci " ou " agissez de cette façon ". Souvent appelé des commutateurs.
- Les arguments d'option sont utilisés dans la plupart des cas lorsqu'une option n'est pas binaire (on / off) comme
-t
sur mount, spécifiant le type d'un système de fichiers ( -t iso9660
, -t ext2
). " Faites ceci les yeux fermés " ou " nourrissez les animaux, mais uniquement les lions ". Aussi appelé arguments.
- Les opérandes sont des choses sur lesquelles vous souhaitez que cette commande agisse. Si vous utilisez
cat file.txt
, l’opérande est un fichier dans votre répertoire actuel et son contenu s’affiche STDOUT
. ls
est une commande où un opérande est optionnel. Les trois points après l'opérande vous indiquent implicitement que vous cat
pouvez agir sur plusieurs opérandes (fichiers) en même temps. Vous remarquerez peut-être que certaines commandes ont défini le type d'opérande qu'il utilisera. Exemple:cat [OPTION] [FILE]...
Trucs synopsis connexes:
Quand cette méthode ne fonctionnera-t-elle pas?
- Pages de manuel sans exemples
- Pages de manuel où les options ont une courte explication
- Lorsque vous utilisez des mots clés génériques comme
and
, to
, à l' for
intérieur des pages de manuel
- Pages de manuel non installées. Cela semble évident, mais si vous n’avez pas
lftp
installé (et ses pages de manuel), vous ne pouvez pas savoir qu’il s’agit d’une option appropriée en tant que client FTP sophistiqué en exécutant:man -k ftp
Dans certains cas, les exemples seront assez simples et vous devrez exécuter certaines exécutions de votre commande pour tester ou, dans le pire des cas, utiliser Google.
Autre: Langages de programmation et ses modules:
Si vous programmez ou créez simplement des scripts, gardez à l'esprit que certains langages ont leurs propres systèmes de pages de manuel, tels que perl
( perldocs
), python ( pydocs
), etc., contenant des informations spécifiques sur les méthodes / fonctions, les variables, le comportement et d'autres informations importantes sur le module. vous essayez d'utiliser et d'apprendre. Cela m'a été utile lorsque je créais un script pour télécharger des courriels IMAP non lus à l'aide du perl Mail::IMAPClient
module.
Vous devrez trouver ces pages de manuel spécifiques en utilisant man -k
ou en recherchant en ligne. Exemples:
[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,
);
... des tonnes d'autres choses ici, avec des sections comme une page de manuel normale ...
Avec python:
[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...
Ou bien, la fonction à l' help()
intérieur du shell python si vous voulez lire plus de détails sur un objet:
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: La wtf
commande peut vous aider avec les acronymes et fonctionne comme whatis
si aucun acronyme n'était trouvé sur sa base de données, mais ce que vous recherchez fait partie de la base de données man. Sur Debian, cette commande fait partie du bsdgames
paquet. Exemples:
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