¿Cómo puedo ver una referencia u hoja de trucos de la sintaxis bash básica en el terminal de Linux?

8

Cada vez que necesito hacer una pequeña secuencia de comandos bash que implique sentencias if, verificar variables vacías y archivos inexistentes et.c. Me encuentro presionando google por algún manual o guía de bash simple.

A menudo, estos son demasiado largos y complicados para responder rápidamente la pregunta que tengo a la mano.

Entonces, estaba pensando que debe haber algún comando o página de manual que cubra la sintaxis bash básica (para cosas como sentencias if, comprobaciones de variables vacías, archivos inexistentes, etc.) de una manera corta y accesible. Estoy seguro de que no he encontrado el comando (man bash no parece serlo).

¿Dónde puedo encontrar eso?

Samuel Lampa
fuente
2
en bashpuedes probarhelp
mikeserv
github.com/cirosantilli/bash-cheat
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Respuestas:

13
  • man bash es la referencia canónica de Bash.
  • help helple brinda ayuda sobre el helpBash incorporado y cómo le brinda mensajes breves de ayuda sobre otros Bash incorporados, como help for.
  • Greg's Wiki es el mejor lugar para encontrar material de referencia directo, breve y, a veces, incluso entretenido para casi todos los aspectos de Bash.
  • Si desea una forma rápida de buscar la sintaxis, puede controlar la versión.bash_history . Hay demasiados comandos, diferentes sintaxis de parámetros sedy awkruido de línea y otras cosas para recordarlo todo, por lo que es bueno tener una referencia personal "bien arreglada" con etiquetas para buscar.
l0b0
fuente
+1 por mencionar help.
Ricitos
1
¡Gracias! Como se menciona en la respuesta de @ polym, obviamente había usado los términos de búsqueda incorrectos en man bash ("sentencias if", "[-n", etc.) en vano, por lo que pensé que la información no estaba allí. La búsqueda de "expresiones condicionales" era el término de búsqueda correcto allí.
Samuel Lampa
2
Tengo la misma cantidad de amor y odio por este momento ... 10 años ... no sabía que helpestaba allí. ¡ man bashNo se requiere tanta lectura innecesaria !
Matt
13

Como hay muchas cosas de este tipo en línea , aquí hay una sugerencia para usted; Lo uso para todo tipo de cosas.

Crea un directorio $HOME/notes. Añadir una subcarpeta, bash. Si no tiene un $HOME/bin, cree uno, agréguelo a su ruta utilizando el método que prefiera ( por ejemplo: in~/.bashrc ). Luego ponga un script simple allí cmdref.sh:

#!/bin/bash

if [ -z "$CMREF_DIR" ]; then
        CMREF_DIR="$HOME/notes"
fi

cat "$CMREF_DIR/${1}/${2}.txt"

Enlace simbólico por conveniencia ln -s ~/bin/cmdref.sh ~/bin/cmdref; Me gusta hacer esto para que pueda editar la cmdref.shfuente y un editor todavía reconocerá el tipo de archivo por el sufijo.

Copie y pegue lo que sea en varios archivos ~/notes/bash, por ejemplo, podría tener un archivo arrays.txt, loops.txtetc. Siempre y cuando sea solo para su uso personal, no está violando los derechos de autor.

Ahora puede usar eso desde la línea de comandos, por ejemplo: cmdref bash arraysy esa hoja de trucos se imprimirá en la consola. Tenga en cuenta que aunque los archivos son .txt(nuevamente, el uso de sufijos apropiados es útil para editores, navegadores de archivos, etc.) no debe usarlos cmdref bash arrays.txtya que está adjunto cmdref.sh(lo único que hace el script es convertir rutas y agregar el sufijo).

encerrada dorada
fuente
¡Maravilloso! Gran idea, y me enseñó algunas cosas que no había considerado sobre cuán flexible y personalizable es Linux.
mightypile
@goldilocks No entendí la razón que mencionó para simular el archivo de script, particularmente "Me gusta hacer esto para que pueda editar la fuente cmdref.sh y un editor todavía reconocerá el tipo de archivo por el sufijo". ¿Puede usted explicar por favor? ¿ vi cmdrefEso significa que puedo hacer y vim abrirá el "cmdref.sh" y luego puedo editarlo o me falta algo obvio aquí?
Geek
@Geek AFAIK todos los editores utilizan principalmente el sufijo de archivo para determinar el tipo de archivo resaltado de sintaxis WRT (hacerlo de otra manera sería incompleto en el mejor de los casos, pero podría ser una alternativa para algunas herramientas si no reconocen el sufijo). Entonces, si usted vi ~/bin/cmdref, vim realmente no sabe qué tipo de archivo es este, y usará un valor predeterminado para resaltar (creo que es .txt). Pero si usted vi ~/bin/cmref.sh, vim sabe que el archivo es un script de shell y el resaltado tendrá sentido. Pero WRT es un comando que desea escribir cmdref, no cmdref.sh. Por eso uso el enlace simbólico.
Ricitos de oro el
Como una barra lateral para eso: vies en sí mismo un enlace simbólico vim, por lo que obtienes resaltado de sintaxis (el "vi" original no tenía tal característica, creo). Y: vim en realidad es lo suficientemente inteligente como para reconocer ese script como un script de shell si el archivo no tiene sufijo, pero el principio se mantiene;) En raras ocasiones tal vez necesito / quiero usar algo menos inteligente.
Ricitos de oro el
... si quieres ver la diferencia, carga un .sharchivo en vim y set filetype=txt- ¡eek!
Ricitos de oro
3

man bashcubre todos los aspectos de la sintaxis de bash, por ejemplo, para if statements, string is zeroy non-existent filessimplemente busca (presiona la /tecla e ingresa lo siguiente) para CONDITIONAL EXPRESSIONS.

polimero
fuente
1
Ah, de hecho. Mi cerebro debe estar apagado o no tenerlo, ya que no se me ocurrió ese término de búsqueda (intenté buscar "declaraciones if", "\ '[-n", etc., pero fue en vano). ¡Gracias!
Samuel Lampa
1
@SamuelLampa si usa la página de manual de bash lo suficiente (no se necesita mucho), tendrá una idea de su estructura, por lo que puede saber qué hay allí y dónde está antes de buscarlo.
David Z