¿Cómo recuerdas las opciones de comando? [cerrado]

13

Tengo curiosidad por saber qué truco usas para recordar las opciones de varios comandos. ¡Buscar páginas de manual todo el tiempo lleva mucho tiempo y no es tan genial!

Atul
fuente
2
Entre otras cosas: unix.stackexchange.com/questions/138720/… es útil para crear un resumen personalizado de cosas que habitualmente arruino u olvido. Por cierto, cuanto más lees las páginas man, más llegas a apreciarlas.
Ricitos de oro
Alguna vez siento que me estoy olvidando de todo. Me preguntaba si soy el único que tiene dificultades para recordar todas las opciones útiles en la parte superior de la cabeza ... Su sugerencia parece una buena solución ... ¡Gracias!
Atul
3
Leer manpáginas es genial ... :)
jasonwryan
1
P: ¿Cómo se llega al Carnegie Hall ? ¡Una práctica!
evilsoup
44
Creo que esto merece algo de XKCD: xkcd.com/1168
Darkhogg

Respuestas:

39

El truco es simple: simplemente no lo haces. Es una pérdida de tiempo y simplemente no es necesario. Memorizar las opciones de comando no es una habilidad particularmente útil. Es mucho más importante entender cómo funcionan las cosas en general y tener una idea vaga de qué herramientas existen en primer lugar y para qué las usas. Una habilidad muy importante aquí es saber cómo descubrir cosas que aún no sabes.

¿Las páginas man requieren mucho tiempo? No tan. No es que tenga que leerlos , al menos, no siempre, hay una función de búsqueda. Así que si no me acuerdo qué opción críptico era el uno para hdparmPara desactivar el temporizador de inactividad en algunos discos WD, lo hago man hdparmy /idle3y bueno, era -J. Buscar cosas así es tan rápido que ni siquiera recuerdo haberlo hecho después.

Imagine que alguien realmente memoriza todas las hdparmopciones. Que perdida de tiempo.

Está bien si solo recuerdas las opciones porque las usas con frecuencia. Eso sucede automáticamente sin siquiera pensarlo. Pero, de hecho, dedicar tiempo conscientemente a memorizarlos ... ¿para qué se supone que es bueno? ¿Una prueba de papel?

Frostschutz
fuente
44
Upvoted: la habilidad es encontrar lo que necesita, no memoria de memoria. man hdparm | less -p idle3también es una forma práctica de saltar al término deseado ...
jasonwryan
Estoy totalmente de acuerdo con esta respuesta, aunque creo que vale la pena enfatizar que es normal tener memorizadas las pocas opciones más comunes para los programas comunes, solo porque las usas con tanta frecuencia. Como rm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -a, etc (la lista varía de persona a persona).
David Z
8

Zsh tiene la función run-help , por defecto vinculada a Alth. Con esta función, puede comenzar a escribir un comando con muchas o complejas opciones que son difíciles de recordar, como rsyncpor ejemplo, y luego manabrir la página de ese comando . Entonces:

 rsync Alth

lea la manpágina y averigüe qué interruptores necesita, presione qy luego volverá a su símbolo del sistema, exactamente donde lo dejó, listo para completar el comando con las opciones necesarias:

rysnc -azP file dir/

Como señala la wiki:

La función se puede personalizar aún más definiendo las funciones auxiliares del formulario run-help-command. Hay tres funciones disponibles en la distribución estándar: run-help-git, run-help-svk y run-help-svn.
jasonwryan
fuente
Del mismo modo bashtiene bash-completeque suministrar una gran cantidad de opciones de parámetros para una gran cantidad de comandos.
ericx
2
@ericx "Similarmente" podría estar exagerando un poco ... Zsh también se ha completado, esto es un paso adelante.
jasonwryan
oye ... escuché a la gente presumir, pero nunca lo intentézsh
ericx
La finalización de @ericx, además, bashno admite agregar descripciones a la lista de finalización ni agrupar entradas ( --classify -F -- append file type indicatorspor ejemplo, en la finalización de GNU ls de zsh), por lo que no es tan útil como la de zsh.
Stéphane Chazelas
** root @ milicent ** ~ / tmp ** Tue Aug 05 09:24:55 # pkg info (-e -d -f -l -o -p -D) -r [Muestra las dependencias inversas] (-e -d -r -f -o -p -D) -l [Muestra todos los archivos] (-e -d -r -l -f -p -D) -o [Muestra el origen] (-e -d -r - l -o -f -D) -p [Muestra el prefijo] (-e -d -r -l -o -p -D) -f [Muestra la información completa] (-e -d -r -l -o -p -f) -D [Muestra el mensaje] (-e -f -r -l -o -p -D) -d [Muestra las dependencias] (-f -d -r -l -o -p -D) -e [Devuelve 0 si <pkg-name> está instalado] (-g -X -a -F) -x [Procesar paquetes que coinciden con el patrón regex] (-g -x -X -F) -a [Procesar todo el paquete
ericx
4

