martes, 17 de junio de 2025

Crea archivos de texto desde el menu contextual de Ubuntu

Crea nuevos archivos de texto desde el menú

Con estos pasos se crea un menú contextual para crear un archivo de texto vacio.

Crea un menu contextual en Ubuntu

¿Cansado de tener que entrar a una shell y crear un nuevo "archivo de texto.txt" con el comando Touch en el S.O. Ubuntu?

Abre la aplicación "Editor de Texto" (Gedit).
Presiona el botón "Guardar", y guárdalo en la carpeta "Home/Plantillas" con el nombre "Nuevo archivo de texto.txt".
Si haces clic derecho en el administrador de archivos, ahora te aparecerá la opción para crear un archivo de texto nuevo.

Enlaces

[e1] https://www.reddit.com

jueves, 8 de agosto de 2024

Termux (bash en el movil)

Termux

Emula tu terminal de bash en android

Archivo: Termux.properties

Para Los atajos de teclado entre terminales de Termux

Para activar los atajos de teclado para crear, renombrar o moverse entre las distintas sesiones de terminal.
En el directorio:
$/data/data/com.termux/files/home/.termux
archivo: termux.properties
seccion:

   *****************
   * HW Keyboard shortcuts
   *****************
   -elimina comentarios en las lineas para comandos rapidos
   ctrl + t = nueva terminal
   ctrl + 2 = bajar una terminal
   ctrl + 1 = subir una terminal
   ctrl + n = renombrar terminal
   

Termux-backup

Comprime en un archivo 'tar' el contenido de la variable PREFIX que es todo el árbol de directorio que usa Termux, cuyo contenido está en:

/data/data/com.termux/files/usr

.../files/usr $ ls -al
    total 77
    drwx------ 10 u0_a362 u0_a362  3488 Feb  4 16:43 .
    drwxrwx--x  4 u0_a362 u0_a362  3488 Jun 27 11:59 ..
    drwx------  2 u0_a362 u0_a362 53248 Jul 16 18:08 bin
    drwx------ 11 u0_a362 u0_a362  3488 Jul 16 19:22 etc
    drwx------ 28 u0_a362 u0_a362  8192 Jul 16 16:34 include
    drwx------ 12 u0_a362 u0_a362 20480 Jul 16 16:34 lib
    drwx------  8 u0_a362 u0_a362  3488 Jul 16 16:34 libexec
    drwx------ 29 u0_a362 u0_a362  3488 Jul 16 18:08 share
    drwx------  2 u0_a362 u0_a362  3488 Jul 17 18:25 tmp
    drwx------  8 u0_a362 u0_a362  3488 Jul  3 22:48 var
    

Se realiza una copia con el comando:

termux-backup -f <nombrearchivo>

en el directorio ~/storage/downloads/termux-archivos/termux-backup

/data/data/com.termux/files/home/storage/downloads/termux-archivos/termux-backup

Ejemplo:

Desde la ruta anterior:

$ termux-backup -f termux-backup_21-07-2024

miércoles, 10 de julio de 2024

Expresiones Regulares en SED

Expresiones Regulares en sed

El comando sed o editor de secuencias se usa para sustitucion de texto.

texto bash shell

Ejemplos de `sed` y Expresiones Regulares

1. Reemplazo simple con referencia

Ejemplo 1:

echo "hello 123" | sed 's/\([0-9]\+\)/[\1]/'
# Salida: hello [123]

Reemplaza cualquier secuencia de dígitos con los mismos dígitos entre corchetes.

Ejemplo 2:

echo "foo bar baz" | sed 's/\(bar\)/[\1]/'
# Salida: foo [bar] baz

Reemplaza la palabra "bar" con "[bar]".

2. Uso de clases de caracteres

Ejemplo 1:

echo "hello" | sed 's/[aeiou]/X/g'
# Salida: hXllX

Reemplaza todas las vocales con "X".

