Lệnh dos2unix trong Linux sẽ giúp người dùng chuyển đổi file từ định dạng DOS/Windows sang định dạng Unix, giúp đảm bảo sự tương thích giữa các hệ thống. Trong bài viết này, mình sẽ giới thiệu tới bạn cú pháp, tùy chọn, điều kiện và cách sử dụng lệnh dos2unix qua các ví dụ cụ thể.
Những điểm chính
- Cú pháp và tùy chọn của lệnh dos2unix: Hiểu cách sử dụng lệnh
dos2unix
và các tùy chọn quan trọng. - Điều kiện để sử dụng lệnh dos2unix: Biết những yêu cầu cần có trước khi chạy lệnh này trong Linux.
- Định dạng file DOS: Hiểu sự khác biệt giữa file định dạng DOS và UNIX, đặc biệt là về ký tự xuống dòng (CRLF vs. LF).
- Ví dụ về cách sử dụng dos2unix: Nắm được cách áp dụng lệnh với nhiều trường hợp khác nhau khi chuyển đổi file.
- Giới thiệu Vietnix: Biết về Vietnix, nhà cung cấp giải pháp VPS mạnh mẽ, an toàn và nhanh chóng.
Cú pháp và tùy chọn của lệnh dos2unix trong Linux
Cú pháp lệnh dos2unix
như sau:
dos2unix [options] [file]
Trong đó:
- [options]: Chỉ định chế độ chuyển đổi và cách hiển thị kết quả.
- [file]: Chỉ định file cần chuyển đổi.
Các tùy chọn phổ biến của lệnh dos2unix
:
Flag | Tùy chọn | Mô tả |
---|---|---|
--allow-chown | Thay đổi quyền sở hữu file. | |
-b | --keep-bom | Giữ nguyên Byte Order Mark (BOM). |
-c mode | --convmode mode | Chọn chế độ chuyển đổi (ASCII, 7bit, ISO, MAC). |
-I file | --info file | Hiển thị thông tin về file. |
-h | --help | Hiển thị hướng dẫn sử dụng lệnh. |
-k | --keepdate | Giữ nguyên timestamp trong file mới. |
-m | --add-bom | Thêm Byte Order Mark (mặc định là UTF-8). |
-n infile outfile | --newfile infile outfile | Chuyển đổi file và ghi kết quả vào outfile (không thể dùng ký tự đại diện). |
--no-allow-chown | Không cho phép thay đổi quyền sở hữu file (mặc định). | |
-o file | --oldfile file | Chuyển đổi file cũ và ghi kết quả lên chính file đó (chế độ mặc định, có thể dùng ký tự đại diện). |
-q | --quiet | Bỏ qua tất cả cảnh báo trong quá trình chuyển đổi. |
-r | --remove-bom | Xóa Byte Order Mark (mặc định). |
-u | --keep-utf16 | Giữ nguyên định dạng mã hóa UTF-16. |
-ul | --assume-utf16le | Giả định file đầu vào được mã hóa theo chuẩn UTF-16LE. |
-ub | --assume-utf16be | Giả định file đầu vào được mã hóa theo chuẩn UTF-16BE. |
-v | --verbose | Hiển thị thông tin chi tiết. |
-V | --version | Hiển thị phiên bản của lệnh. |
Điều kiện để sử dụng lệnh dos2unix trong Linux
Lệnh dos2unix
thường không có sẵn trên các hệ thống Linux nên bạn cần cài đặt lệnh này để có thể sử dụng. Dưới đây là hướng dẫn cài đặt cho một số bản phân phối phổ biến:
Đối với Ubuntu, Debian và các bản phân phối dựa trên Debian:
sudo apt install dos2unix

Đối với CentOS, RHEL và các bản phân phối dựa trên RPM:
sudo yum install dos2unix

Đối với Arch Linux và các bản phân phối dựa trên Arch:
sudo pacman -S dos2unix

Sau khi cài đặt xong, bạn có thể xác nhận lại bằng cách kiểm tra phiên bản:
dos2unix --version

