🌱 Tìm hiểu về các kiểu kết thúc dòng Line Break (CR, LR, CR LF)

🌱 Tìm hiểu về các kiểu kết thúc dòng
Line Break (CR, LR, CR LF)

    Một khái niệm rất quen thuộc đối với các lập trình viên, đó là dấu xuống dòng hay line break. Tuy nhiên có vẻ như không phải lập trình viên nào cũng hiểu hết về nó, và thật sự biết được cách giải quyết khi gặp các vấn đề liên quan.

    Hệ điều hành và trình soạn thảo văn bản có các quy ước riêng về line break, dẫn đến sự khác biệt trong các loại line break. Bài viết này sẽ tìm hiểu về sự khác biệt giữa ba loại line break phổ biến: CR LF, LF và CR.

    👉 CR LF - Carriage Return Line Feed

    CR LF là kiểu line break thường được sử dụng trong hệ điều hành Window và các file text based trên DOS. CR LF bao gồm 2 ký tự: Carriage Return ('\r') và Line Feed ('\n'):

  • CR - Carriage Return - '\r', ký tự này mang nghĩa là di chuyển con trỏ đến đầu dòng hiện tại mà không chuyển sang dòng tiếp theo.
  • LF - Line Feed - '\n', ký tự này mang nghĩa di chuyển con trỏ xuống dòng tiếp theo mà không ảnh hưởng đến vị trí theo chiều ngang.

CR LF in OS
Line Break

    Trong các tệp văn bản Windows và DOS, sự kết hợp của các ký tự CR và LF biểu thị ngắt dòng. Chuỗi CR LF \r\n thường được sử dụng để biểu thị ngắt dòng trong các hệ thống này.

    👉 LF - Line Feed

    Kiểu line break LF chủ yếu được sử dụng trong Unix, Linux, macOS và các trình soạn thảo văn bản hiện đại, bao gồm cả các trình soạn thảo dành cho phát triển web. Theo quy ước này, một ký tự xuống dòng (\n) biểu thị một ngắt dòng. Không giống như CR LF, không có ký tự Carriage Return trước đó. Kiểu ngắt dòng LF chỉ dựa vào ký tự xuống dòng để chuyển sang dòng tiếp theo.

    👉 CR - Carriage Return

    Kiểu line break CR hiếm khi được sử dụng trong các hệ thống hiện đại nhưng có ý nghĩa lịch sử trong các hệ điều hành Macintosh cũ hơn. Trong quy ước này, một ký tự Carriage Return (\r) duy nhất biểu thị một ngắt dòng. Tương tự như LF, không có ký tự Line Feed tiếp theo trong kiểu ngắt dòng CR.

    👉 Khả năng tương thích

    Hiểu các loại line break khác nhau là rất quan trọng khi làm việc với các tệp văn bản dùng để chia sẻ trên nhiều nền tảng. Điều cần thiết là phải xem xét các vấn đề về khả năng tương thích và đảm bảo các hệ thống dự định diễn giải đúng các loại line break.

  • Các ứng dụng Windows và trình soạn thảo văn bản thường xử lý line break CR LF một cách chính xác.
  • Các hệ thống Unix, Linux và macOS yêu cầu line break LF và các trình soạn thảo văn bản hiện đại xử lý chúng một cách liền mạch.
  • Các dự án đa nền tảng hoặc sự hợp tác giữa các hệ thống khác nhau có thể yêu cầu xử lý khéo léo các loại line break khác nhau để tránh các vấn đề về định dạng.
    Ví dụ một lỗi thường gặp với line break, đó là chạy file shell (.sh) trên hệ điều hành Window, sử dụng các hệ giả lập môi trường Unix, ví dụ như Cygwin. Trường hợp này có thể gây ra lỗi thừa ký tự '\r' do file trên Window sử dụng CRLF \r\n làm line break.

Line break error

    💬 Đối với trường hợp này, chúng ta có thể giải quyết bằng cách đưa định dạng file trở lại là sử dụng line break LF. Trên Window chúng ta có thể thao tác đơn giản với phần mềm Notepad++.

Change LF notepad++

    💬 Đôi khi gặp trường hợp nhiều file bị lỗi, khó sửa manual, chúng ta nên setup cho toàn bộ project bằng lệnh Git sau:

$ git config --global core.autocrlf true

💬 Với project chỉ sử dụng các file based trên môi trường Linux, Unix:

$ git config --global core.autocrlf false
$ git config --global core.eol lf

    👉 Kết luận

    Mặc dù ngắt dòng có vẻ không đáng kể, nhưng việc hiểu được sự khác biệt giữa các loại line break CR LF, LF và CR là rất quan trọng để đạt được khả năng tương thích đa nền tảng. Cho dù bạn đang làm việc trên Windows, Unix, Linux, macOS hay trình soạn thảo văn bản hiện đại, việc nắm rõ các quy ước ngắt dòng đảm bảo việc hiển thị tệp văn bản nhất quán và chính xác.

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn