Wie erinnerst du dich an Befehlsoptionen? [geschlossen]


13

Ich bin gespannt, mit welchem ​​Trick Sie sich Optionen für verschiedene Befehle merken können. Das ständige Nachschlagen von Manpages ist zeitaufwändig und nicht so cool!


2
Unter anderem: unix.stackexchange.com/questions/138720/… ist praktisch, um eine benutzerdefinierte Zusammenfassung von Dingen zu erstellen, die ich gewöhnlich vermassele oder vergesse. Übrigens, je mehr man Manpages liest, desto mehr schätzt man sie.
Goldlöckchen

Ich habe das Gefühl, dass ich irgendwann alles vergesse. Ich habe mich gefragt, ob ich der einzige bin, der Schwierigkeiten hat, sich an alle nützlichen Optionen zu erinnern. Ihr Vorschlag scheint eine gute Lösung zu sein. Danke!
Atul

3
Lesen manSeiten ist sehr cool ... :)
jasonwryan

1
F: Wie kommen Sie zur Carnegie Hall ? Eine Übung!
Übelsuppe

4
Ich denke, das verdient eine XKCD: xkcd.com/1168
Darkhogg

Antworten:


39

Der Trick ist einfach: Sie tun es einfach nicht. Es ist Zeitverschwendung und einfach nicht notwendig. Das Auswendiglernen von Befehlsoptionen ist keine besonders nützliche Fähigkeit. Es ist viel wichtiger zu verstehen, wie Dinge im Allgemeinen funktionieren und eine vage Vorstellung davon zu haben, welche Tools überhaupt existieren und wofür Sie sie verwenden. Eine sehr wichtige Fähigkeit dabei ist, Dinge herauszufinden, die Sie noch nicht kennen.

Manpages sind zeitaufwändig? Nicht so. Es ist nicht so, dass man sie lesen muss - zumindest nicht jedes Mal - es gibt eine Suchfunktion. Also, wenn ich mich nicht erinnere, welche kryptische Option für hdparmdas Deaktivieren des Leerlauf-Timers auf einigen WD-Datenträgern geeignet war, tue ich man hdparmund /idle3und hey, das war es -J. So etwas nachzuschauen ist so schnell, dass ich mich nicht daran erinnere, es danach getan zu haben.

Stellen Sie sich vor, jemand merkt sich tatsächlich alle hdparmOptionen. Was für eine Zeitverschwendung.

Es ist in Ordnung, wenn Sie sich gerade an Optionen erinnern, weil Sie diese häufig verwenden. Das passiert automatisch, ohne darüber nachzudenken. Aber eigentlich bewusst Zeit darauf verwenden, sie auswendig zu lernen ... wozu soll das gut sein? Ein Papiertest?


4
Upvoted: Die Fähigkeit besteht darin, das zu finden, was Sie brauchen, nicht auswendig zu lernen. man hdparm | less -p idle3ist auch eine praktische Möglichkeit, um zum gewünschten Begriff zu springen ...
jasonwryan

Ich stimme dieser Antwort uneingeschränkt zu, obwohl ich der Meinung bin, dass es normal ist, die wenigen gängigen Optionen für gängige Programme auswendig zu lernen, nur weil Sie sie so oft verwenden. Wie rm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -a, usw. (die Liste variiert von Person zu Person).
David Z

8

Zsh hat die Funktion run-help , die standardmäßig an gebunden ist Alth. Mit dieser Funktion können Sie einen Befehl mit vielen oder komplexen Optionen eingeben, an die Sie sich nur schwer erinnern können. rsyncAnschließend können Sie die manSeite dieses Befehls öffnen. So:

 rsync Alth

Lesen Sie die manSeite und finden Sie heraus, welche Schalter Sie benötigen. Drücken Sie qund kehren Sie zu Ihrer Eingabeaufforderung zurück, genau dort, wo Sie aufgehört haben. Dann können Sie den Befehl mit den erforderlichen Optionen ausführen:

rysnc -azP file dir/

Wie das Wiki feststellt:

Die Funktion kann weiter angepasst werden, indem Hilfsfunktionen des Formulars run-help-command definiert werden. In der Standarddistribution stehen drei solcher Funktionen zur Verfügung: run-help-git, run-help-svk und run-help-svn.

Ähnliches gilt bashfür, bash-completedas viele Parameteroptionen für viele Befehle bereitstellt.
Ericx

2
@ericx "Ähnlich" könnte es ein wenig übertreiben ... Zsh hat auch die Fertigstellung, dies ist ein Schritt weiter.
Jasonwryan

Hey ... ich habe Leute prahlen hören, aber ich habe es nie versuchtzsh
Ericx

Die Vervollständigung von @ericx unterstützt auch bashnicht das Hinzufügen von Beschreibungen zur Vervollständigungsliste oder das Gruppieren von Einträgen ( --classify -F -- append file type indicatorsz. B. in der GNU-Vervollständigung von zsh) und ist daher bei weitem nicht so nützlich wie die von zsh.
Stéphane Chazelas

** root @ milicent ** ~ / tmp ** Di Aug 05 09:24:55 # pkg info (-e -d -f -l -o -p -D) -r [Zeigt die umgekehrten Abhängigkeiten an] (-e -d -r -f -o -p -D) -l [Zeigt alle Dateien an] (-e -d -r -l -f -p -D) -o [Zeigt den Ursprung an] (-e -d -r - l -o -f -D) -p [Zeigt das Präfix an] (-e -d -r -l -o -p -D) -f [Zeigt die vollständigen Informationen an] (-e -d -r -l -o -p -f) -D [Zeigt die Meldung an] (-e -f -r -l -o -p -D) -d [Zeigt die Abhängigkeiten an] (-f -d -r -l -o -p -D) -e [Gibt 0 zurück, wenn <pkg-name> installiert ist] (-g -X -a -F) -x [Pakete verarbeiten, die dem Regex-Muster entsprechen] (-g -x -X -F) -a [Alle Pakete verarbeiten
Ericx