Tìm hiểu về định dạng file DOS
File DOS thường được dùng trong hệ điều hành Windows với đặc điểm là mỗi dòng sẽ kết thúc bằng cặp ký tự \r và \n. Trên Linux, bạn có thể kiểm tra file DOS bằng lệnh od
(octal dump) để xem nội dung file ở nhiều định dạng. Cụ thể, bạn chạy lệnh od
với tùy chọn -c
:
od -c file.txt
Lệnh này sẽ để hiển thị kết quả như hình dưới, với các ký tự có thể in được và các ký tự escape backslash (bao gồm cả 2 ký tự \r và \n). Để sửa các ký tự escape này theo định dạng UNIX, bạn sẽ cần tới lệnh dos2unix
.

Ví dụ về cách sử dụng lệnh dos2unix trong Linux
- Chuyển đổi một file từ DOS sang UNIX
- Chuyển đổi nhiều file từ DOS sang UNIX
- Giữ nguyên Timestamp gốc
- Chuyển đổi file theo nhiều chế độ khác nhau
- Chuyển đổi và lưu kết quả vào file mới
- Chuyển đổi file DOS sang file Unix mà không hiển thị thông báo
- Chuyển đổi file DOS mà vẫn giữ nguyên Byte Order Mark (BOM)
Chuyển đổi một file từ DOS sang UNIX
Bạn có thể thay đổi định dạng của một file từ DOS sang UNIX bằng cách sử dụng lệnh dos2unix
kèm theo tên file. Ví dụ, để chuyển đổi file vietnix.txt, bạn sẽ chạy lệnh sau:
dos2unix vietnix.txt
Tiếp theo, bạn sử dụng lệnh od
để xác minh kết quả chuyển đổi và sẽ thấy ký tự xuống dòng \n trong file như hình bên dưới.

Chuyển đổi nhiều file từ DOS sang UNIX
Để chuyển đổi nhiều file từ DOS sang UNIX cùng lúc, bạn có thể liệt kê các tên file này sau lệnh dos2unix
, mỗi file cách nhau bằng khoảng trắng:
dos2unix vietnix.txt vps.txt hosting.txt

