En cherchant un autre problème, je suis tombé sur une commande ,
locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"
que je voulais en savoir plus sur. Alors j'ai couru man xargs
et obtenir le résultat suivant:
XARGS(1) General Commands Manual XARGS(1)
NAME
xargs - build and execute command lines from standard input
SYNOPSIS
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
[-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
[--interactive] [--verbose] [--exit] [--no-run-if-empty]
[--arg-file=file] [--show-limits] [--version] [--help] [command
[initial-arguments]]
DESCRIPTION
This manual page documents the GNU version of xargs...
J'essaie de mieux utiliser la documentation pour en savoir plus sur les programmes Linux, mais cette section "Synopsis" est intimidante pour les nouveaux utilisateurs. Cela ressemble littéralement à du charabia par rapport à man locate
ou man free
.
Jusqu'à présent, je comprends que les crochets désignent des options et les crochets imbriqués des options facultatives. Mais comment suis-je censé induire une commande valide avec ça?
Je ne demande pas d'aide avec xargs ici. Je cherche de l’aide pour interpréter une page de manuel afin de comprendre les commandes compliquées. Je souhaite arrêter de faire des blogs Web indexés par Google et de l'aide personnelle d'autrui ma première approche d'apprentissage des commandes Linux.
man man
man man
luman intro
.Réponses:
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 lesless
oumore
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) commeman(1)
, expliquez-la dans la section Options:Sous FreeBSD et OpenBSD, il ne s’agit que d’éditer la
MANPAGER
variable d’environnement car ils l’utiliseront principalementmore
, 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
etmost
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 lesvi
liaisons jet k) est essentielle lors de la navigation dans les pages de manuel. Appuyez sur hpendant l'utilisationless
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é:
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
ouapropos
(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 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:Toujours lire le
DESCRIPTION
avant de commencerPrenez 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./bin/echo
. Cela vous donne un petit conseil: si vous devez en chaîner plusieursxargs
, vous n'avez pas besoin d'utiliser l'écho pour imprimer.-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 enfind
charge. Génial. Nous utilisons beaucoup de trouver avecxargs
.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 leSYNOPSIS
, vous serez submergé par celles-ci. C'est juste la pointe de l'iceberg. En excluantNAME
,SYNOPSIS
etDESCRIPTION
, 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
ouNOTES
: 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 ceuxxargs
à 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
. LeSYNOPSIS
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: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 à: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: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:
-v
signifie verbeux.-vvv
est une variation "très très verbeuse" sur certains logiciels.tar -xzvf
,cp -Rv
.-R
et / ou-r
signifie récursif.--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 deman
. 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 FreeBSDman(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:
-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.cat file.txt
, l’opérande est un fichier dans votre répertoire actuel et son contenu s’afficheSTDOUT
.ls
est une commande où un opérande est optionnel. Les trois points après l'opérande vous indiquent implicitement que vouscat
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?
and
,to
, à l'for
intérieur des pages de manuellftp
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 duperl Mail::IMAPClient
module.Vous devrez trouver ces pages de manuel spécifiques en utilisant
man -k
ou en recherchant en ligne. Exemples:... des tonnes d'autres choses ici, avec des sections comme une page de manuel normale ...
Avec python:
Ou bien, la fonction à l'
help()
intérieur du shell python si vous voulez lire plus de détails sur un objet:Bonus: La
wtf
commande peut vous aider avec les acronymes et fonctionne commewhatis
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 dubsdgames
paquet. Exemples:la source
man find | grep ...
. J'aimeman command | sed -n '/^[[:space:]]*-/,/^$/p'
man
?" Merci et bien fait.man
page bien sûr.Ceci est assez bien expliqué dans
man man
:Quant à la façon dont vous êtes censé écrire une commande valide à partir de cela, eh bien, vous ne l'êtes pas. Le synopsis est utile une fois que vous savez comment fonctionne une commande. Cela peut vous aider à vous rafraîchir la mémoire. Afin de comprendre le fonctionnement de la commande, vous devez lire la page de manuel. En particulier les descriptions des options et la section des exemples.
Parfois, le synopsis suffit. Par exemple, dans
man ls
:D'autres fois, il est inutile si vous ne savez pas déjà utiliser la commande en question. Par exemple
man dd
:Donc, en conclusion, ne vous inquiétez pas si vous ne recevez pas le synopsis. C'est normal. Lisez la page de manuel elle-même.
la source
Quelques bases pour comprendre le synopsis
[foo]
représente un argument ou un paramètre optionnel.[foo [ bar ] ]
syntaxe est utilisée, vous pouvez utiliser foo et ajouter bar.[ -S size ]
, ce qui indique que l'argument -S attend une taille obligatoire.Par exemple :
foo [-S size ] filename ...
veux dire
foo
-S
peut être utilisé, vous devez le diresize
(nom donnez-lui un indice)filename
(cela vous donne un indice aussi, voirman mkdir
)...
vous disent que vous pouvez utiliser plusieurs fichiers.Vous devez toujours aller en profondeur dans la page de manuel pour comprendre l'option (dans l'exemple ci-dessus, de quoi
-S size
s'agit-il)la source
man
les pages sont normalement affichées avec deless
nos jours. Cela permet de chercher à travers eux. Je ne voudrais pas m'embêter avec le synopsis, surtout pas parce que vous avez une ligne de commande particulière que vous voulez comprendre.Appuyez sur /et commencez à taper
-I
, puis Enter. Le premier hit sera dans le synopsis, le second (utiliser npour suivant) vous donnera l'explication détaillée pour-I
.la source
Un élément clé à retenir est que vous ne pouvez pas consulter le manuel d'une seule commande, dans le cas de commandes qui exécutent d'autres commandes.
Pour votre exemple de commande
Vous avez besoin d’informations sur non seulement
xargs
mais aussibash
et[
(cela peut être dans latest
page de manuel). Vous aurez peut-être également besoin d'informations sur votre shell (probablement aussi bash) pour les règles de citation, car votre commande inclut une chaîne entre guillemets complexe. Je peux déjà vous dire que l'argument cité est faux (et faux d'une manière qui n'apparaîtra que lorsque vous rencontrerez un fichier avec des espaces dans le nom); l'intérieur"{}"
devrait probablement être'{}'
.Alors d' abord vous référer à la page de manuel et xargs voir
[-I replace-str]
pour ce que-I {}
signifie, et[command [initial-arguments]]
pour ce quibash
et tout après cela signifie. Ensuite, vous vous référez à labash
page de manuel pour savoir quoi-c
, etc.la source
Ajoutant aux bonnes réponses déjà données:
1) Si vous êtes intéressé par un utilitaire GNU, en particulier ceux comme
sed
etgrep
, parfois, l’utilisation de lainfo
commande affichera une version considérablement plus étendue des informations de la commande.sed
, par exemple, contient une section détaillée sur la façon d’écrire des expressions régulières et une autre section avec des exemples d’utilisation très complexes.2) C'est un "manuel". Un manuel est principalement conçu pour vous aider à vous rappeler les détails de quelque chose que vous comprenez déjà. Il est conçu pour que vous puissiez obtenir rapidement les détails dont vous avez besoin et en sortir. (Et bien trop d’entre eux n’ont pas d’exemples d’utilisation ou ne sont que triviaux.)
Quand je dois apprendre quelque chose de nouveau, même une petite caractéristique d'une commande qui n'est pas clair pour moi, je vais sur le web et recherche en utilisant les meilleurs mots - clés que je peux penser (par exemple
Linux
xargs
) et ajouter le mothowto
,examples
oututorial
. C'est très souvent très productif.J'utilise habituellement duckduckgo parce que cela maintient ma vie privée, mais si j'ai besoin de davantage de contrôle sur mes recherches, j'utilise Google, car je peux l'indiquer simplement pour effectuer une recherche sur un site Web ou pour ne renvoyer que les résultats de l'année précédente. (Il a beaucoup d'autres options de recherche avancée. Vous pouvez les Google.;))
Un autre conseil:
Pour les commandes que je référence souvent, j'enregistre la page de manuel dans un fichier texte
et chargez ce fichier dans une autre fenêtre de mon éditeur de texte afin que je puisse alterner, copier / coller, etc. Je fais en général lire le fichier en lecture seule, je ne finis donc pas par le modifier par accident, mais comme c'est mon copie personnelle, je pourrais la modifier comme je le voulais, en ajoutant des balises pour pouvoir trouver une section plus facilement ou même en ajoutant mes propres notes ou exemples.
Le seul inconvénient est que la page de manuel d'origine peut être mise à jour et que ma copie est statique.
la source
Pour obtenir une aide rapide avec votre commande spécifique, vous pouvez utiliser Explain Shell . Par exemple votre commande . Une fois que vous avez compris pour la première fois comment cela fonctionne, passez à la page de manuel, comme le recommandent d’autres réponses.
la source
Il existe plusieurs outils utiles pour en savoir plus sur les commandes Linux:
cheat
affichera l'option fréquemment utilisée pour une ligne de commande. Vous pouvez aussi ajouter votre propre objetcommand + option
à affichercheat
pour une commande spécifique.bropages
outil fournit quelques exemples pour une ligne de commande, il est possible d’ajouter votre propre exemple ou d’augmenter / augmenter le nombre de votes après l’obtention du code de vérificationbro thanks
. La commande doit voter va apparaître en haut de labro
page.la source
Je suggère
tldr
un outil complet semblable à l'homme. Pages de manuel simplifiées et axées sur la communauté. Dans Ubuntu, vous pouvez l'installer via un composant logiciel enfichable, mais il existe également des versions pour d'autres distributions. Il vous fournit également plusieurs exemples d'utilisations courantes. 100% recommandé.la source
> Je cherche de l’aide pour interpréter une page de manuel afin de comprendre les commandes complexes.
Je pense que c'est le malentendu ici. Ce qui rend Linux / UNIX si puissant, c’est que vous pouvez construire des commandes très longues et efficaces en redirigeant par exemple le stdout d’une commande (ici,
locate
) vers le stdin d’un autre (ici,xargs
) via un tube (|
). Par conséquent, comme Random832 l'a dit correctement, vous ne trouverez pas une seule page de manuel expliquant le fonctionnement de votre exemple de commande.Je vous recommande de lire un guide de script pour le shell Linux; le Guide Bash-script avancé est un excellent document. S'il vous plaît ne soyez pas intimidé par cela; La maîtrise de Linux nécessite des années et est un processus sans fin, mais vous pouvez apprendre les bases en un temps raisonnable.
Reportez-vous ensuite aux pages de manuel lorsque vous avez besoin de connaître les détails d’une commande spécifique.
Une fois que vous en avez l'essentiel, Commandlinefu et Bash One-Liners valent également la peine d'être lus pour obtenir de bons exemples.
la source
Pour rechercher quelque chose de particulier dans les commandes d'une page de manuel, vous pouvez utiliser:
Mais pour rechercher des commutateurs (par exemple
-n
), vous devez l’utiliser de la manière suivante:la source