前言
Windows 與 Linux 使用上有一個很顯著的差異,就是兩種系統的換行字元不一樣,在 Windows 上的換行字元為 CRLF \r\n
,而 Linux 的換行字元只有 LF \n
。然而總會有在 Ubuntu 需要產生一個換行為 CRLF 的檔案的需求,因此紀錄一下如何使用簡單的指令 echo
來解決這個問題。
環境
- Ubuntu 20.04
檔案內容敘述
假設現在我想製作一個 HTTP 標頭檔,因 HTTP 標頭格式的換行必須為 CRLF,若直接開啟文件並使用文字編輯器來編輯,換行一定只有 LF,因此需藉由指令的力量來完成這件事,希望的檔案內容如下,注意最後一行空白是必要的
1 | HEAD / HTTP/1.1 |
看文字不清楚,轉為 16 進位形式來看清楚,每個換行皆為 CLRF,最後有一個單獨的 CLRF,才會讓檔案內容看起來有一個空白行。
1 | 00000000: 4845 4144 202f 2048 5454 502f 312e 310d HEAD / HTTP/1.1. |
產製檔案
使用基本指令 echo
就能解決我們的困擾囉
1 | echo -ne "HEAD / HTTP/1.1\r\nHost: localhost\r\n\r\n" > message |
-n
:不要輸出最後的換行 (echo
指令自己預設最後會輸出換行 LF)。-e
:會直譯跳脫字元,讓我們可以輸入\r
、\n
等跳脫字元。
查看該檔案 16 進位形式確認完成!
1 | user@pc:~$ xxd message |