Skip to content
56K

56K

La web de Fanta

Menu
  • Unix/Linux
  • Cacharreo
  • Games
  • Streaming
  • Notas
  • /dev/null
Menu

Scripts in the night – 001 – n de notas

Posted on 17/10/202116/01/2023 by fanta

La necesidad de escribir notas de diferentes temas existe. Mucha gente opta por tener un archivo infinito donde va pegando cosas y luego las busca.
Este script en bash nace de esa necesidad de tener categorizadas las notas y de poder tomarlas rápidamente con nuestro editor favorito.

El código es muy sencillo y puede descargarse desde aquí:  git.56k.es/fanta/n

 

La forma de instalar n

Para instalar n en el sistema se puede hacer así:

$ git clone http://git.56k.es/fanta/n /tmp/n
# cp -pv /tmp/n/n /usr/local/bin/
# chmod +x /usr/local/bin/n

Lo que viene a ser clonar el repositorio git.56k.es/fanta/n en el directorio /tmp/n y luego como root se copia el script n en /usr/local/bin/ .
Cuando pongo $ estoy refiriéndome a que ese comando se ejecuta con un usuario normal. Cuando indico # es que ese comando se lanza como root.

Cuando indicamos al comando «cp» las opciones -p y -v estamos diciendo que preserve los permisos y que nos imprima en pantalla lo que ha copiado (-v verbose).
De todos modos por asegurarnos al final como root he puesto que se haga ejecutable el script (chmod +x) pese a que no sería necesario.

 

Analizando cosas buenas de este código

Aquí el código integro al día de hoy. Lo ideal es consultar el del repositorio por si existen cambios.

 

#!/bin/bash
nDir="$HOME/.config/n"
#editor="/usr/bin/vim"
#editor="/usr/bin/emacs"
editor="/usr/bin/nano"

check_root(){ if [ "$(id -u)" == 0 ]; then echo "don't run n as root"; exit; fi }
create_nDir(){ [ ! -d "$nDir" ] && mkdir -p $nDir ; }
get_tagListRecentUseOrder(){ { nTags=$(ls -1t $nDir | tee /dev/fd/3 | wc -l); } 3>&1 ; }
create_tag(){ nDir="$1" ; tagName="$2" ; [ ! -f "$nDir/$tagName" ] && touch $nDir/$tagName ; }
check_tag(){ tagName="$1" ; [[ "$tagName" = "${tagName%[[:space:]]*}" ]] && echo 0 || echo 1 ; }

check_root ; create_nDir
[[ $# -eq 0 ]] && get_tagListRecentUseOrder
[[ $# -eq 1 ]] && [[ $(check_tag "$1") -eq 1 ]] && echo "bad tag name . Please try again without spaces." && exit 
[[ $# -eq 1 ]] && create_tag "$nDir" "$1" && $editor $nDir/$1

 

Las notas se crearán en el directorio oculto .config/n dentro de nuestro home. De modo que si uso n con el usuario pepito lo más probable es que estén en /home/pepito/.config/n/

El editor por defecto que usará n es nano. Esto puede cambiarse fácilmente comentando la línea y descomentando las de otros editores. Puedes añadir también otros si indicas la ruta del ejecutable.

 

No permitir que root pueda ejecutar n

Con la siguiente comprobación no permitiremos que root pueda ejecutar n.

check_root(){ if [ "$(id -u)" == 0 ]; then echo "don't run n as root"; exit; fi }

Lo que realmente hace es comprobar el id del usuario que ejecuta el script. Si por ejemplo ese id es 0 estaremos hablando de que el usuario es root.

N mostrará por pantalla que no podemos ejecutar n como root y no seguirá.

 

Funciones

El script es muy pequeño pero tiene sus funciones bien definidas. Trabajar así te permitirá poder llevarte esos fragmentos de código que necesitas en otro script fácilmente.
N al ejecutarse sin parámetros intenta mostrar por pantalla el listado de nuestras notas, es decir, los tags de categorización. Se mostrarán en el orden de «las primeras las más recientes, las que hemos usado hace menos tiempo».

 

 

La forma de usar n es simple. Escribes «n» y ves las notas que tienes. Si quieres añadir algo de info en una existente llamada tareas pues escribes «n tareas».
Si alguna categoría no existe la creas de la misma forma.

Problemas conocidos

El borrado de notas no se gestiona con n. Esto se puede hacer pero he preferido no crear una función que lo haga.
Si quieres borrar algunas notas puedes hacerlo eliminado el archivo en /home/tuusuario/.config/n/

N es una forma rápida de categorizar notas y se integra bien con git

n es lo que utilizo para tomar notas. Es como tener muchos archivos en un directorio pero lo manejas rápidamente.

Si estás viendo algo que quieres anotar solo escribes n categoría y lo dejas pegado. Si al rato quieres añadir algo más o cambiarlo escribes lo mismo.
Las notas podrían ir perfectamente a parar a un repositorio git privado.  De esta forma puedes usar n en diferentes equipos y siempre acceder a tus notas.

 

Y más o menos eso es todo lo que quería explicar de este script.

Saludos cordiales.

2 thoughts on “Scripts in the night – 001 – n de notas”

  1. artudito dice:
    23/10/2021 a las 19:41

    ¿Los scritps pueden o deben tener licencia? Lo digo porque veo que muchos compartes sus scripts sin más, desde tu experiencia como programador qué nos puedes decir.

  2. fanta dice:
    23/10/2021 a las 23:55

    La licencia es algo que cada cual opta por una u otra. En muchos países si no se indica es copyright estricto por defecto.

    En el caso de scripts por ejemplo pues depende. En este caso le puse licencia GPL http://git.56k.es/fanta/n

    Pero vamos que generalmente son pequeños fragmentos de código, pocas líneas. Estos scripts de pocas líneas no necesitan generalmente una licencia porque los compartes y te da igual quien los coja.

    Lo que si que está bien en las empresas es dejar al menos en comentario quien lo ha realizado y el correo. Esto permite que si se tienen problemas se pueda notificar a la persona que lo hizo.

    No se si esto que he dicho te sirve :). Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Toda esta tecnología moderna sólo hace que la gente trate de hacer todo a la vez

Comentarios recientes

  • fanta en BQ Cervantes 4 – 0x00 – Instalar el Firmware para desarrollo
  • Beatriz en BQ Cervantes 4 – 0x00 – Instalar el Firmware para desarrollo
  • fanta en i3wm en el ordenador del trabajo con 3 pantallas
  • Punk en i3wm en el ordenador del trabajo con 3 pantallas
  • Twicsy en Eliminar kernels viejos en redhat y liberar espacio en /boot
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Jorge en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Camilo en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • eovoltio en Mastodon.madrid se apaga el 12 de Octubre
©2023 56K | Built using WordPress and Responsive Blogily theme by Superb