Copyright © 2005-2025 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.
Hay ocasiones que cuando busco un archivo dentro del listado de un directorio con varios archivos, usando ls
, deseo ver solamente el nombre del archivo(s) o parte del nombre del archivo(s), pero sin perder el contexto del resto de los archivos. Ejemplo, dentro de /proc/sys/net/ipv4 quiero ver los archivos que contengan 'max' como parte de su nombre, lo siguiente lo logra:
$> ls /proc/sys/net/ipv4 | grep max igmp_max_memberships igmp_max_msf inet_peer_gc_maxtime inet_peer_maxttl ipfrag_max_dist tcp_max_orphans tcp_max_ssthresh tcp_max_syn_backlog tcp_max_tw_buckets
Esta bien pero lo que yo deseo es mostrar lo anterior, junto con los demás archivos del directorio, entonces, el listado debe darme el directorio y con los archivos que deseo con la búsqueda resaltada en rojo o en otro color.
No encuentro ningún comando que lo haga (si sabes de uno dímelo), asi que pues me inventé mi propio comando o script que realize lo anterior, y se logra con unas cuantas líneas, este es el script:
#!/bin/bash #################################################################################################
# Copyright 2005-2025 Sergio González Durán (sergio.gonzalez.duran@gmail.com)
# Se concede permiso para copiar, distribuir y/o modificar este programa siempre
# y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos
# de la GNU General Public License,
# Versión 3 o cualquiera O Posterior publicada por la Free Software Foundation.
#################################################################################################
# un poco de ayuda, deben existir dos argumentos, si no manda ayuda if [ $# -lt 2 ] then echo "uso: ./l /directorio patron" echo "ejemplo: ./l /etc samba" exit fi # variable $DIR es el primer argumento del script, la ruta del directorio DIR=$1 # variable $BUS es el segundo argumento lo que se quiere buscar dentro de los nombres de archivo del directorio BUS=$2 # variable $ROJO cambia el texto a rojo (setaf 1) e invierte (smso) ROJO=`tput setaf 1; tput smso` # variable $NORMAL regresa el texto a normal, sin atributos NORMAL=`tput sgr0` # se ejecuta el listado y se sustituye lo buscado por lo mismo pero en rojo con sed ls -C $DIR | sed s/"$BUS"/"$ROJO$BUS$NORMAL"/
ls -C
despliega el listado en columnas, de hecho es el comportamiento por defecto con ls
solo que si lo dejara sin argumentos al encauzarse a sed
quedaría como una sola lista larga de archivos, asi que nos aseguramos que el resultado sea en varias columnas, después sed
sustituye 's' el patrón a buscar por el mismo patrón pero le añade el color invertido rojo y después vuelve al texto normal.
Veamos como se ve el resultado del script, buscando 'max' dentro de los archivos de /proc/sys/net/ipv4:
Lo anterior es lo que buscaba, una modificación a ls
que me resalté una búsqueda dentro del listado del directorio.
Copiamos el script (como usuario root) a /usr/bin, por ejemplo, donde este más disponible al ser una ruta estandar del PATH. Cambiamos permisos para que pueda ser ejecutado por cualquier usuario (chmod 4755 /usr/bin/l
) y creamos un alias al script ejecutable en /usr/bin, (alias l='/usr/bin/l'
), de esta manera no lo tendrás que ejecutar solamente desde se encuentre el script shell original con ./l /etc samba
, sino como se aprecia en el ejemplo como: l /etc samba
, y desde cualquier directorio en el que te encuentres.
Espero te pueda ser útil este pequeño shell script.
Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.
Dona a través de paypal::
O a través de bitcoins:
SSH (Secure SHell), www.openssh.com, es la herramienta de conexión segura mas usada en el mundo Linux, no hay nada como ssh para ....
Archivos como el de configuración de samba /etc/samba/smb.conf suelen tener comentarios que explican o detallan la variable a con....
Aqui, traté de enviar un archivo ejecutable (notepad.exe) a través de gmail, y sus mecanismos de seguridad me lo impidieron. Gma....
En linux cualquier comando (o cualquier cosa) que se teclea se le conoce como que está utilizando la entrada estándar [STDIN]. L....
....
¿Olvidaste o perdiste la contraseña del usuario 'root' de MySQL?, no hay problema, solo sigue estás sencillas instrucciones y p....
La demanda civil entablada por la empresa SCO contra la gigante IBM causó revuelo entre la comunidad Linux y Open Source cuando e....
rsync es probablemente la herramienta de copiado y sincronización de archivos más potente que existe en el mundo de Linux/Unix. ....
Una buena contraseña o password, todos lo sabemos, es esencial para dificultar la entrada a nuestro sistema, sobre todo si se es ....
El siguiente es un script muy básico de iptables que puedes usar para proteger un solo equipo conectado a Internet a través de u....