Ejemplo 2:

echo "sed script" | sed 's/[sS]/Z/g'
# Salida: Zed Zcript

Reemplaza todas las ocurrencias de "s" o "S" con "Z".

3. Alternancia

Ejemplo 1:

echo "cat bat rat" | sed 's/cat\|bat/dog/g'
# Salida: dog dog rat

Reemplaza "cat" o "bat" con "dog".

Ejemplo 2:

echo "one two three" | sed 's/one\|three/four/g'
# Salida: four two four

Reemplaza "one" o "three" con "four".

4. Anclas de línea

Ejemplo 1:

echo -e "foo\nbar" | sed 's/^foo/baz/'
# Salida: baz
#         bar

Reemplaza "foo" solo al inicio de la línea con "baz".

Ejemplo 2:

echo -e "foo\nbar" | sed 's/bar$/baz/'
# Salida: foo
#         baz

Reemplaza "bar" solo al final de la línea con "baz".

5. Reemplazo con repetición

Ejemplo 1:

echo "aaaabbbb" | sed 's/a\+/A/'
# Salida: Abbbb

Reemplaza una o más "a" consecutivas con "A".

Ejemplo 2:

echo "123456" | sed 's/[0-9]\+/NUM/'
# Salida: NUM

Reemplaza una secuencia de uno o más dígitos con "NUM".

6. Agrupación y referencia posterior

Ejemplo 1:

echo "abc abc" | sed 's/\(abc\) \1/\1 XYZ/'
# Salida: abc XYZ

Reemplaza "abc abc" con "abc XYZ" usando referencia posterior.

Ejemplo 2:

echo "123-456" | sed 's/\([0-9]\{3\}\)-\([0-9]\{3\}\)/\1.\2/'
# Salida: 123.456

Reemplaza el guión en "123-456" por un punto.


Comando Mejorado para Diferentes Cantidades de Dígitos

echo "1.2.24" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Desglose de la expresión regular:

  • \([0-9]\{1,2\}\) captura uno o dos dígitos.
  • \.? coincide opcionalmente con un punto.
  • \([0-9]\{1,2\}\) captura uno o dos dígitos.
  • \.? coincide opcionalmente con un segundo punto.
  • \([0-9]\{2,4\}\) captura entre dos y cuatro dígitos.

La cadena de reemplazo \1-\2-\3 formatea la salida con guiones.

Ejemplos

Entrada completa

echo "12.34.5678" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 12-34-5678

Entrada con grupos incompletos

echo "1.2.24" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 1-2-24

Entrada con solo dos grupos

echo "5.678" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 5-67-8

Nota

Esta expresión regular puede no funcionar correctamente si no se proporcionan suficientes grupos para que coincidan con los patrones. Asegúrate de que los datos de entrada siempre contengan al menos dos grupos de uno o dos dígitos y un grupo de dos a cuatro dígitos.

[e1] https://vergaracarmona.es/comando-sed/

[e2] https://www.gnu.org/software/sed/manual/sed.html#sed-script-overview

[e3] https://techsolutionscenter.wordpress.com/2011/11/17/uso-basico-del-comando-sed-reemplazar-cadenas-en-archivos-con-sed/

[e4] https://www-gnu-org.translate.goog/software/sed/manual/sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

[e5] https://www-grymoire-com.translate.goog/Unix/Sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

[e6] https://edoras-sdsu-edu.translate.goog/doc/sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

jueves, 4 de julio de 2024

Nano - Atajos de teclado

Nano

Atajos de teclado del editor de texto Nano.

