Comment vous souvenez-vous des options de commande? [fermé]


13

Je suis curieux de savoir quelle astuce vous utilisez pour mémoriser les options des différentes commandes? La recherche permanente de pages de manuel prend du temps et n'est pas si cool!


2
Entre autres choses: unix.stackexchange.com/questions/138720/… est pratique pour créer un résumé personnalisé des choses que je bousille ou oublie habituellement. BTW, plus vous lisez de pages de manuel, plus vous en apprenez à les apprécier.
goldilocks

Je sens quelque temps que j'oublie tout. Je me demandais si je suis le seul à avoir du mal à me souvenir de toutes les options utiles sur le dessus de la tête ... Votre suggestion semble être une bonne solution ... Merci!
Atul

3
La lecture des manpages est très cool ... :)
jasonwryan

1
Q: Comment vous rendez-vous au Carnegie Hall ? Une pratique!
evilsoup

4
Je pense que cela mérite un peu de XKCD: xkcd.com/1168
Darkhogg

Réponses:


39

L'astuce est simple: vous n'avez tout simplement pas. C'est une perte de temps et tout simplement pas nécessaire. La mémorisation des options de commande n'est pas une compétence particulièrement utile. Il est beaucoup plus important de comprendre comment les choses fonctionnent en général et d'avoir une vague idée des outils qui existent en premier lieu et de leur utilisation. Une compétence très importante ici est de savoir comment découvrir des choses que vous ne connaissez pas encore.

Les pages de manuel prennent du temps? Mais non. Ce n'est pas comme si vous deviez les lire - au moins, pas à chaque fois - il y a une fonction de recherche. Donc, si je ne me souviens pas quelle option cryptique était celle pour hdparmdésactiver le temporisateur inactif sur certains disques WD, je le fais man hdparmet /idle3et bon, c'était le cas -J. Regarder des trucs comme ça est si rapide que je ne me souviens même pas de l'avoir fait après.

Imaginez que quelqu'un mémorise réellement toutes les hdparmoptions. Quelle perte de temps.

C'est bien si vous vous souvenez simplement des options parce que vous les utilisez fréquemment. Cela se produit automatiquement sans même y penser. Mais en fait, passer consciemment du temps à les mémoriser ... à quoi cela est-il censé être bon? Un test papier?


4
Upvoted: la compétence consiste à trouver ce dont vous avez besoin, pas la mémoire par cœur. man hdparm | less -p idle3est également un moyen pratique de passer au terme souhaité ...
jasonwryan

Je suis entièrement d'accord avec cette réponse, bien que je pense qu'il convient de souligner qu'il est normal d'avoir les quelques options les plus courantes pour les programmes communs mémorisés, simplement parce que vous les utilisez si souvent. Comme rm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -a, etc. (la liste varie d' une personne à).
David Z

8

Zsh a la fonction run-help , par défaut liée à Alth. Avec cette fonction, vous pouvez commencer à taper une commande avec de nombreuses options complexes qui sont difficiles à retenir, comme rsyncpar exemple, puis manouvrir la page de cette commande . Donc:

 rsync Alth

lisez la manpage et déterminez les commutateurs dont vous avez besoin, appuyez sur qpuis vous revenez à votre invite de commande, exactement là où vous vous étiez arrêté, prêt à terminer la commande avec les options requises:

rysnc -azP file dir/

Comme le note le wiki:

La fonction peut être davantage personnalisée en définissant des fonctions d'assistance de la forme run-help-command. Trois fonctions de ce type sont disponibles dans la distribution standard: run-help-git, run-help-svk et run-help-svn.

De même basha bash-completequi fournira un grand nombre d'options de paramètres pour un grand nombre de commandes.
ericx

2
@ericx "Similairement" pourrait surestimer un peu ... Zsh a également terminé, c'est un pas en avant.
jasonwryan

Hé ... J'ai entendu des gens se vanter, mais je n'ai jamais essayézsh
Eric

L'achèvement de @ericx, également, bashne prend pas en charge l'ajout de descriptions à la liste d'achèvement, ou le regroupement des entrées ( --classify -F -- append file type indicatorspar exemple dans l'achèvement GNU ls de zsh) n'est donc pas aussi utile que celui de zsh.
Stéphane Chazelas

** root @ milicent ** ~ / tmp ** mar août 05 09:24:55 # pkg info (-e -d -f -l -o -p -D) -r [Affiche les dépendances inverses] (-e -d -r -f -o -p -D) -l [Affiche tous les fichiers] (-e -d -r -l -f -p -D) -o [Affiche l'origine] (-e -d -r - l -o -f -D) -p [Affiche le préfixe] (-e -d -r -l -o -p -D) -f [Affiche les informations complètes] (-e -d -r -l -o -p -f) -D [Affiche le message] (-e -f -r -l -o -p -D) -d [Affiche les dépendances] (-f -d -r -l -o -p -D) -e [Renvoie 0 si <pkg-name> est installé] (-g -X -a -F) -x [Traite les packages qui correspondent au modèle regex] (-g -x -X -F) -a [Traite tout le package
ericx

4

L'utilisation d'un historique de commandes très long et sa recherche sont très utiles.

