Principales comandos de Linux
Una de las fortalezas en las que nos podemos apoyar los gestores de TI, son los principales comandos comandos de Linux, que nos permite implementar soluciones, resolver problemas tanto en gestión de ofimática, así como en gestión de infraestructura y procesamiento de datos.
Tareas como administrar servidores con un mínimo costo de máquina, automatizar operaciones en archivos, procesos y servicios con los principales comandos de Linux, es uno de los grandes aportes que este S.O nos puede ofrecer en Sistemas, Seguridad Informática e Infraestructura.
Principales comandos de Linux para listar y ubicar archivos
Abrimos la consola de terminal de nuestra preferencia, y comenzamos:
Comando para identificar nuestra ubicación actual en el sistema de ficheros
pwd
Comandos para listar archivos y directorios de nuestra ubicación actual
ls -lsh
Lista los archivos y los ordena según su fecha de modificación, su extensión, su tamaño, respectivamente.
ls -lsht ls -lshX ls -lShS
Muestra solo el directorio especificado.
ls -ld directorio
Lista todos los archivos y directorios pero en varias columnas, y de mayor a menor tamaño.
ls -lhaxsS
Muestra los archivos y directorios definidos entre los corchetes
ls -lsh {archivo1,archivo4,directorio20,otra_cosa}
Tuberías y redirecciones
Las tuberías y redirecciones son técnicas para canalizar los resultados de los comandos a otros recursos. Esos recursos pueden ser un archivo u otro comando. Cuando la salida de un comando se redirecciona a un archivo, lo llamamos “redirección”. Cuando la salida se redirecciona a otro comando, lo llamamos “tubería”.
El caracter | se utiliza para canalizar la salida de un comando como entrada para otro. Básicamente, toma la salida estándar (stdout) del comando que está antes del | y la pasa como entrada estándar (stdin) al comando que está después del |.
ls -l | grep ".txt"
El > se utiliza para redirigir la salida estándar de un comando a un archivo, en lugar de mostrarla en la pantalla. Si el archivo especificado no existe, se crea; si ya existe, se sobrescribe.
ls -l > lista_archivos.txt
Comandos de Linux para crear directorios y archivos
Crear un archivo. Los archivos los podemos crear con el comando touch o con el editor de texto nano.
touch file.txt nano file.txt
Comando para crear un directorio, mkdir
mkdir mi_directorio
Comando para crear directorios de forma recursiva. Esto es cuando necesitamos crear un directorio y un subdirectorio al tiempo
mkdir -p prueba/prueba2
El valor de los tamaños de los directorios no se puede visualizar con el comando ls. Para ese propósito, usamos el comando du.
du -sh directorio
Para generar una lista de directorios visualizando sus tamaños en orden de kilo, mega y giga bytes:
du -smh ./mi_directorio/* | sort -h
Con la opción -c, el comando du produce un gran total al final de la ejecución.
Ahora organizamos por nombre:
du -smh ./mi_directorio/* | sort -k2
También podemos visualizar el tamaño de los directorios con el comando ncdu. Lo instalamos y ejecutamos:
sudo apt install ncdu ncdu
Encontrar diferencias entre dos directorios
diff /dir1 /dir2
Desplazarse al último directorio usado
cd -
Renombrar archivos
Puede que tengamos una lista larga de archivos con cierto texto o cadena en sus nombres, que necesitamos quitar. Por ejemplo, puede que tengamos esto:
Seguridad en wifi7@web.pdf infosec@web.pdf kuberntes_para_principiantes@web.pdf
En dicha lista queremos quitarle el «@web» a sus nombres sin sacrificar la extensión ni el resto de sus nombres. Entonces con el comando ‘rename‘ podemos lograrlo:
rename 's/\@web//' *.pdf
Si hay más de esos archivos en subdirectorios, restructuramos el comando rename así:
find . -name "*@web*.pdf" -exec rename 's/\@web//' {} +
Copiar archivos – fechas
Copiamos el archivo file.txt y los pegamos como file2.txt
cp file1.txt file2.txt
Copiar dos archivos dentro de un directorio
cp {archivo1, archivo2} directorio_destino/
ó
cp archivo1 archivo2 directorio_destino/
Ver la fecha actual en formato Año-Mes-Día
date +%Y-%m-%d
Podemos crear un archivo de gran tamaño para hacer pruebas. Creamos el archivo ejemplo.txt de caracteres aleatorios y de 1 GB de tamaño.
sudo dd if=/dev/urandom of=ejemplo.txt bs=1M count=1024 iflag=fullblock
Aquí algunos trucos para copiar y gestionar archivos en la línea de comandos.
Visualizar el uso del almacenamiento interno
Trabajar con estos comandos puede requerir el monitoreo de nuestro almacenamiento interno (por si se llena). Los siguientes comandos nos ayudan visualizando el uso de nuestros dispositivos de almacenamiento (disco duro, usb, estado sólido).
df -h dfc
Principales comandos de Linux para comprimir archivos y directorios
Comprimir un archivo BMP en Zip
zip -g imagen.zip imagen.bmp ó bzip2 imagen.bmp
Comprimir un directorio y que quede en formato tar.gz. A los tar.gz se le conocen como tarball.
tar cvfz directorio.tar.gz directorio
Descomprimir el tarball
tar xvfz directorio.tar.gz
Visualizar el contenido del tarball y de un Gzip, respectivamente
tar tvfz directorio.tar.gz
zless file.gz
Ahora comprimimos el mismo directorio, que quede en formato tarball y le incluimos la fecha en que se comprimió
tar cvfz directorio-`date +%Y-%m-%d`tar.gz directorio
Descomprimir varios tarball
cat *.tar.gz | tar xvfz - -i
Dividir archivos. Esto es útil cuando necesitamos ‘partir’ en varios trozos un archivo grande, entre varios archivos pequeños. Por ejemplo, dividimos el archivo ‘Enorme.zip’ en archivos de 100 MB.
split -b100m Enerome.zip EnormeParte-
Juntarlos nuevamente
cat EnormeParte-* > Enorme.zip
Comprimir en formato gz. Con el comando gzip podemos definir el nivel de compresión que necesitamos en nuestros comprimidos. El rango va de 1 a 9, siendo 9 el más alto nivel de compresión.
gzip -1 -k reporte2.csv gzip -9 -k reporte2.csv
El detalle aquí es que Gzip no comprime directorios, si le pasamos como parámetro un directorio él se encarga de comprimir los archivos que contenga el directorio y sus subdirectorios. Para comprimir con nivel 9 un directorio, acudimos a tar de la siguiente manera
GZIP=-9 tar cvfz directorio-`date +%Y-%m-%d`tar.gz directorio
Así como en Windows podemos instalar a 7zip o Winrar para manejar este asunto de forma gráfica, en Ubuntu podemos instalar el gestor de compresión PeaZip.
Una mejora que tiene PeaZip es que usa el multithreading para el trabajo de comprimir-descomprimir.
Ejecutar un comando tras otro
Podemos separar varios comandos con punto y coma ( ; ), para que se ejecuten en secuencia, por ejemplo:
gzip -1 -k reporte2.csv ; echo Finalizado
Si lo que necesitamos es ejecutar el próximo programa sólo si la secuencia de comandos ha terminado con devolución código 0 (lo que normalmente significa que se ha ejecutado correctamente), entonces:
gzip -1 -k reporte2.csv && echo OK
Ahora por el contrario, continuamos sólo si el comando actual ha fallado:
gzip -1 -k reporte2.csv || echo FALLO
Si el directorio filomena y el archivo atilano no existen, que los cree:
test -d filomena || mkdir filomena test -w atilano || touch atilano
Comandos para leer y escribir en archivos de texto y CSV
Validar si un archivo contiene tabulaciones (aparecen como ^I)
cat -A archivo.txt
Escribir texto en un archivo archivo llamado file.txt
echo “Una línea de texto” > file.txt
El comando echo sobreescribe el archivo cuantas veces se le ejecute.
Escribir texto en un archivo sin sobrescribir. Esto hace que echo escriba después de la última línea
echo “Una segunda línea” >> file
Adicionar texto en un archivo CSV separado por comas
echo enero,24 >> archivo.csv
Tenemos un archivo CSV llamado lista.csv con el siguiente contenido:
2010:Junio:23:Carla:Martínez:Equipo-de-básquet
2011:Abril:22:Yoel:Alonso:Clases-de-danza
2009:Febrero:21:Bernat:Molina:Equipo-de-básquet
2012:Enero:22:Noelia:Bernabeu:Equipo-de-básquet
2010:Mayo:11:Arnau:Silvestre:Clases-de-judo
2011:Febrero:23:Lucia:Pérez:Clases-de-danza
2013:Mayo:20:Gerard:Reverte:Clases-de-judo
Necesitamos visualizar solo desde la segunda hasta la cuarta columna:
cut -d ":" -f 2,4 lista.csv
Junio:Carla
Abril:Yoel
Febrero:Bernat
Enero:Noelia
Mayo:Arnau
Lo que haremos a continuación será sustituir los dos puntos “:”, por un espacio o un tabulador, para que la información sea más legible. Esto lo podemos hacer de diferentes maneras. La primera es utilizar el parámetro “--output-delimiter”, como se ve en el ejemplo:
cut -d ":" -f 4,5 --output-delimiter=$'\t' lista.csv
Mediante “\t” le decimos que sustituye el valor delimitador “:” por un una tabulación. La otra opción posible es utilizar otro comando, al que le enviamos la salida standard (stdout), en este caso TR
cut -d ":" -f 4,5 ejercicio-cut.txt | tr -s ':' ' '
Con tr indicamos que vamos a sustituir los dos puntos por un espacio, utilizando el parámetro “-s”
En ambos casos el resultado es similar:
Junio Carla
Abril Yoel
Febrero Bernat
Enero Noelia
Mayo Arnau
Además podemos utilizar un tercer comando, en este caso SORT, que nos ordenará el listado:
cut -d ":" -f 4,5 --output-delimiter=$'\t' ejercicio-cut.txt | sort
Abril Yoel
Enero Noelia
Febrero Bernat
Junio Carla
Mayo Arnau
Otro uso habitual del comando CUT es que nos muestre cierta cantidad de carácteres, utilizando el parámetro “-c”, como vemos en el ejemplo, de la frase “En UNIX y en GNU/Linux todo es un fichero”
echo "En UNIX y en GNU/Linux todo es un fichero" | cut -c 4-7 UNIX
El comando CUT tienes opciones muy interesantes para trabajar con textos desde la línea de comandos. Por ejemplo, podemos indicarle que nos muestre la segunda columna de un archivo de texto, que tiene como separador de campos el carácter tabulador ( \t ).
cut -d$'\t' -f2 prueba.txt
Visualizar el historial de comandos
history
Estadísticas de un archivo. Con el comando wc podemos obtener estadísticas de un archivo, como la cantidad de líneas, palabras y caracteres.
wc test2.txt 6 6 12 test2.txt
En el ejemplo, el archivo test2.txt contiene 6 líneas o renglones, 6 palabras y 12 caracteres. Para contar solo el número de líneas usamos el comando así: wc -l
También podemos pasarle como argumento a wc la salida de otro comando, por medio de pipe ( | ). Por ejemplo, entregandole la salida de du a wc podemos hacer un total de los directorios encontrados:
du -sh ./* | wc -l
Ejecutar el último comando. Escribiendo dos veces el caracter de admiración de cierre ( !! ), y enter, ejecutamos el último comando del historial de comandos:
!!
¿Qué sucedería si combinamos los dos últimos comandos que acabamos de ver?
du -sh ./* | wc -l && !! | wc -l
Respuesta/ Listamos los directorios de la ubicación actual, y generamos un total de los directorios listados.
Comando para leer archivos XLS
Xlsxgrep es un comando para leer archivos XLS. Esta desarrollado en Python y lo podemos instalar así:
pip install xlsxgrep
Usarlo del siguiente modo:
xlsxgrep -i "foo" foobar.xlsx //Busque cadenas que contenga "foo". xlsxgrep -c -H "(?i)foo|bar" /folder //hace un conteo. xlsxgrep -r 'lt-|900' //que busque textos comenzando con ambas cadenas.
Puedes ver cómo editar archivos desde la línea de comandos, aquí
Editar archivos de texto desde la línea de comandos en Linux
Atajos de la línea de comandos
Ctrl + ← / → = mueve el cursor entre palabras Tab = autocompleta un comando o una ruta Ctrl + A = mueve el cursor al comienzo de una línea Ctrl + E = mueve el cursor al final de una línea Ctrl + w = borra todo lo que está detrás del cursor por palabras Ctrl + u = borra todo lo que está detrás del cursor Ctrl + k = borra todo lo que está delante del cursor Alt + u = cambia a mayúscula todo lo que esté delante del cursor Ctrl + y = restaura la linea borrada Ctrl + l = limpia la pantalla (igual que el comando clear)
Puedes ver cómo gestionar procesos desde la línea de comandos, aquí
Valora este artículo




Pingback: 🥇 Leer un Archivo xlsx con Comando en Linux - Leer Archivo CSV
Pingback: 🥇 Comandos o Herramientas de Diagnostico de Hardware en Linux
Pingback: 🥇 Solucionar Welcome to emergency mode en Linux
Pingback: 🥇 Windows a Linux - Migrar a Linux y al Software Libre