Lista de comandos básicos del Editor Nano

  • Ctrl + g: Nos muestra el menú de ayuda.
  • Ctrl + o: Nos guarda el documento.
  • Ctrl + u: Pega en la línea que nos encontramos lo que se ha copiado en el buffer.
  • Ctrl + l: Redibuja la pantalla actual.
  • Ctrl + j: Justificamos el párrafo actual.
  • Ctrl + m: Insertaremos un retorno de carro en la posición actual del cursor.
  • Ctrl + _: Vamos a un número de línea concreto.
  • Ctrl + r: Insertar otro fichero en el actual.
  • Ctrl + w: Buscar una cadena.
  • Ctrl + y: Nos lleva a la página anterior.
  • Ctrl + v: Nos lleva a la página siguiente.
  • Ctrl + t: Revisar la ortografía.
  • Ctrl + x: Salimos del editor.

Identificar las Líneas

Número de línea del cursor

$ nano -c tuarchivo.sh
Con este comando te sale una linea por encima de los atajos de teclas indicandote donde está situado el cursor.

Numerar todas las líneas

$ nano -l tuarchivo.sh
Con este comando te salen todas las linear numeradas a la izquierda.

Copiar, cortar y pegar.

Copiar

alt + 6
Con esta combinacion de teclas copiamos una línea completa.

Alt + a (inicio) y Alt + 6 (final)
Con esta combinación copiamos el texto seleccionado.

Cortar

Ctrl + k
Con esta combinación cortamos una linea de texto.

Ctrl + 6 (inicio) y Ctrl + k (final)
Con esta combinación cortamos un texto en concreto.

Pegar

Ctrl + u
Con esta combinación pegamos el texto seleccionado anteriormente.

lunes, 24 de junio de 2024

Expresiones Regulares - Regex

Construir Expresiones Regulares

Construir Expresiones Regulares

Pasos para construir una expresión regular

  1. Define tu objetivo: ¿Qué quieres buscar o validar? Por ejemplo, puede ser un número de teléfono, una dirección de correo electrónico, una fecha, etc.
  2. Desglosa el patrón: Divide el objetivo en partes más pequeñas y analiza cada parte por separado.
  3. Elige los metacaracteres adecuados: Usa los metacaracteres y constructos de expresiones regulares para definir cada parte del patrón.
  4. Construye la expresión regular: Une todas las partes usando los metacaracteres adecuados.
  5. Prueba tu expresión regular: Utiliza herramientas en línea o scripts para probar tu expresión regular con diferentes entradas.

Metacaracteres en Expresiones Regulares

Metacaracteres Básicos

  • .: Coincide con cualquier carácter excepto una nueva línea.
  • ^: Coincide con el inicio de una línea.
  • $: Coincide con el final de una línea.
  • \: Escapa un metacaracter para que se trate como un carácter literal (por ejemplo, \. coincide con un punto literal).
  • []: Define un conjunto de caracteres. Coincide con cualquiera de los caracteres incluidos (por ejemplo, [a-z] coincide con cualquier letra minúscula).

Clases de Caracteres

  • \d: Coincide con cualquier dígito (equivalente a [0-9]).
  • \D: Coincide con cualquier carácter que no sea un dígito.
  • \w: Coincide con cualquier carácter de palabra (letras, dígitos y guion bajo) (equivalente a [a-zA-Z0-9_]).
  • \W: Coincide con cualquier carácter que no sea de palabra.
  • \s: Coincide con cualquier carácter de espacio en blanco (espacios, tabulaciones, saltos de línea).
  • \S: Coincide con cualquier carácter que no sea un espacio en blanco.

Cuantificadores

  • *: Coincide con cero o más repeticiones del carácter o grupo anterior.
  • +: Coincide con una o más repeticiones del carácter o grupo anterior.
  • ?: Coincide con cero o una repetición del carácter o grupo anterior.
  • {n}: Coincide con exactamente n repeticiones del carácter o grupo anterior.
  • {n,}: Coincide con n o más repeticiones del carácter o grupo anterior.
  • {n,m}: Coincide con entre n y m repeticiones del carácter o grupo anterior.

Anclas y Límite de Palabra

  • \b: Coincide con un límite de palabra (la posición entre un carácter de palabra y un carácter que no es de palabra).
  • \B: Coincide con una posición que no es un límite de palabra.