Usar un historial de comandos muy largo y buscarlo es muy útil.

Básicamente recopilo todos los archivos de historial de shell y los reviso.

Los resultados encontrados son en muchos casos muy útiles, ya que es fácil buscar buenas palabras clave.
Al buscar un argumento específico que utilizó, como una URL, también encuentra los comandos y opciones relacionados. Y al buscar opciones específicas, también puede encontrar argumentos relevantes.

Volker Siegel
fuente
4

La mayoría de los comandos tienen --help para referencia rápida, y generalmente es suficiente para recordar lo que era algo que solía saber.

Dicho esto, ¿tiene la costumbre de escribir --ayuda en lugar de -h o incluso -? Nunca se sabe qué es -h antes de ver la salida de uso o la página del manual. En el peor de los casos, -h podría ser una abreviatura de --destrucción automática peligrosa.

kerolasa
fuente
2
... La mayoría de los comandos en sistemas GNU . Los comandos en los sistemas Unix generalmente no tienen --help. -?citando necesidades con zsh, csh, tcsho fish, o si hay archivos cuyos nombres están -seguidos por un único carácter en el directorio actual. -:puede ser preferible allí
Stéphane Chazelas
Bueno ... muchos sistemas que no son GNU tienen resultados de uso tan terribles que ni siquiera tienen sentido. En tal caso, consulte las páginas de manual y la mejor de las suertes memorizar con la memoria porque nada más funcionará.
kerolasa
"Dicho eso, tengo la costumbre de escribir". ¿Palabra faltante?
Faheem Mitha
1

Una opción que me gusta es crear alias que tengan las mismas o similares opciones, por ej.

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

De esta manera, tiene un atajo agradable que pronto recordará fácilmente, pero que también retendrá información sobre las opciones reales que refleja.

Otro enfoque con alias es elegir las opciones más comunes y hacer un alias súper corto que las use. Por ejemplo ls, casi siempre lo hago ly eso es porque tengo:

alias l='ls -alFtrG'

Otra opción es traer las opciones que desee al comando base, p. Ej.

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

Finalmente practique, practique, practique y tenga paciencia. Sigue escribiendo opciones comunes y eventualmente las aprenderás. Los comunes en días, otros en semanas y sí, algunos tardan años en darse a conocer. Piense en eso como un placer en que la programación de Unix continuará entreteniéndolo durante mucho tiempo.

Otra opción que me gusta es un alias para facilitar la búsqueda en mi historial y para eso tengo dos alias similares:

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

Estos me permiten buscar usos de un comando, por ejemplo:

hg lsmostrará todos los usos recientes de ls de la historia
hga lsmostrará todos los usos de ls de toda mi historia.

Desarrollé hg después de encontrar que hga tendía a mostrar demasiado.

Michael Durrant
fuente
44
Si OP no puede recordar lo que rm -ivhace, OP probablemente tampoco recordará lo que rmivhace. No creo que sea el guión el problema.
tobyink
Me gustaría personalmente alias rm -ivde safe_deleteorm_prompt
slebetman
¡Gracias chicos! Supongo que me estaba preocupando demasiado por recordar más que aprender más ... ¡Aprenderé cuándo usar el arma en lugar de aprender cuáles son las dimensiones y la velocidad de la bala! Suerte de tener tantas buenas personas de Linux aquí ... ¡¡¡Saludos a unix / linux !!
Atul
1

Yo típicamente hago:

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

O alguna variación de los mismos. Con algunos greps puede especificar -C / A / B para el contexto , después y antes respectivamente. Si no es así, nly sedse puede combinar bastante bien:

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

Las mismas técnicas funcionan con los --helpmenús si los tiene, pero es posible que deba hacer un ${CMD} --help 2>&1 | ..filter..porque es una práctica bastante estándar para imprimir tales cosas stderr.

De todos modos, supongo que la moraleja de la historia es, recuerda al menos man y grep. Quizás no te preocupes por el resto.

mikeserv
fuente
1
+1. A menudo grepbusco páginas cuando busco una característica en particular, eso es bastante útil.
John WH Smith
Las -A -B -Copciones de grep también pueden ser útiles, por ejemploman bash | grep -A 25 PROMPTING$