Je recueille essentiellement tous les fichiers d'historique du shell et les grep à travers eux.

Les résultats trouvés sont dans de nombreux cas très utiles, car il est facile de rechercher de bons mots clés.
En recherchant un argument spéciffique que vous avez utilisé, comme une URL, vous trouvez également les commandes et options associées. Et en recherchant des options spécifiques, vous pouvez également trouver des arguments pertinents.


4

La plupart des commandes ont --help pour une référence rapide, et il suffit généralement de rappeler ce que je connaissais auparavant.

Cela dit, prenez l'habitude d'écrire --help au lieu de -h ou même -?. Vous ne savez jamais ce qu'est -h avant de regarder la sortie d'utilisation ou la page de manuel. Dans le pire des cas, -h pourrait être l'abréviation de --hazardous-automatic-destruction.


2
... La plupart des commandes sur les systèmes GNU . les commandes sur les systèmes Unix n'en ont généralement pas --help. -?besoins avec citant zsh, csh, tcshou fishou si des fichiers dont le nom sont -suivis d'un seul caractère dans le répertoire courant. -:peut être préférable là-bas.
Stéphane Chazelas

Eh bien .. de nombreux systèmes non GNU ont des sorties d'utilisation si épouvantables qu'ils sont même inutiles. Dans ce cas, voir les pages de manuel et la meilleure chance de mémoriser par hard coz rien d'autre ne fonctionnera.
kerolasa

"Cela dit, prenez l'habitude d'écrire". Mot manquant?
Faheem Mitha

1

Une option que j'aime est de créer des alias qui ont des options identiques ou similaires, par exemple

alias rmi='rm -i'
alias rmiv='rm -iv'
alias rmv='rm -v'
alias cpr='cp -r'
alias cprv='cp -rv'

De cette façon, vous disposez d'un joli raccourci dont vous vous souviendrez rapidement, mais qui conservera également des informations sur les options réelles qu'il reflète.

Une autre approche avec les alias consiste à choisir les options les plus courantes et à créer un alias super court qui les utilise. Par exemple, lsje le fais presque toujours let c'est parce que j'ai:

alias l='ls -alFtrG'

Une autre option consiste à simplement apporter les options que vous aimez à la commande de base, par exemple

alias ls='ls -F --color=always'

Enfin pratique, pratique, pratique et patience. Continuez à taper les options courantes et vous les apprendrez éventuellement. Les plus communs en jours, d'autres en semaines et oui certains mettent des années à se faire connaître. Considérez cela comme un régal dans la mesure où la programmation Unix continuera de vous divertir pendant longtemps.

Une autre option que j'aime est un alias pour faciliter la recherche dans mon historique et pour cela j'ai deux alias similaires:

alias hg='history | tail -200 | grep -i'
alias hga='history | grep -i'

Celles-ci me permettent de rechercher les utilisations d'une commande, par exemple:

hg lsmontrera toutes les utilisations récentes de ls de l'histoire
hga lsmontrera toutes les utilisations de ls de toute mon histoire.

J'ai développé le hg après avoir trouvé que le hga avait tendance à en montrer trop.


4
Si OP ne se souvient pas de ce qui se rm -ivpasse, OP ne se souviendra probablement pas non plus de ce qui se rmivpasse. Je ne pense pas que ce soit le trait d'union qui soit le problème.
tobyink

Je serais personnellement alias rm -ivà safe_deleteourm_prompt
slebetman

Merci les gars! J'imagine que je m'inquiétais trop de me souvenir de plus que d'en apprendre plus .. J'apprendrai quand utiliser l'arme au lieu d'apprendre quelles sont les dimensions et la vitesse de la balle! Heureusement d'avoir autant de bons linux ici .. Bravo à unix / linux !!
Atul

1

Je fais généralement:

man ${CMD} | grep 'what was I thinking about?'

Ou une variante de celui-ci. Avec certains greps, vous pouvez spécifier -C / A / B pour le contexte , après et avant respectivement. Sinon, nlet sedpeut être assez bien assorti:

man hdparm |                      #hard to forget
nl -bp'idle3' -nln -w1 |          #I had to grep man to put this together
sed -n '/^[0-9]/{N;N;N;s///p}'    #no print until line begins w/ number, next,next,next

           Drive's "idle3" timeout value.  This timeout
            controls how often the drive parks its heads
            and  enters  a  low power consumption state.
            The factory default is  eight  (8)  seconds,
           zero (0) to disable the WD idle3 timer  com‐
            pletely (NOT RECOMMENDED!).

     -k     Get/set  the "keep_settings_over_reset" flag

Les mêmes techniques fonctionnent avec les --helpmenus si vous en avez, mais vous devrez peut-être faire un ${CMD} --help 2>&1 | ..filter..car c'est une pratique assez standard pour imprimer de telles choses stderr.

Quoi qu'il en soit, je suppose que la morale de l'histoire est, rappelez-vous au moins man et grep. Peut-être ne transpire pas le reste.


1
+1. J'ai souvent des greppages de manuel lorsque je recherche une fonctionnalité particulière, c'est assez pratique.
John WH Smith

Les -A -B -Coptions de grep peuvent également être utiles, par exempleman bash | grep -A 25 PROMPTING$
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.