Aquí tienes una colección de comandos prácticos de Bash en una sola línea de código y otros trucos para la terminal relacionados con el procesamiento de datos y el mantenimiento del sistema Linux.
Con estos comandos de bash en una sola línea vas a poder trabajar mucho más rápido que con aburridos scripts, ahorrando tiempo, aprendiendo atajos de línea de comandos y scripting.
No todos los comandos son exclusivamente de una línea, pero se ha realizado un esfuerzo por configurarlos breves y lo más sencillos posibles para mantener una rápida ejecución.
Estos comandos se han usado principalmente con Ubuntu, Amazon Linux, RedHat, Linux Mint, Mac y CentOS, es posible que estos comandos no funcionan en otros sistemas.
Con los comandos simples de bash vas a poder analizar datos y ejecutar el mantenimiento del sistema Linux. La gran mayoría de comandos fueron extraídos de Google o Stack Overflow, conjunto a repositorios de Github.
¡Claro! Aquí tienes una lista de comandos y explicaciones basados en el archivo que proporcionaste, organizados por categoría para facilitar su consulta:
Trucos de la Terminal
Usando las Teclas Ctrl
Ctrl + n: Igual que la flecha abajo.Ctrl + p: Igual que la flecha arriba.Ctrl + r: Inicia una búsqueda hacia atrás en el historial de comandos (mantén pulsado Ctrl + r para retroceder).Ctrl + s: Detiene la salida en la terminal.Ctrl + q: Reanuda la salida en la terminal después de Ctrl + s.Ctrl + a: Mueve el cursor al principio de la línea.Ctrl + e: Mueve el cursor al final de la línea.Ctrl + d: Si has escrito algo, Ctrl + d elimina el carácter bajo el cursor; de lo contrario, escapa del shell actual.Ctrl + k: Elimina todo el texto desde el cursor hasta el final de la línea.Ctrl + x + backspace: Elimina todo el texto desde el principio de la línea hasta el cursor.Ctrl + t: Transpone el carácter anterior al cursor con el que está bajo el cursor; presiona Esc + t para transponer las dos palabras antes del cursor.Ctrl + w: Corta la palabra anterior al cursor; luego Ctrl + y pega la palabra cortada.Ctrl + u: Corta la línea antes del cursor; luego Ctrl + y pega la línea cortada.Ctrl + _: Deshace la escritura.Ctrl + l: Equivalente aclear(limpia la pantalla).Ctrl + x + Ctrl + e: Lanza el editor definido por$EDITORpara introducir tu comando. Útil para comandos de varias líneas.
Cambiar Mayúsculas y Minúsculas
Esc + u: Convierte el texto desde el cursor hasta el final de la palabra a mayúsculas.Esc + l: Convierte el texto desde el cursor hasta el final de la palabra a minúsculas.Esc + c: Convierte la letra bajo el cursor a mayúscula, el resto de la palabra a minúscula.
Ejecutar Comandos del Historial
!53: Ejecuta el comando con número 53 del historial.!!: Ejecuta el comando anterior.sudo !!: Ejecuta el comando anterior consudo.^aaa^bbb: Ejecuta el último comando y cambia la primera ocurrencia de ‘aaa’ por ‘bbb’.^aaa^bbb^:&: Ejecuta el último comando y reemplaza todas las ocurrencias de ‘aaa’ con ‘bbb’.!!:gs/aaa/bbb/: Ejecuta el último comando y reemplaza globalmente ‘aaa’ con ‘bbb’.!cat: Ejecuta el último comando que comenzó concat.!c: Ejecuta el último comando que comenzó conc.
Globbing en Bash
/etc/pa*wd: Usa*como comodín para expandir nombres de archivo (ej:/etc/passwd)./b?n/?at: Usa?como comodín para un solo carácter en la expansión de nombres de archivo (ej:/bin/cat).ls -l [a-z]*: Lista todos los archivos con nombres que comienzan con una letra minúscula.ls *.{sh,py}: Lista todos los archivos con extensiones.shy.py.
Variables de Entorno Útiles
$0: Nombre del shell o script de shell.$1, $2, $3, ...: Parámetros posicionales.$#: Número de parámetros posicionales.$?: Código de salida del último comando en primer plano.$-: Opciones actuales establecidas para el shell.$$: PID del shell actual (no subshell).$!: PID del comando más reciente en segundo plano.$DESKTOP_SESSION: Gestor de pantalla actual.$EDITOR: Editor de texto preferido.$LANG: Idioma actual.$PATH: Lista de directorios para buscar archivos ejecutables.$PWD: Directorio actual.$SHELL: Shell actual.$USER: Nombre de usuario actual.$HOSTNAME: Nombre del host actual.
Variables
Sustitución de Variables en Citas
echo $foo: Expande la variable$foo.echo "$foo": Expande la variable$foodentro de comillas dobles.echo '$foo': No expande la variable$foo(literal).echo "'$foo'": Expande la variable$fooy la encierra entre comillas simples.echo ''$foo'': Expande la variable$foo(las comillas simples dobles actúan como comillas dobles).
Manipulación de Variables
echo ${#var}: Obtiene la longitud de la variablevar.echo "${var:0:1}": Obtiene el primer carácter de la variablevar.echo ${var%%"${var#?}"}: Otra forma de obtener el primer carácter de la variablevar.echo ${var:2}: Elimina los dos primeros caracteres de la variablevar.echo ${var[@]#0}: Elimina el primer ‘0’ inicial de la variablevar.{var/a/,}: Reemplaza la primera ocurrencia de ‘a’ con ‘,’.{var//a/,}: Reemplaza todas las ocurrencias de ‘a’ con ‘,’.grep ${test// /\|} file.txt: Usagreppara encontrar líneas enfile.txtque contengan cualquiera de las cadenas en la variabletest.echo ${var,,}: Convierte la cadena en la variablevara minúsculas.eval "$cmd": Expande y ejecuta el comando almacenado en la variablecmd.
Matemáticas
Expansión Aritmética en Bash
echo $(( 10 + 5 )): Realiza una suma.echo $(( x++ )): Post-incremento de la variablex.echo $(( ++x )): Pre-incremento de la variablex.echo $(( x-- )): Post-decremento de la variablex.echo $(( --x )): Pre-decremento de la variablex.echo $(( x ** y )): Calculaxelevado a la potencia dey.
Otros Comandos Matemáticos
factor 50: Imprime los factores primos de 50.seq 10|paste -sd+|bc: Suma los números del 1 al 10.awk '{s+=$1} END {print s}' filename: Suma los números en cada línea del archivo.cat file| awk -F 't' 'BEGIN {SUM=0}{SUM+=$3-$2}END{print SUM}': Calcula la diferencia entre la columna 3 y la columna 2 de un archivo.expr 10+20: Realiza una suma conexpr.expr 10*20: Realiza una multiplicación conexpr.expr 30 > 20: Realiza una comparación conexpr.echo "scale=2;2/3" | bc: Divide 2 entre 3 con una escala de 2 decimales usandobc.echo "10^2" | bc: Calcula 10 elevado a la potencia de 2 usandobc.echo "var=5;--var"| bc: Usa variables y decremento enbc.
Grep
Tipos de Grep
grep: Igual quegrep -G(Basic Regular Expression).fgrep: Igual quegrep -F(fixed text, ignorando meta-caracteres).egrep: Igual quegrep -E(Extended Regular Expression).pgrep: Igual quegrep -P(Perl Compatible Regular Expressions).rgrep: Igual quegrep -r(recursivo).
Opciones de Grep
grep -c "^$": Cuenta el número de líneas vacías.grep -o '[0-9]*': Extrae solo números enteros.grep -oP 'd*': Extrae solo números enteros (usando PCRE).grep '[0-9]{3}': Busca números con exactamente 3 dígitos.grep -E '[0-9]{3}': Busca números con exactamente 3 dígitos (usando ERE).grep -P 'd{3}': Busca números con exactamente 3 dígitos (usando PCRE).grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}': Extrae direcciones IP.grep -Po 'd{1,3}.d{1,3}.d{1,3}.d{1,3}': Extrae direcciones IP (usando PCRE).grep -w 'target': Busca la palabra completa ‘target’.grep 'btargetb': Busca la palabra completa ‘target’ (usando RE).grep -A 3 'bbo': Muestra 3 líneas después de la coincidencia de ‘bbo’.grep -B 3 'bbo': Muestra 3 líneas antes de la coincidencia de ‘bbo’.grep -C 3 'bbo': Muestra 3 líneas antes y después de la coincidencia de ‘bbo’.grep -o 'S.*': Extrae cadenas que comienzan con ‘S’.grep -o -P '(? all.json: Concatena archivos JSON, separando cada archivo con una coma.
Sustitución
sed 's/A/B/g' filename: Reemplaza todas las ocurrencias de ‘A’ con ‘B’.sed "s/aaa=.*/aaa=/my/new/path/g": Reemplaza líneas que comienzan con “aaa=” con “aaa=/my/new/path”.
Imprimir Rangos de Líneas
sed -n '/^@S/p': Imprime líneas que comienzan con ‘@S’.sed '/bbo/d' filename: Elimina líneas que contienen ‘bbo’.sed -n 500,5000p filename: Imprime las líneas 500 a 5000.sed -n '0~3p' filename: Imprime cada tercera línea.sed -n '1~2p': Imprime cada línea impar.sed -n '1p;0~3p': Imprime la primera línea y cada tercera línea después de esa.
Eliminar Espacios en Blanco
sed -e 's/^[ t]*//': Elimina espacios en blanco y tabulaciones al principio de la línea.sed 's/ *//': Elimina espacios en blanco al principio de la línea.sed 's/,$//g': Elimina comas al final de la línea.
Añadir Columnas
sed "s/$/t$i/": Añade una columna al final de cada línea.for i in $(ls);do sed -i "s/$/t$i/" $i;done: Añade el nombre del archivo como la última columna en cada línea de cada archivo.for i in T000086_1.02.n T000086_1.02.p;do sed "s/$/t${i/*./}/" $i;done >T000086_1.02.np: Añade la extensión del nombre del archivo a la última columna.
Eliminar Nueva Línea
sed ':a;N;$!ba;s/n//g': Elimina todas las nuevas líneas en el archivo.
Imprimir una Línea Específica
sed -n -e '123p': Imprime la línea 123.sed -n '10,33p' <filename: Imprime las líneas 10 a 33.
Cambiar Delimitador
sed 's=/=\/=g': Cambia el delimitador a ‘/’.
Reemplazar con Comodín
sed 's/A-.*-e//g' filename: Elimina patrones como “A-1-e” de cada línea.
Insertar Carácter en una Posición Específica
sed -r -e 's/^.{3}/&#/: Inserta ‘#’ después de los primeros tres caracteres de cada línea.
Awk
Separador de Campos
awk -F $'t': Establece el tabulador como separador de campos.awk -v OFS='t': Establece el tabulador como separador de campos para la salida.
Pasar Variables
awk -v a="$a" -v b="$b" "$1==a && $10=b" filename: Pasa las variablesaybaawky evalúa una condición.
Imprimir Número de Línea y Longitud
awk '{print NR,length($0);}' filename: Imprime el número de línea y la longitud de cada línea.
Encontrar Número de Columnas
awk '{print NF}': Imprime el número de campos (columnas) en cada línea.
Invertir Orden de Columnas
awk '{print $2, $1}': Imprime la segunda columna seguida de la primera.
Comprobar Comas en una Columna
awk '$1~/,/ {print}': Imprime líneas donde la primera columna contiene una coma.
Dividir y Hacer Bucle
awk '{split($2, a,",");for (i in a) print $1"t"a[i]}' filename: Divide la segunda columna por comas y imprime cada elemento con la primera columna.
Imprimir Líneas Antes de la Enésima Ocurrencia
awk -v N=7 '{print}/bbo/&& --N<=0 {exit}': Imprime líneas hasta que ‘bbo’ aparezca 7 veces.
Imprimir Nombre de Archivo y Última Línea
ls|xargs -n1 -I file awk '{s=$0};END{print FILENAME,s}' file: Imprime el nombre del archivo y la última línea de cada archivo.
Añadir Cadena al Principio de una Columna
awk 'BEGIN{OFS="t"}$3="chr"$3': Añade “chr” al principio de la tercera columna.
Eliminar Líneas con una Cadena
awk '!/bbo/' file: Imprime líneas que no contienen ‘bbo’.
Eliminar la Última Columna
awk 'NF{NF-=1};1' file: Elimina la última columna de cada línea.
Uso de NR y FNR
awk 'print FILENAME, NR,FNR,$0' fileA fileB: Muestra el uso de las variables NR (número de registro global) y FNR (número de registro por archivo).
Compuerta AND
awk -v OFS='t' 'NR=FNR{a[$1]=$2;next} NF {print $1,((a[$1]=$2)? $2:"0")}' fileA fileB: Implementa una compuerta AND entre dos archivos.