Grupos y Alternancia

  • (): Agrupa caracteres o subexpresiones. Los grupos capturados pueden ser referenciados posteriormente.
  • |: Actúa como un OR lógico entre patrones (por ejemplo, a|b coincide con a o b).

Ejemplo de Expresión Regular

Vamos a construir una expresión regular de ejemplo que use varios de estos metacaracteres para validar una dirección de correo electrónico simple:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Desglose

  • ^: Inicio de la línea.
  • [a-zA-Z0-9._%+-]+: Coincide con uno o más caracteres que pueden ser letras, dígitos, puntos, guiones, subguiones, signos de más o de porcentaje.
  • @: Coincide con el símbolo arroba.
  • [a-zA-Z0-9.-]+: Coincide con uno o más caracteres que pueden ser letras, dígitos, puntos o guiones.
  • \.: Coincide con un punto literal.
  • [a-zA-Z]{2,}: Coincide con dos o más letras.
  • $: Final de la línea.

Ejemplo 1: Construcción de una expresión regular para una dirección de correo electrónico

  1. Define el objetivo: Queremos validar una dirección de correo electrónico.
  2. Desglosa el patrón:
    • Parte local (antes del @): puede incluir letras, números, puntos, guiones y guiones bajos.
    • Símbolo @.
    • Dominio: puede incluir letras, números y guiones, seguido por un punto y un dominio superior (como .com, .org).
  3. Elige los metacaracteres:
    • \w para caracteres de palabra.
    • . para cualquier carácter.
    • @ como carácter literal.
    • [a-zA-Z0-9-] para el dominio.
    • \. para el punto en el dominio.
  4. Construye la expresión regular:
    ^[\w.-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}$

    Desglose:

    • ^[\w.-]+: Parte local (caracteres de palabra, puntos y guiones).
    • @: Símbolo @.
    • [a-zA-Z0-9-]+: Dominio (letras, números y guiones).
    • \.: Punto en el dominio.
    • [a-zA-Z]{2,6}$: Dominio superior (2 a 6 letras).

Ejemplo 2: Construcción de una expresión regular para una fecha con puntos

La siguiente expresión regular valida fechas en los formatos 'DD.MM.AA' o 'DD.MM.AAAA':

\b\d{1,2}\.\d{1,2}\.(\d{2}|\d{4})\b

Esta expresión regular validará fechas en los formatos:
10.10.22, 10.10.2022, 1.10.22, 1.10.2222, 10.1.22 o 10.1.2222

  1. Define el objetivo: Queremos validar una fecha separada por puntos.
  2. Desglosa el patrón:
    • Día: Pueden ser uno (si se omite el cero a la izquierda) o dos digitos.
    • Mes: Pueden ser uno (si se omite el cero a la izquierda) o dos digitos.
    • Año: Pueden ser dos o cuatro digitos si es el año completo.
  3. Elige los metacaracteres:
    • \b Indica un limite de palabra
    • \d Para cualquier digito.
    • \. Para el punto como carácter.
  4. Construye la expresión regular:
    \b\d{1,2}\.\d{1,2}\.(\d{2}|\d{4})\b

    Desglose:

    • \b: Indica un límite de palabra.
    • \d{1,2}: Coincide con uno o dos dígitos (día y mes).
    • \.: Coincide con un punto literal.
    • (\d{2}|\d{4}): Coincide con dos o cuatro dígitos (año).
    • \b: Indica un límite de palabra.

Desglose de la expresión regular

  • \b: Indica un límite de palabra para asegurarse de que la fecha no es parte de una cadena más larga.
  • \d{2}: Coincide con exactamente dos dígitos para el día.
  • \.: Coincide con el carácter punto literal.
  • \d{2}: Coincide con exactamente dos dígitos para el mes.
  • \.: Coincide con el carácter punto literal.
  • \d{2}: Coincide con exactamente dos dígitos para el año en formato corto (AA).
  • (\d{2})?: Coincide opcionalmente con otros dos dígitos para el año en formato largo (AAAA).
  • \b: Indica un límite de palabra para asegurarse de que la fecha no es parte de una cadena más larga.

