Es increíble que a estas altura en el uso de las computadoras aún estemos teniendo dificultades con los «retornos de carro» (carriage return, CR, caracter ASCII 13) y «alimentaciones de línea» (line feed, LF
, caracter ASCII 10). Quizás a muchos no les extrañe, pues consideran que las computadoras son las cosas más complicadas del mundo, quizás es cierto en su construcción pero no debería serlo en su uso (incluyendo su programación).
Por otra parte, mucha gente no está al tanto de la existencia de estos caracteres, sólo entienden que al momento de escribir en la computadora, deben presionar Enter o Return (y muchos teclados llegar a traer las dos teclas) para avanzar a la siguiente línea o para hacer que algo se ejecute.
Pues bien, como parte de mis actuales actividades profesionales, debo revisar las bitácoras de algunos procesos en instancias SageMaker de AWS (equipos unix virtualizados). Me llamó la atención encontrar en uno de ellos, como parte de los mensaje arrojados por las utilerías de AWS CLI, líneas como estas:
...
completed 471 file(s) with ~164 file(s) remaining (calculating...)^Mdelete: s3
...
Me extrañó que el famoso y molesto ^M
apareciera ahí, como suelen aparecer tras una transferencia binaria de archivos desde Windows a un Unix via FTP. Y este no era el caso. Googleando un poco, me topé con una discusión al respecto en el repositorio mismo de las utilerías de AWS1. Obviamente la eliminación de la molestia no tomó más que un rápido comando en Vim (:%s/^M$//
en modo comando)2, pero la búsqueda arrojó algunos otros resultados interesantes, que van desde ensayos sobre la existencia de estos caracteres de control3, hasta temas de seguridad4. Demasiados resultados para enumerarlos aquí pero interesante ver como algo tan simple da tanto de qué hablar.
Referencias
- «aws s3 sync: display and logging issues incorrect use of LF vs CRLF«, AWS, AWS-CLI repository at GitHub; issue 2741. Visited: 2021.01.15. URL: https://github.com/aws/aws-cli/issues/2741.
- «How to remove CTRL-M (^M) characters from a file in Linux», Microfocus, web. Published: 2014.03.31; visited: : 2021.01.15. URL: https://support.microfocus.com/kb/doc.php?id=7014821#:~:text=%5EM%20is%20the%20keyboard%20equivalent,%2B%20CTRL%2Dm%20in%20vim.
- Daniel Miessler, «The Carriage Return and Line Feed Characters«, blog. Published: 2019.12.17; visited: 2021.01.15. URL: https://danielmiessler.com/study/crlf/.
- «CRLF Injection and HTTP Response Splitting Vulnerability«, Netsparker, web security blog. Published: 2019.05.23; visited: 2021.01.15. URL: https://www.netsparker.com/blog/web-security/crlf-http-header/.