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 realices una publicación, el script generará 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 generará 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 necesites.
Referencias
- https://victorhckinthefreeworld.com/2020/03/20/crea-blog-web-script-bash/
- https://github.com/cfenollosa/bashblog
Etiquetas: herramientas