He estado aprendiendo el shell con un gran tutorial, linuxcommand.org. Después de un montón de aprendizaje y práctica con la navegación de directorios, edición de archivos, etc, he pasado a escribir shell scripts.
Uno de los primeros tutoriales que tiene linuxcommand.org es el uso de HTML en un shell script para devolver algo de información del sistema. Puedes comprobarlo aquí . Actualmente estoy en la sección de 'Sustitución de comandos y constantes'.
Una de las primeras cosas del tutorial decía que el archivo se podía utilizar redirigiendo la salida estándar a .html:
~me$ ./página_del_sistema > página_del_sistema.html
mi script es exactamente igual al del enlace, pero lo publicaré igualmente:
(la única diferencia es que linux utiliza la var env $HOSTNAME, yo estoy en OS X y es $LOGNAME)
#!/bin/bash
# sysinfo_page - Generate an HTML page based on system information
title="My System Information"
RIGHT_NOW=$(date +"%x %r %Z")
TIME_STAMP="Updated on $RIGHT_NOW by $USER"
cat <<- _EOF_
<html>
<head>
<title>
$title $LOGNAME
</title>
</head>
<body>
<h1>$title $LOGNAME</h1>
<p>$TIME_STAMP</p>
</body>
</html>
_EOF_
Cuando escribo en la línea de comandos
~me$ ./sysinfo_page
me da el contenido de sólo el HTML, pero no está formateado y sigue mostrando las etiquetas. Supongo que al redirigir la salida estándar a una extensión .html me daría la página HTML formateada, sin las etiquetas pero no lo sabría porque, después de dar permiso chmod rwx con 755, escribo:
~$me ./página_de_información_del_sistema.html
Y obtener este error:
./sysinfo_page.html: line 1: syntax error near unexpected token `newline'
./sysinfo_page.html: line 1: `<html>'
Entiendo por lo que he leído que < > indica un marcador de posición, pero esa es la sintaxis HTML... y exactamente como funciona en el tutorial. He pensado que quizás añadiendo un <!DOCTYPE>
lo arreglaría, pero no lo hizo. Mi pregunta es, ¿qué estoy haciendo mal? ¿Cómo puedo conseguir que se muestre la página HTML correctamente?