# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

apropos: buscador de comandos en la shell

Es imposible conocer todos los comandos que nos ofrece cualquier shell, para solucionar este “problema” existen herramientas que nos hacen la vida más fácil, una de ellas es el comando apropos.

Apropos es un comando que busca dentro de las descripciones de cada una de las páginas man las palabras claves que le indiquemos pasandolas como argumentos. Estas palabras claves pueden contener comodines o ser la palabra clave exacta.

Por ejemplo, si quisieramos buscar comandos que sirven para copiar ficheros podríamos hacerlo del siguiente modo (suponiendo un sistema en idioma inglés):

$ apropos "copy files"
cp (1)               - copy files and directories
cpio (1)             - copy files to and from archives
install (1)          - copy files and set attributes

Como véis nos muestra tres comandos que pueden servirnos para realizar operaciones de copiado de ficheros. Otro ejemplo podría ser la búsqueda de un comando/programa para gestionar particiones:

$ apropos "partition"
addpart (8)          - simple wrapper around the "add partition" ioctl
cfdisk (8)           - Curses/slang based disk partition table manipulator for Linux
delpart (8)          - simple wrapper around the "del partition" ioctl
fdisk (8)            - Partition table manipulator for Linux
iostat (1)           - Report Central Processing Unit (CPU) statistics and input/output statistics for devices, partitions an...
mpartition (1)       - partition an MSDOS hard disk
partprobe (8)        - inform the OS of partition table changes
partx (8)            - telling the kernel about presence and numbering of on-disk partitions.
sfdisk (8)           - Partition table manipulator for Linux

Como véis es un comando muy útil en situaciones que no conocemos un comando para realizar una determinada tarea.

Escanear rango de Ips

Existen muchas formas de escanear desde shell un rango de IPs o subnet, por ejemplo con nmap o creando un script en bash, perl, etc. No obstante aquí va una forma sencilla que he encontrado en Shell Fu:

for IP in 192.168.1.{1..10}; do if ping $IP -c 1 > /dev/null; then echo $IP alive; else echo $IP dead; fi; done

Y la salida (escaneo desde la 192.168.1.1 a 192.168.1.10

~$ for IP in 192.168.1.{1..10}; do if ping $IP -c 1 > /dev/null; then echo $IP alive; else echo $IP dead; fi; done
192.168.1.1 alive
192.168.1.2 dead
192.168.1.3 dead
192.168.1.4 dead
192.168.1.5 dead
192.168.1.6 dead
192.168.1.7 dead
192.168.1.8 dead
192.168.1.9 dead
192.168.1.10 dead

Chuleta: Atajos de teclado para Shell Bash

Os dejo el enlace a la descarga de una excelente recopilación a modo de chuleta que han realizado en beerpla.net relacionada con atajos de teclados en la Shell Linux Bash, sin duda conociendo estos atajos de teclado incrementarás tu rendimiento y rapidez en la shell por excelencia, Bash:

Tabla de equivalencias entre comandos DOS y UNIX

Esta tabla servirá de referencia a aquellos usuarios que pasen de DOS a UNIX o viceversa:

Tarea ...                         DOS                     UNIX

Listar ficheros dir/w dir ls dir ls -l Mostrar contenido de ficheros type cat Mostrar contenido de ficheros type filename | more more paginando Copiar fichero copy cp Buscar cadena en fichero find grep fgrep Comparar ficheros comp diff Renombrar fichero rename OR ren mv Borrar fichero erase OR del rm Borrar directorio rmdir OR rd rmdir Cambiar permisos de ficheros attrib chmod Crear directorio mkdir o md mkdir Moverse entre directorios chdir OR cd cd Ayuda help man apropos Mostrar fecha y hora date, time date Mostrar espacio disponible chkdsk df Imprimir fichero print lpr Mostrar cola de impresión print lpq

Fuente: DOS to UNIX Translation

Descubre los comandos que más utilizas en la shell

Con la siguiente línea de comandos, descubriras que es lo que más usas en tu shell:

history | awk '{print $2}' | sort | uniq -c | sort -rn | head

La explicación es sencilla:
- history -> muestra el historico de comandos ejecutados
- awk ‘{print $2}‘ -> filtra y muestra solamente la segunda columna del historico
- sort -> ordena el listado
- uniq -c -> junta todas las líneas que son iguales
- sort -rn ->Ordena de forma numérica e invertida
- head -> muestra solamente los 10 primeros resultados.

Simplemente es una curiosidad más ;)