Ejemplo 3: Construcción de una expresión regular para una fecha limitada a dias del mes

La siguiente expresión regular valida fechas en los formatos:

  • 'DD-MM-AAAA'
  • 'DD MM AAAA'
  • 'DD_MM_AAAA'
  • DD-mes-AAAA'

^(?:[\w-]+[[:space:]]+)*(?:(?:0?[1-9]|[12][0-9]|3[01])(?:[\s_-])(?:0?[1-9]|1[0-2])(?:[\s_-])(?:\d{4}))((?:[\s_-]+[\w-]+)*)

Esta expresión regular busca una cadena que comienza con cero o mas palablas separadas por espacios, guiones o guiones bajos. Luego busca una fecha en los formatos especificados (DD-MM-AAAA, DD MM AAAA, DD_MM_AAAA o DD-mes-AAAA). Posteriormente captura cualquier cadena que siga a la fecha, pudiendo estar separada de la fecha por uno o mas espacio, guiones o guiones bajos.
10-10-2024 Nueva España.pdf, 10 10 2024 Nueva España.pdf, 10_10_2024 Nueva España.pdf, 10-10-2024 Nueva España-10-10-2024.pdf, Nueva_España_10_octubre_2024_Madrid.pdf o 2024-10-10_Madrid_Nueva_españa

  1. Construye la expresión regular:
    (?:(?:0?[1-9]|[12][0-9]|3[01])(?:[\s_-])(?:0?[1-9]|1[0-2])(?:[\s_-])(?:\d{4}))

    Desglose:

    • (?:(?:0?[1-9]|[12][0-9]|3[01]): busca un número de día que puede ser de uno o dos digitos y comprendido entre 1 y 31.
    • (?:[\s_-]): Busca un separador de fecha que puede ser un espacio en blanco, un guión o un guión bajo.
    • (?:0?[1-9]|1[0-2]): Busca un numero de mes que puede ser de uno o dos digitos y comprendido entre 1 y 12.
    • (?:[\s_-]): Busca otro separador de fecha.
    • (?:\d{4}): Busca un numero de año de cuatro dígitos.

Prueba tu expresión regular

Puedes usar herramientas en línea como regex101 para probar y depurar tus expresiones regulares.

jueves, 20 de junio de 2024

Enlaces blandos - comando bash

Enlaces Simbólicos

Siempre uso enlaces simbólicos para los script almacenados en mis documentos y que me cargan varias pestañas de navegador. Son muy útiles, para hacerlo por proyectos, cargando con un click, las pestañas que necesites en cada caso.



Enlaces blandos en linux

Importante: no son lo mismo un enlace duro, que uno blando y sólo se diferencian en el atributo '-s' que lleva el enlace blando.

Enlace a un archivo

$ ln -s [../ruta_archivo_original] [../ruta_enlace_blando/nombre_enlace]

ejemplo donde se omite la ruta_enlace_blando por ser el directorio actual.
$ ln -s /home/lks/Documentos/trabajando/proyecto\ MKdocs.sh Ln_proyecto-Mkdocs

Varios enlaces blando a la vez

$ ln -s ~/Documentos/trabajando/*.sh ~/Documentos/trabajando/murrulina-txt ~/Escritorio/enlaces-simbolicos

En esta ocasion, se crearan enlaces simbolicos para todos los archivos cuya extension sea '.sh' y para la carpeta murrulina-txt dentro de la carpeta 'enlaces-simbolicos'

Enlaces

[e1] https://www.ionos.es/digitalguide/servidores/configuracion/comando-ln-de-linux/