Comandos prácticos en GnuLinux 🐃🐧

Como lo prometido es deuda, pongo a su disposición una lista de comandos prácticos para la consola de GnuLinux.
Mi idea no es detallar la funcionalidad de cada comando, sino mostrar una lista practica de los comandos que he recopilado durante mi experiencia de uso del Sistema Operativo.

Para detallar que hace cada comando podemos hacer uso de los man-page propios de cada comando utilizando:
man comando

ps

Para ver los procesos que ocupan más memoria

ps aux | awk '{print $2, $4, $11}' | sort -k2r | head -n 15

Para sumar la memoria total de todos los procesos httpd

ps aux | awk '/httpd/ {sum+=$6} END {printf "%dMB\n", sum/1024}'

Matar un proceso determinado.

ps aux | grep <something> | awk '{print $2}' | xargs kill

Matar los procesos de un determinado usuario.

ps -o pid -u nombreUsuario | xargs kill -1


du

Para visualizar el tamaño por sumatoria de un determinado directorio

du -sh /home

Para visualizar el tamaño de las carpetas de la Raíz "/" excepción carpetas del sistema

du --max-depth=1 -hx /

Para filtrar directorios que tengan mayor a un tamaño indicado

du -h /var/www | awk '$10 ~ ".*M.*" {print $2}'


sort

Ordenación de mayor a menor Usuarios por uid:

cat /etc/passwd| sort -t":" -k3nr


grep

Búsqueda de una fecha específica en los logs de PHP

grep -E '16-Jun-2015|17-Jun-2015' /var/log/php-errors.log

Busquedas recursivas

grep -R -i -n 'Keyring' * -R

Para copiar los archivos de determinada extensión que coinciden con una búsqueda

grep --include '*.akb' -r 'tcpdump' * | cut -d: -f1 | uniq | xargs cp -vt /tmp/temporal01/

Lo mismo, pero con el comando find:

find . -name '*.akb' -exec grep -H 'tcpdump' {} \; | cut -d: -f1 | uniq | xargs cp -vt /tmp/temporal01/

less

Conservar el resalte de las búsquedas:

grep --color=always -i script *html | less -r


sed

Para visualizar archivos de configuración sin comentarios (#) y sin espacios.

cat archivo.conf | grep -v -E '^#' | sed -e '/^$/d'


awk

Para imprimir determinada linea de un documento:

awk "NR==3" nombreArchivo.txt


tr

Reemplazar las Comillas (") por un Espacio en Blanco, y los punto y comas por el carácter de Tabulación (\t).

echo '"Juan";"Pepe";' | tr '";' ' \t'

Útil para trabajar con Archivos CSV.


ls

Para mostrar los directorios con el "/"

ls -F
Referencia ls option F

Para listar directorios

ls -d */

Para listar subdirectorios

ls -d */*/

Si necesitamos seguir profundizando añadimos */

Para mostrar directorios ocultos

ls -d .*/
Referencia ls option d

Obtener un listado de los ficheros del directorio actual, ordenado de mayor a menor por tamaño de archivo

ls -l | sort -r +4n

Para listar determinados archivos ordenados por el tamaño de los mismos

ls -al | grep -E '*.txt|*.log|*.glf|*.hprof|log.bo*|*.trc' | sort -n -r -k 5 | more

cp

Copiar Archivos desde un listado txt

Para copiar un listado de archivos que se encuentran en un archivo txt, sin necesidad de conservar los permisos:
cat listadoArchivosCommit.txt | xargs cp -vt /tmp/TestCopia

Para copiar archivos que están en un listado, pero conservando los permisos:

while read -r line; do cp -vrp $line ../akb_mkdocs/$line; done < listadoArchivosCommit.tmp

mv

Para mover Archivos desde un listado txt

for file in `cat listoffiles`; do mv "$file" /path/de/destino ; done

xargs -a file_list.txt mv -t /path/de/destino

Para renombrar archivos cuyo nombre contengan espacios en blanco

for FILE in *.wav ; do NEWFILE=`echo $FILE | sed 's/ /_/g'` ; mv "$FILE" $NEWFILE ; done

find

Comando utilizado para buscar archivos en GnuLinux, existen distintas variantes del mismo para realizar diferentes tareas:

Para buscar algun archivo utilizando parámetros de nombre y con texto en particular

find ./ -type f -name '*.doc*' | grep -i project

Para Cambiar los permisos de SOLO los DIRECTORIOS de un sitio en especifico

find ./certificate -type d -exec chmod 0750 {} \;

Para Cambiar los permisos de SOLO los ARCHIVOS de un sitio en especifico

find ./certificate ! -type d -exec chmod 0640 {} \;

Para Borrar los archivos con algun parámetro especial de búsqueda

find ./ -name '*06162015*' -exec rm -rf {} \;

Para listar los archivos que fueron creados desde hace 30 días

find ./ -type f -mmin -43200 -exec ls -lt {} \; ` ** Archivos menores a 30 Dias ** `(30*(24*60))

Para copiar determinados archivos hacia otro directorio utilizando cp

find ./ -type f -mmin -43200 -exec /usr/bin/cp -rp {} ../tmp/ \;

Para eliminar los backups con más de 02 dias (48 horas)

find . -mtime +1 -delete

Para mostrar o listar los directorios vacíos a partir del directorio actual.

find . -empty -type d

Para contar los archivos pero solo en carpetas dos niveles por debajo

find . -maxdepth 2 -type f | wc -l

Para contar archivos de forma recursiva ilimitada

find . -type f | wc -l

Para contar directorios de forma recursiva ilimitada

find . -type d | wc -l

Para contar enlaces de forma recursiva ilimitada

find . -type l | wc -l

Para contar archivos y carpetas de forma recursiva

find . | wc -l

Para contar archivos con una extensión determinada

find . -type f -iname “*.php” | wc -l

Para listar archivos ocultos de determinado directorio

find . -type d -iname ".*" -ls

Para cambiar texto dentro de algún tipo de archivo en particular

find /test/ -name "*.txt" -print | xargs sed -i "s/SYSADMIT/--SYSADMIT--/g"

Para buscar archivos mayores a 1024MB

find ./ -size +1024M -exec /bin/du -sh {} \;

unix_stackexchange_find
Contar_Files_Con_Find
Find_con_sed


curl

Para resumir las descargas a través de curl

export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/big-archive.zip"; export ec=$?; done

ln

Crear enlace simbólico

ln origen destino
sudo ln -s /usr/bin/csvlook-3.5 /usr/bin/csvlook


isoinfo

Para montar imagen Linux si solo quieres listar su contenido.

ìsoinfo -l -i imagen.iso


Al presente listado hacen falta muchos más comandos... pero eso es lo bonito de GnuLinux, que nunca terminamos de aprender si puedes recomendar algún comando útil que haga falta a este listado agrégalo en los comentarios.

Espero sea útil este tipo de post. Agradezco su tiempo de lectura 😃

Show Comments