Chuleta de Comandos Bash
Variables
Section titled “Variables”A=10echo $Aecho ${A}DIOSecho ${#A} // devuelve 2 (longitud)unset A
b=“HOLA”; echo ${#b) -> longitud de la variable (4)
local A -> variable local dentro de una función
readonly AA=20 -bash: A: readonly variableVariables de entorno
Section titled “Variables de entorno”
Para ver todas las variables que están definidas se puede utilizar el comando env
Ejecución scripts
Section titled “Ejecución scripts”Permisos
Section titled “Permisos”chmod u+x nombre_script.shParámetros, argumentos
Section titled “Parámetros, argumentos”
$0 -> nombre script$# -> número de parámetros$* -> todos los parámetros vistos como una palabra$@ -> todos los parámetros posicionales, cada uno está entrecomilladoRedirecciones
Section titled “Redirecciones”ls 2> fichero ls 2>/dev/null -> Redirección salida errorls 2>&1 -> Redirección salida error a estándard (muestra el error, como si no estuviese el 2)ls /aa &> fich -> todas las salidas a fichls /aa &> /dev/null -> Ocultar todas las salidas, error y OKls /saa < fich // redirección entradals /saaa &>fich // redirección salida estándar y errores
ORDEN DE EVALUACIÓNRedirecciónes E/SSustitución, expansión variablesSustitución, expansión nombres ficheros
cmd < fichero -> coge como entrada standard un fichero
cat << end Escriure el que vols…endEntrada Salida de datos
Section titled “Entrada Salida de datos”Entrada
Section titled “Entrada”echo n "Escriu DNI i lletra separats per un espai"read DNI LLETRA
read -p "Type something: " text // -p mostrar prompt -e linea enteraType something: josep garcia // se guarda en $text
read -p "PASS" -s VAR // s-> silencePASS: // no se muestran caracteres que se escriben, guarda en VARControl de flujo, bucles
Section titled “Control de flujo, bucles”seq valor_inicio valor_finseq valor_inicio incremento valor_fin
for i in $(seq 1 10); do echo $i; done #1 2 3 4 5 6 7 8 9 10for i in $(seq 1 2 10); do echo $i; done #1 3 5 6 9Se utilizan bucles para leer ficheros y salidas de comandos
# Leemos /etc/passwordFILE='/etc/passwd'while read line; do echo "--> $line"done < $FILE
# Leemos la salida de un comandofind /tmp -type f -name "*txt" | while read FILEdo echo "--> $FILE"doneFiltros
Section titled “Filtros”TR (significa: translate o transliterate)-s sustituye conjunto carácteres repetidos por uno solo-c sustituye carácteres específicos: tr -c “[a-z]” x -> traduce a x-d borra: tr -d [a-z]cat datos_demo.txt | tr -s " " | cut -f6 -d "#"
# Cambia espacios por \necho “a b c d e” | tr ‘ ’ ‘\n‘
# BORRA la aparición de localhost en el fich# cat /etc/hosts | tr -d ‘localhost'
# Deja un solo :# echo “AA::::::::B” | tr -s “:” -> AA:B
# convertir a minúsculasecho "EaaaEM" | tr '[:upper:]' ‘[:lower:]’echo "EaaaEM" | tr "a-z" "A-Z"#y="this Is A test"echo "${y^^}" -> THIS IS A TESTecho "${y,,}" -> this is a testsed ’s/a_sustitutir/a_sustituto/g’ fich.txt
** SED reemplaza cadenas, TR carácteresecho "good good" | sed 's/good/bad/g'bad badecho "good good" | tr ’good’ ‘x'xxxx xxxx
Obtener línea 2: sed -n 2l fich.txtObtener todos menos 12 y 18: sed 12,18d fich.txtBorrar líneas en blanco: sed ’s/^$ /d’ fich.txtNo mostrar líneas que tengan hola: sed ‘/hola/d’ fich.txtCUT-d carácter delimitador-b,-c,-f corta por bytes, carácteres o campos
cut -f6- -d “#” -> saca la 6 y la siguientecut -f1-6 -d “#" -> de la 1 a la 6cut -f1,6 -d “#" -> la 1 y la 6
# cat datos_demo.txt | cut -f1-3 -d “#"1#josep#garcia2#ana#martin3#olivia#garciaHEAD -> Muestra 10 primeras lineasHead -n2 fich.txt -> muestra 2 primeras líneasMuestra las 10 últimas líneasTail -n3 fich.txt -> muestra las 3 últimasSORT -> ordenar-f no distingue Mayús/minús-b (ignora blancos al principio línea)-r (orden inverso)
Fitxer:aa aabb:xaaa abb:yaaa aaa:z
cat fich | sort -k3n -t”:”n-> compara con campo numérico ->> orden numéricoK3 -> según tercer campo (campos según espacios)-t”:” -> campos delimitados por dos puntos# cat ordenar.txt | sort -k1aa aabb:xaaa aaa:zaaa abb:y# cat ordenar.txt | sort -k2aaa aaa:zaa aabb:xaaa abb:y# cat ordenar.txt | sort -k2 -t":"aa aabb:xaaa abb:yaaa aaa:zDescarta repeticiones de línea sucesivas
Fitxer:aaaasfaaaasfasdfasdffaaaaaa
# cat unicos.txt | uniqaaaasfaaaasfasdfasdffaaa# cat unicos.txt | uniq -c -> cuenta ocurrencias 1 aaa 1 asf 1 aaa 1 asfasdf 1 asdff 2 aaa
# cat unicos.txt | uniq -u -> muestra líneas únicasaaaasfaaaasfasdfasdffOperaciones con ficheros
Section titled “Operaciones con ficheros”Comprimir
Section titled “Comprimir”gzip fichero.txt -> fichero.txt.gz
bzip bigfile -> bigfile.bz2
tar cfz bigfile.tgz bigfile
zip ./bigfile.zip bigfile
tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4
#Varios directorios i ficherostar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txtDescomprimir
Section titled “Descomprimir”tar xf bigfile.tgztar -xzvf archive.tar.gz
unzip bigfile.zipgunzip bigfile.gzbunzip2 bigfile.gz2Tips varios
Section titled “Tips varios”# Creamos un fichero si no existe[ -f $FILE ] || touch $FILE
# Variables de solo lecturareadonly AA=20 -bash: A: readonly variableAvanzados
Section titled “Avanzados”Comando shift
#shift 3 \\ Con el comando shift indicamos que ahora el parámetro primero sea $4, pues hemos hecho que empiece inmediatamente después de la tercera posición
while [ $1 ]; do echo “parametro $1” shiftdone