BashBlog: Un script en Bash para crear blogs
En 2020 leí un artículo de Victorhck donde mostraba el uso de una herramienta para crear blogs utilizando un script en Bash, y desde ese entonces siempre me pareció interesante. Durante ese tiempo me daba vueltas en mi mente la idea de abrir un blog personal donde pudiera escribir y guardar simplemente mis notas o bitácoras de herramientas que voy descubriendo y aprendiendo a utilizar en Linux. Hasta este año, por fin me animé a dar el paso y crear este blog para que de alguna manera, ir organizando en este espacio todas esas lluvias de notas que he ido escribiendo, y se me ocurrió comenzar publicando mis notas sobre esta misma herramienta que me permitió abrir mi blog.
Instalación
Clona el repositorio:
git clone https://github.com/cfenollosa/bashblog.git
cd bashblog
Otorga permisos de ejecución y cópialo para tenerlo disponible en todo el sistema:
chmod 755 bb.sh
sudo cp bb.sh /usr/local/bin
Si tienes en mente escribir todas tus publicaciones en Markdown, debes instalar un programa que convierta Markdown a HTML (por ejemplo:
Markdown.pl,markdown,smu).
Configuración
Puedes modificar directamente las variables de configuración dentro de la función global_variables() en el script, o crear un archivo .config en el directorio donde vivirán todas las publicaciones de tu blog.
Aquí se listan y explican las variables que puedes configurar:
| Variable | Descripción |
|---|---|
global_title | Título del blog. |
global_description | Descripción o subtítulo del blog. |
global_url | URL pública del blog (sin barra al final). |
global_author | Nombre del autor principal del blog. |
global_author_url | URL del perfil, repositorio o sitio web del autor. |
global_email | Correo electrónico del autor. |
global_license | Licencia del contenido del blog. |
global_analytics | ID de Google Analytics (ej. UA-XXXXX). |
global_analytics_file | Archivo con código personalizado para otros sistemas de analíticas o para el código Universal de Google Analytics. |
global_feedburner | URL de Feedburner para redirigir el feed RSS. Déjalo vacío para usar el feed local. |
global_twitter_username | Nombre de usuario de Twitter (sin la @) para el enlace de compartir y las menciones. |
global_twitter_card_image | URL absoluta de la imagen por defecto para las vistas previas (Twitter Cards) de los enlaces del blog. |
global_twitter_cookieless | Si es true, muestra un enlace simple para compartir (sin cookies ni scripts). Si es false, carga el widget oficial de Twitter con el contador de tweets. |
global_disqus_username | Nombre de usuario de tu cuenta de Disqus para habilitar los comentarios. |
index_file | Nombre del archivo de la página principal. |
number_of_index_articles | Número de posts que se mostrarán en la página principal. |
archive_index | Nombre del archivo que lista todos los posts. |
tags_index | Nombre del archivo que lista todas las etiquetas (tags). |
non_blogpost_files | Array de archivos HTML que BashBlog ignorará al generar la página principal y los feeds. Orientado a páginas estáticas que no son posts (ej. (about.html contact.html)). |
blog_feed | Nombre del archivo del feed RSS. |
number_of_feed_articles | Número de posts que se incluirán en el feed RSS. |
cut_do | Si es cut, se mostrará el contenido del post solo hasta la primera línea horizontal en la página principal y en el feed RSS. Si se deja vacío (""), se muestra el post completo. |
cut_tags | Si es yes y la opción anterior es cut, oculta las etiquetas del post en la página principal. Si es no, las etiquetas seguirán visibles aunque el texto esté cortado. |
cut_line | Expresión regular que indica la línea HTML donde se debe cortar el post. |
save_markdown | Si es yes, guarda el archivo Markdown (.md) original junto al archivo HTML (.html) generado. Si se deja vacío (""), se descarta el .md y solo se conserva el .html. |
prefix_tags | Prefijo de los archivos HTML generados para cada etiqueta (tag). |
header_file | Ruta a un archivo HTML con una cabecera <head> personalizada. Déjalo vacío para que BashBlog la genere automáticamente. |
footer_file | Ruta a un archivo HTML con un pie de página (footer) personalizado. Déjalo vacío para que BashBlog lo genere automáticamente. |
body_begin_file | Archivo HTML cuyo contenido se incrustará justo después de abrir la etiqueta <body>. |
body_end_file | Archivo HTML cuyo contenido se incrustará justo antes de cerrar la etiqueta </body>. |
body_begin_file_index | Similar a body_begin_file, pero su contenido solo se incrusta en la página principal (index.html). |
css_include | Array de archivos CSS que se enlazarán en todas las páginas (ej. (main.css blog.css)). Si se deja vacío, BashBlog generará uno por defecto. |
html_exclude | Array de archivos HTML que se excluirán de la página principal, del feed RSS y de los conteos de etiquetas. Útil para posts antiguos u obsoletos que no quieres que aparezcan en la portada. |
template_comments | Texto que aparece junto al enlace de Twitter (ej. ¿Comentarios?). |
template_read_more | Texto del enlace Leer más... que aparece cuando un post se corta en la página principal o en las páginas de etiquetas. |
template_archive | Texto del enlace para ir a la página de todos los posts al final de la página principal. |
template_archive_title | Título de la página que lista todos los posts. |
template_tags_title | Título de la página que lista todas las etiquetas. |
template_tags_posts | Palabra en plural para referirse a los posts (ej. artículos o posts). |
template_tags_posts_2_4 | Palabra en plural especial para lenguas eslavas (usada cuando hay entre 2 y 4 posts). |
template_tags_posts_singular | Palabra en singular para referirse a los posts (ej. artículo o post). |
template_tag_title | Texto para el <title> de las páginas de una etiqueta específica (ej. Artículos etiquetados con). |
template_tags_line_header | Texto que precede a la lista de etiquetas en un post (ej. Etiquetas:). |
template_archive_index_page | Texto del enlace para volver a la página principal desde las páginas de todos los posts y etiquetas. |
template_subscribe | Texto del enlace visible para suscribirse al feed RSS al final de la página principal. |
template_subscribe_browser_button | Texto interno (atributo title) que utilizan los navegadores o lectores de RSS para identificar el feed al detectarlo automáticamente. |
template_twitter_button | Texto visible del enlace para compartir el post en Twitter. |
template_twitter_comment | Texto predeterminado que aparece al compartir un post en Twitter. |
date_format | Formato para mostrar la fecha de publicación de los posts en las páginas. |
date_locale | Configuración regional (locale) para traducir los nombres de meses y días en las fechas (ej. es_MX.UTF-8). |
preview_url | URL para previsualizar el post mientras se edita. Por defecto utiliza el valor de global_url. Útil si escribes posts en local antes de subirlos al servidor. |
markdown_bin | Ruta al ejecutable del programa que convierte Markdown a HTML (ej. markdown o Markdown.pl). Déjalo vacío para que el script lo detecte automáticamente. |
Uso
Mostrar un mensaje de ayuda con los comandos disponibles:
bb.sh
Comenzar a crear una publicación en Markdown (por defecto) o en HTML si no se encuentra un convertidor:
bb.sh post
Comenzar a crear una publicación en HTML:
bb.sh post -html
Al comenzar la creación de una publicación, se abrirá el editor de textos configurado en la variable de entorno
$EDITOR, que será el espacio donde comenzarás a escribir.El primer párrafo de una publicación se tomará como título (también se utilizará como nombre del archivo separado por guiones), y el último párrafo se utilizará para definir las etiquetas o categorías a las que pertenecerá (separadas por comas).
Al guardar y salir del editor de textos, se te preguntará qué acción realizar, ya sea publicar, editar o guardar como borrador:
[P]ost this entry, [E]dit again, [D]raft for later? (p/E/d)Cada vez que se realiza una publicación, el script genera un respaldo del blog en un archivo
.backup.tar.gzy un respaldo diario llamado.yesterday.tar.gz.
Editar una publicación que se guardó como borrador (opción [D]raft):
bb.sh post drafts/archivo.md
Editar una publicación ya publicada (mantiene el mismo nombre de archivo):
bb.sh edit archivo.md
Editar una publicación ya publicada y cambiar el nombre del archivo si se modifica el título:
bb.sh edit -n archivo.md
Editar el HTML completo de una publicación ya publicada (mantiene el mismo nombre de archivo):
bb.sh edit -f archivo.md
Los archivos de las publicaciones NUNCA se deben editar directamente.
Eliminar una publicación y reconstruir el blog:
bb.sh delete archivo.md
Reconstruir todas las páginas y publicaciones del blog manteniendo su contenido:
bb.sh rebuild
La acción de reconstruir es útil cuando modificas la configuración o los estilos CSS de tu blog.
Eliminar todos los archivos asociados al blog:
bb.sh reset
Para confirmar la acción, debes escribir
Yes, I am!. Y antes de eliminar todo, el script genera un respaldo del blog.
Listar todas las publicaciones:
bb.sh list
Listar todas las etiquetas en orden alfabético:
bb.sh tags
Listar todas las etiquetas ordenadas por número de publicaciones:
bb.sh tags -n
Conclusión
Si eres un fanático de la terminal, BashBlog es una herramienta simple y rápida para comenzar a crear tu blog. Aunque carece de un sistema de organización por carpetas para las publicaciones, te permite adjuntar recursos estáticos como imágenes, videos o archivos en tus publicaciones, organizándolos como los necesitas.
Referencias
- https://victorhckinthefreeworld.com/2020/03/20/crea-blog-web-script-bash/
- https://github.com/cfenollosa/bashblog
Etiquetas: herramientas