Nếu muốn chuyển đổi tất cả các file trong một thư mục cụ thể, bạn sử dụng ký tự đại diện *:
os2unix /path/*
Giữ nguyên Timestamp gốc
Bạn có thể giữ nguyên Timestamp gốc của file bằng cách sử dụng lệnh dos2unix
với tham số -k
hoặc --keepdate
:
dos2unix -k vietnix.txt
ls -ul | grep vietnix.txt

Chuyển đổi file theo nhiều chế độ khác nhau
Lệnh dos2unix đi kèm tùy chọn -c
hoặc --convmode
giúp người dùng chỉ định chế độ chuyển đổi. Các chế độ được hỗ trợ bao gồm: ASCII, 7bit, ISO và MAC. Để chuyển đổi file sang ASCII, bạn chạy lệnh sau:
dos2unix -c ascii vietnix.txt

Lưu ý
ASCII là chế độ mặc định, dos2unix sẽ tự động chuyển file sang chế độ này ngay cả khi bạn không chỉ định.
Để chuyển đổi file sang 7bit, bạn chạy lệnh sau:
dos2unix -c 7bit vps.txt
Lệnh này sẽ chuyển đổi file sang định dạng ASCII 7 bit và loại bỏ bit thứ 8 của mỗi byte. Như hình bên dưới file chứa ký tự ASCII mở rộng như Ä đã bị xóa khỏi file.

Để chuyển đổi file sang IOS, bạn chạy lệnh sau:
dos2unix -c iso hosting.txt
Lệnh dos2unix hỗ trợ chuyển đổi sang nhiều định dạng ISO khác nhau như ISO-1252, 437, 850, 860, 863 và 865. Đồng thời các ký tự đặc biệt cũng được giữ nguyên.

Nếu muốn chuyển đổi file DOS sang định dạng Mac cũ (kết thúc dòng bằng ký tự \r), bạn chạy lệnh sau:
dos2unix -c mac hosting.txt

Bạn cũng có thể chuyển đổi nhiều file cùng lúc bằng cách liệt kê tên file hoặc sử dụng ký tự đại diện. Ví dụ:
dos2unix -c ascii vietnix.txt hosting.txt

Chuyển đổi và lưu kết quả vào file mới
Lệnh dos2unix
cho phép bạn lưu kết quả chuyển đổi vào một file mới qua tùy chọn -n
. Chẳng hạn, để chuyển đổi file gốc hosting.txt sang định dạng UNIX và lưu kết quả vào file mới dos.txt, bạn dùng lệnh:
dos2unix -n hosting.txt dos.txt

Để chuyển đổi file theo chế độ cụ thể, bạn chạy lệnh sau:
dos2unix -n -c 7bit hosting.txt dos.txt
Kết quả: Như bạn thấy, khi chuyển file với chế độ 7bit thì kí tự đặc biệt của ASCII sẽ bị xóa khỏi file mới.

Để chuyển đổi nhiều file cùng lúc, bạn cần liệt kê các cặp file nguồn và file đích theo thứ tự tương ứng:
dos2unix -n hosting.txt dos.txt vietnix.txt mail.txt

Để giữ nguyên timestamp của file gốc trong file mới, bạn chạy lệnh sau:
dos2unix -n -k vietnix.txt mail.txt
Kết quả: Bạn sẽ thấy được timestamp của file mail.txt vẫn giữ nguyên giống file gốc.

Chuyển đổi file DOS sang file Unix mà không hiển thị thông báo
Để bỏ qua tất cả các cảnh báo trong quá trình chuyển đổi file, bạn sử dụng lệnh dos2unix
với tùy chọn -q
như sau:
dos2unix -q vietnix.txt

Chuyển đổi file DOS mà vẫn giữ nguyên Byte Order Mark (BOM)
Byte Order Mark (BOM) là một chuỗi byte đặc biệt dùng để nhận diện kiểu mã hóa của file, ví dụ như UTF-8, UTF-16 hay UTF-32. Mỗi kiểu có một cách biểu diễn khác nhau:
Kiểu mã hóa | Giá trị Hex | Giá trị thập phân |
---|---|---|
UTF-8 | ef bb bf | 239 187 191 |
UTF-16 | fe ff | 254 255 |
UTF-32 (BE) | 00 00 fe ff | 0 0 254 255 |
UTF-32 (LE) | 00 00 | 254 255 0 0 |
Nếu muốn thêm BOM vào file, bạn chạy lệnh với tùy chọn -m
:
dos2unix -m hosting.txt
Kết quả: Cho thấy các giá trị ef bb bf của BOM đã được thêm vào file, tương tự như hình sau:

Để giữ nguyên BOM UTF-8 trong quá trình chuyển đổi, bạn chạy lệnh:
dos2unix -b hosting.txt

Để giữ nguyên BOM UTF-16, bạn chạy lệnh:
dos2unix -u hosting.txt

Để xóa BOM, bạn sử dụng tùy chọn -r
:
dos2unix -r hosting.txt

Vietnix – Nhà cung cấp giải pháp VPS mạnh mẽ, an Toàn và nhanh Chóng
Vietnix cung cấp dịch vụ thuê VPS với hạ tầng máy chủ mạnh mẽ, 100% ổ cứng SSD, đảm bảo tốc độ truy cập nhanh và ổn định. Khách hàng được toàn quyền quản trị, dễ dàng tùy chỉnh hệ thống thông qua giao diện trực quan, đầy đủ tính năng. Hệ thống backup tự động hàng tuần giúp bảo vệ dữ liệu và khôi phục nhanh chóng khi cần. Vietnix cam kết mang đến giải pháp VPS an toàn, hiệu quả và tối ưu chi phí.
VPS Linux tại Vietnix mang lại tốc độ xử lý nhanh, tính ổn định cao và khả năng vận hành mượt mà ngay cả với các tác vụ lớn. Hệ thống cho phép thay đổi cấu hình linh hoạt mà không ảnh hưởng đến các dịch vụ khác, giúp giảm thiểu downtime và tối ưu hiệu suất. Cơ chế phân quyền chặt chẽ, chỉ quản trị viên hoặc người dùng có quyền root mới có thể kiểm soát hệ thống, tăng cường bảo mật tối đa.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Với cú pháp đơn giản và khả năng chuyển đổi nhanh chóng, dos2unix giúp bạn dễ dàng giải quyết các vấn đề về định dạng dòng, tiết kiệm thời gian và công sức lập trình. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để sử dụng lệnh dos2unix trong Linux một cách hiệu quả. Ngoài ra, nếu bạn muốn tìm hiểu chuyên sâu hơn về các lệnh khác trong Linux thì có thể tham khảo những bài viết dưới đây của mình: