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 😃