0%

[Echo] 在 Ubuntu 產生包含 \r 換行字元的檔案

前言

Windows 與 Linux 使用上有一個很顯著的差異,就是兩種系統的換行字元不一樣,在 Windows 上的換行字元為 CRLF \r\n,而 Linux 的換行字元只有 LF \n。然而總會有在 Ubuntu 需要產生一個換行為 CRLF 的檔案的需求,因此紀錄一下如何使用簡單的指令 echo 來解決這個問題。

環境

  • Ubuntu 20.04

檔案內容敘述

假設現在我想製作一個 HTTP 標頭檔,因 HTTP 標頭格式的換行必須為 CRLF,若直接開啟文件並使用文字編輯器來編輯,換行一定只有 LF,因此需藉由指令的力量來完成這件事,希望的檔案內容如下,注意最後一行空白是必要的

1
2
3
HEAD / HTTP/1.1
Host: localhost

看文字不清楚,轉為 16 進位形式來看清楚,每個換行皆為 CLRF,最後有一個單獨的 CLRF,才會讓檔案內容看起來有一個空白行。

1
2
3
00000000: 4845 4144 202f 2048 5454 502f 312e 310d  HEAD / HTTP/1.1.
00000010: 0a48 6f73 743a 206c 6f63 616c 686f 7374 .Host: localhost
00000020: 0d0a 0d0a ....

產製檔案

使用基本指令 echo 就能解決我們的困擾囉

1
echo -ne "HEAD / HTTP/1.1\r\nHost: localhost\r\n\r\n" > message
  • -n:不要輸出最後的換行 (echo 指令自己預設最後會輸出換行 LF)。
  • -e:會直譯跳脫字元,讓我們可以輸入 \r\n 等跳脫字元。

查看該檔案 16 進位形式確認完成!

1
2
3
4
user@pc:~$ xxd message
00000000: 4845 4144 202f 2048 5454 502f 312e 310d HEAD / HTTP/1.1.
00000010: 0a48 6f73 743a 206c 6f63 616c 686f 7374 .Host: localhost
00000020: 0d0a 0d0a ....
很高興能在這裡幫助到您,歡迎登入 Liker 為我鼓掌 5 次,或者成為我的讚賞公民,鼓勵我繼續創造優質文章。
以最優質的內容回應您的鼓勵