> For the complete documentation index, see [llms.txt](https://juanbermudez.gitbook.io/aprendiendolinux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juanbermudez.gitbook.io/aprendiendolinux/info-y-ayuda.md).

# Info y ayuda

[Bash](https://es.wikipedia.org/wiki/Bash) cuenta con una gran variedad de comandos incorporados, para verlos basta con escribir `help`.

```bash
$ help
```

{% hint style="info" %}
**Intérprete de ordenes** (comandos)

Bash es el intérprete de comandos por defecto en la mayoría de las distribuciones, aunque algunas suelen tener por defecto `sh`, `ksh`, `zsh` entre otras.
{% endhint %}

Prácticamente todos los comandos tienen sus manuales o ayudas dentro del propio sistema, en algunos casos están traducidos en diferentes idiomas, pero mayormente esta información de ayuda la encontramos en inglés. Los usos más comunes son `man comando`, `info comando` o `comando --help`. Indudablemente en internet podemos encontrar mucha ayuda, pero si quieres consultar una fuente confiable te recomiendo ir a [https://manpages.debian.org](https://manpages.debian.org/) o [https://man.archlinux.org](https://man.archlinux.org/).

* [man](https://manpages.debian.org/bookworm/man-db/man.1.es.html) - Interfaz de los manuales de referencia del sistema.

```bash
$ man ls
```

```bash
$ info ls
```

```bash
$ ls --help
```

* type - Muestra información sobre el tipo de orden (comando). Con `type` podemos saber la ubicación del ejecutable o si se trata de un alias (formas personalizadas de ejecutar comandos).

```bash
$ type cd
cd es una orden interna del intérprete de ordenes
```

Type es uno de esos comandos internos que nos ayuda a obtener información sobre otros comandos, es muy sencillo pero a la vez muy útil. Con type podemos saber si un programa o comando existe dentro del sistema y estas son sus opciones `type --help`:

<table><thead><tr><th width="100">Opciones</th><th>Descripción</th></tr></thead><tbody><tr><td>-a</td><td>Muestra todas las ubicaciones que contienen un ejecutable llamado NOMBRE; incluye aliases, órdenes internas y funciones, si y solo si no se utilizó también la opción <code>-p</code>.</td></tr><tr><td>-f</td><td>Suprime la búsqueda de funciones de shell.</td></tr><tr><td>-P</td><td>Fuerza una búsqueda en PATH por cada nombre, aun si hay un alias, orden interna o función, y devuelve el nombre del fichero en disco que se ejecutaría.</td></tr><tr><td>-p</td><td>Devuelve el nombre del fichero en disco que se ejecutaría, o nada si <code>type -t NOMBRE</code> no devuelve <code>fichero</code>.</td></tr><tr><td>-t</td><td>Saca una sola palabra, que es una de entre <code>alias</code>, <code>keyword</code>, <code>function</code>, <code>builtin</code>, <code>file</code> o, si el NOMBRE es un alias, palabra reservada del shell, función del shell, orden interna del shell, fichero de disco, o no se encuentra, respectivamente.</td></tr></tbody></table>

Cuando ejecutamos `type comando` y éste no hace parte de bash internamente, nos indicara el directorio donde se encuentra, que normalmente es `/usr/bin/`. De esta forma podemos saber si un programa está instalado, ya que si no existe nos dirá `-bash: type: NOMBRE: no encontrado`.

Otro comando útil para este propósito es `which`.

```bash
$ which ls
```

El comando `whereis` localiza los archivos binarios, fuente y página manual para un comando.

```bash
$ whereis ls
```

Si necesitas saber para qué sirve un comando, puedes consultar su descripción corta.

```bash
$ whatis ls
```

Por último, también podemos usar `apropos` para buscar nombres y descripciones de páginas de manual.

```bash
$ apropos bash
```

Así que no hay que temer por aprender a usar GNU/Linux, como vemos, tenemos la suficiente ayuda interna para aprender.