4

Die meisten Befehle haben --help als Kurzreferenz und es reicht normalerweise aus, um daran zu erinnern, was ich früher wusste.

Das heißt, haben Sie die Angewohnheit zu schreiben - Hilfe statt -h oder sogar -?. Sie wissen nie, was -h ist, bevor Sie die Verwendungsausgabe oder die Handbuchseite anzeigen. Im schlimmsten Fall könnte das -h eine Abkürzung für - gefährliche-automatische-Zerstörung sein.


2
... Die meisten Befehle auf GNU-Systemen . Befehle auf Unix-Systemen haben normalerweise keine --help. -?Bedürfnisse zitiert mit zsh, csh, tcshoder fishoder , wenn es Dateien , deren Namen werden -durch ein einzelnes Zeichen im aktuellen Verzeichnis gefolgt. -:kann dort vorzuziehen sein.
Stéphane Chazelas

Nun ja, viele Nicht-GNU-Systeme haben so entsetzliche Benutzungsausgaben, dass es keinen Sinn macht, sie auch nur anzusehen. In diesem Fall siehe Manpages und viel Glück beim Auswendiglernen, da sonst nichts funktioniert.
Kerolasa

Msgstr "Hab die Gewohnheit zu schreiben". Fehlendes Wort?
Faheem Mitha

Fehlendes Komma. Da es sich nur um ein Zeichen handelt, kann ich es auf der Website leider nicht hinzufügen.
Mark

4

Die Verwendung eines sehr langen Befehlsverlaufs und das Durchsuchen ist sehr nützlich.

Grundsätzlich sammle ich alle Shell-Verlaufsdateien und gehe sie durch.

Die gefundenen Ergebnisse sind in vielen Fällen sehr nützlich, da es einfach ist, nach guten Stichwörtern zu suchen.
Wenn Sie nach einem bestimmten Argument suchen, das Sie wie eine URL verwendet haben, finden Sie auch die zugehörigen Befehle und Optionen. Wenn Sie nach bestimmten Optionen suchen, finden Sie möglicherweise auch relevante Argumente.


1

Eine Option, die ich mag, ist das Erstellen von Aliasen mit den gleichen oder ähnlichen Optionen, z

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

Auf diese Weise haben Sie eine schöne Verknüpfung, an die Sie sich schnell erinnern können, die jedoch auch Informationen zu den tatsächlich darin enthaltenen Optionen enthält.

Ein weiterer Ansatz bei Aliasen besteht darin, die am häufigsten verwendeten Optionen auszuwählen und einen superkurzen Alias ​​zu erstellen, der sie verwendet. Zum Beispiel lsmache ich das fast immer, lund das liegt daran, dass ich Folgendes habe:

alias l='ls -alFtrG'

Eine andere Möglichkeit ist, einfach die gewünschten Optionen in den Basisbefehl einzubringen, z

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

Schließlich üben, üben, üben und Geduld. Geben Sie häufig verwendete Optionen weiter ein, und Sie werden sie schließlich lernen. Die häufigsten in Tagen, andere in Wochen und ja, einige brauchen Jahre, um Ihnen bekannt zu werden. Stellen Sie sich das als Vergnügen vor, denn die Unix-Programmierung wird Sie noch lange unterhalten.

Eine andere Option, die mir gefällt, ist ein Alias, der das Durchsuchen meines Verlaufs erleichtert. Dafür habe ich zwei ähnliche Aliasnamen:

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

Mit diesen kann ich nach Verwendungen eines Befehls suchen, zum Beispiel:

hg lsZeigt alle aktuellen Verwendungen von ls aus der Geschichte
hga lsan. Zeigt alle Verwendungen von ls aus meiner gesamten Geschichte an.

Ich entwickelte hg, nachdem ich herausgefunden hatte, dass hga zu viel zeigte.


4
Wenn OP sich nicht erinnern kann, was es rm -ivtut, wird sich OP wahrscheinlich auch nicht erinnern, was es rmivtut. Ich glaube nicht, dass der Bindestrich das Problem ist.
Bis zum

Ich würde persönlich alias rm -ivzu safe_deleteoderrm_prompt
slebetman

Danke Jungs! Ich schätze, ich habe mir zu viele Sorgen gemacht, weil ich mich an mehr erinnere als an mehr zu lernen. Ich werde lernen, wann man die Waffe benutzt, anstatt zu lernen, wie groß und schnell die Kugel ist! Glück, dass so viele gute Linux-Leute hier sind. Ein Hoch auf Unix / Linux !!
Atul

1

Ich mache normalerweise:

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

Oder eine Variation davon. Mit einigen greps können Sie -C / A / B für angeben Kontext , nach und vor sind. Wenn nicht, nlund sedkann ziemlich gut zusammenpassen:

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

Die gleichen Techniken funktionieren mit --helpMenüs, wenn Sie sie haben, aber Sie müssen möglicherweise eine ausführen, ${CMD} --help 2>&1 | ..filter..da dies eine ziemlich übliche Vorgehensweise ist, um solche Dinge zu drucken stderr.

Wie auch immer, ich denke die Moral der Geschichte ist, erinnere mich zumindest man und grep. Vielleicht den Rest nicht schwitzen.


1
+1. Ich schreibe oft grepManpages, wenn ich nach einem bestimmten Feature suche, das ist ziemlich praktisch.
John WH Smith

Die -A -B -COptionen von grep können auch nützlich sein, z. B.man bash | grep -A 25 PROMPTING$
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.