Notas sobre awk
Una poderosa herramienta para procesar datos AWK es un lenguaje de programación diseñado para el procesamiento de datos basados en texto. El nombre, …
#!/bin/bash
# Primer script
echo "Hola Mundo!"
A='Hola mundo con bash!'
echo $A
# Salida:
Hola mundo con bash!
#!/bin/bash
for numero in {1..20..2};
do
echo Este es el número: $numero
done
# Imprime:
Este es el número: 1
Este es el número: 3
Este es el número: 5
Este es el número: 7
Este es el número: 9
Este es el número: 11
Este es el número: 13
Este es el número: 15
Este es el número: 17
Este es el número: 19
nombre='Pepe'
if [[ nombre=='Pepe' ]]; # <- Atención a los espacios y a los corchetes
echo "El nombre es Pepe"
then
elif [[ nombre=='Juan' ]]
echo "El nombre es Juan"
else
echo "No es ni Pepe ni Juan"
fi
# Imprime
El nombre es Pepe
Operador | Significado |
---|---|
-lt | Menor que (<) |
-gt | Mayor que (>) |
-le | Menor o igual que (<=) |
-ge | Mayor o igual que (>=) |
-eq | Igual (==) |
-ne | Distinto de (!=) |
#test.sh
#!/bin/bash
num1=$1 # la variable toma el primer valor que le pasamos al script
num2=$2 # la variable toma el segundo valor que le pasamos al script
if [[ $num1 -gt $num2 ]];
then
echo $num1 es mayor que $num2
else
echo $num2 es mayor que $num1
fi
Si ejecutamos el fichero, con los parámetros siguientes:
$ ./test.sh 2 3
#Imprime:
3 es mayor que 2
Operador | Significado |
---|---|
= | igual, las dos cadenas de texto son exactamente idénticas |
!= | no igual, las cadenas de texto no son exactamente idénticas |
< | es menor que (en orden alfabético ASCII) |
> | es mayor que (en orden alfabético ASCII) |
-n | la cadena no está vacía |
-z | la cadena está vacía |
Wildcards (comodines): *
operador | Devuelve true si |
---|---|
-e name | name existe |
-f name | name es un archivo normal (no es un directorio) |
-s name | name NO tiene tamaño cero |
-d name | name es un directorio |
-r name | name tiene permiso de lectura para el user que corre el script |
-w name | name tiene permiso de escritura para el user que corre el script |
-x name | name tiene permiso de ejecución para el user que corre el script |
El siguiente script nos informa sobre el contenido de un directorio:
#!/bin/bash
for file in $(ls);
do
if [[ -d $file ]];
then
echo directorio: $file
else
if [[ -x $file ]];
then
echo archivo ejecutable: $file
else
echo archivo no ejecutable: $file
fi
fi
done
#!/bin/bash
echo "Script de una función"
a=7
b=67
function suma() {
echo "La suma de $a+$b es: " $(($1+$2))
}
suma $a $b
$ rm -r Dir1 [Dir2 Dir3]
$ date # sábado, 25 de abril de 2020, 11:44:03 CEST
$ date +"%a" # sáb
$ date +"%A" # sábado
$ date +"%b" # abr
$ date +"%B" # abril
$ date +"%d" # 25
$ date +"%D" # 04/25/20
$ date +"%F" # 2020-04-25
$ date +"%H" # 11 (horas)
$ date +"%M" # 49 (minutos)
$ date +"%S" # 23 (segundos)
$ date +"%T" # 11:51:07
$ date +"%U" # 16 (semana)
$ date +"%Z" # CEST (TimeZone)
$ date +"%d-%m-%y" # 25-04-20
$ date +"%d-%m-%Y" # 25-04-2020
# El nombre de la carpeta y del archivo es el día actual, en formato yyyymmdd
#fecha actual
fecha=`date +"%Y%m%d"`
#crear directorio
mkdir $fecha
# poner el cursor en la carpeta creada
cd $fecha
#crear fichero
touch $fecha.txt
#Mostrar mensaje
echo "Se he creado el directorio $fecha y, dentro de este, el archivo $fecha.txt"
-du (Uso de disco)
-df (Sistema de archivos de disco)
$ df
# Muestra algo así:
Filesystem 1K-blocks Used Available Use% Mounted on
C:/Program Files/Git 231422972 132131860 99291112 58% /
D: 17342460 15307100 2035360 89% /d
$ df -h
# Muestra algo así:
Filesystem Size Used Avail Use% Mounted on
C:/Program Files/Git 221G 127G 95G 58% /
D: 17G 15G 2,0G 89% /d
# uso del disco
$ du -sh
5,1G .
find: <find camino opciones>
#Ejemplo de find con exec
#Buscar los ficheros jpg
#Copiarlos a la ruta /Documents/test
$ find -iname "*.jpg" -exec cp '{}' c:/test ';'
# Muestra el primer carácter de cada línea del fichero
cut -c1 fichero.txt
# Muestra los caracteres 1 a 10 de cada línea del fichero
cut -c1-10 fichero.txt
#Distintos intervalos
cut -c1-10,20-30 ficheros.txt
# -d indica el separador que se va a usar
# -f indica la columna que se va a extraer
cut -d";" -f1 nombres.csv
grep: Muestra solo las líneas que cumplen con un patrón. Se pueden usar palabras o expresiones regulares.
-v : Muestra las que NO coinciden con el patrón -l : Indica el nombre del fichero donde ha encontrado la coincidencia -w : El patrón tiene que ser una palabra independiente -n : Indica el nº de línea -i : no distingue entre mayúsculas y minúsculas -c : nº de líneas que cumplen el patrón -r : búsqueda recursiva
# Búsqueda recursiva desde el directorio actual; muestra el nombre del fichero que cumple el patrón
grep -l -r markdown
# Elimina las líneas en blanco:
$ grep -v '^$'
Cuando recorremos un directorio con ficheros cuyo nombre puede que contenga espacios en blanco (algo muy habitual si descargamos vídeos con youtube-dl), no funciona el típico:
#!/bin/bash
directorio="midirectorio"
for i in $(ls $directorio)
do
echo $i
done
Ni siquiera serviría entrecomillar el $i, ya que no le llegaría el nombre del fichero al recortarse en el for.
La solución es cambiar antes de hacer el for el separador de campo con:
IFS=' '
Quedando el script así:
#!/bin/bash
directorio="midirectorio"
IFS='
'
for i in $(ls $directorio)
do
echo $i
done
Una poderosa herramienta para procesar datos AWK es un lenguaje de programación diseñado para el procesamiento de datos basados en texto. El nombre, …
/* Variables de color para fácil modificación */ :root { --main-color: #01af9f; --secondary-color: GreenYellow; --bg-color-one: white; …