dos2unix(1) 2026-08-27 dos2unix(1)

dos2unix - مبدل قالب فایل‌های متنی DOS/Mac به Unix و برعکس

dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]

بستهٔ dos2unix شامل ابزارهای "dos2unix" و "unix2dos" برای تبدیل فایل‌های متنی ساده در قالب‌های DOS یا Mac به قالب Unix و برعکس است.

در فایل‌های متنی DOS/Windows شکستگی خط، که با نام خط جدید (newline) نیز شناخته می‌شود، ترکیبی از دو نویسه است: یک بازگشت به ابتدای سطر (CR) به همراه سطر جدید (LF). در فایل‌های متنی Unix شکستگی خط یک نویسهٔ منفرد است: سطر جدید (LF). در فایل‌های متنی Mac، پیش از Mac OS X، شکستگی خط یک نویسهٔ منفردِ بازگشت به ابتدای سطر (CR) بود. امروزه Mac OS از شکستگی‌های خط به سبک Unix یعنی (LF) استفاده می‌کند.

علاوه بر شکستگی‌های خط، dos2unix می‌تواند کُدگذاری فایل‌ها را نیز تبدیل کند. چند صفحهٔ کُد (code page) داس را می‌توان به Unix Latin-1 تبدیل کرد. همچنین فایل‌های یونیکُد ویندوز (UTF-16) را می‌توان به فایل‌های یونیکُد یونیکس (UTF-8) تبدیل کرد.

از فایل‌های باینری به طور خودکار صرف‌نظر می‌شود، مگر اینکه تبدیل به صورت اجباری تعیین شده باشد.

از فایل‌های غیرعادی (non-regular)، مانند دایرکتوری‌ها و FIFOها، به طور خودکار صرف‌نظر می‌شود.

پیوندهای نمادین (symbolic links) و مقصدهای آن‌ها به طور پیش‌فرض دست‌نخورده باقی می‌مانند. پیوندهای نمادین را می‌توان به صورت اختیاری جایگزین کرد، یا خروجی را می‌توان در مقصد پیوند نمادین نوشت. نوشتن در مقصد پیوند نمادین در ویندوز پشتیبانی نمی‌شود.

ابزار dos2unix بر اساس dos2unix در SunOS/Solaris الگوبرداری شده است. یک تفاوت مهم با نسخهٔ اصلی SunOS/Solaris وجود دارد: این نسخه به طور پیش‌فرض تبدیل درجا (حالت فایل قدیمی یا old file mode) را انجام می‌دهد، در حالی که نسخهٔ اصلی SunOS/Solaris فقط از تبدیل جفتی (حالت فایل جدید یا new file mode) پشتیبانی می‌کند. گزینه‌های "-o" و "-n" را نیز ببینید. تفاوت دیگر این است که نسخهٔ SunOS/Solaris به طور پیش‌فرض از تبدیل در حالت iso استفاده می‌کند، در حالی که این نسخه به طور پیش‌فرض از حالت تبدیل ascii بهره می‌برد.

--
با تمام گزینه‌های پس از این به عنوان نام فایل رفتار می‌کند. اگر می‌خواهید فایل‌هایی را که نامشان با خط تیره (dash) آغاز می‌شود تبدیل کنید، از این گزینه استفاده نمایید. برای نمونه، جهت تبدیل فایلی به نام «-foo»، می‌توانید از این دستور استفاده کنید:
dos2unix -- -foo

یا در حالت فایل جدید:

dos2unix -n -- -foo out.txt
اجازه دادن به تغییر مالکیت فایل در حالت فایل قدیمی.

هنگام استفاده از این گزینه، در صورتی که مالکیت کاربر و/یا گروهِ فایل اصلی در حالت فایل قدیمی قابل حفظ نباشد، تبدیل لغو نخواهد شد. فرایند تبدیل ادامه می‌یابد و فایل تبدیل‌شده همان مالکیت جدیدی را دریافت می‌کند که گویی در حالت فایل جدید تبدیل شده است. همچنین گزینه‌های "-o" و "-n" را ببینید. این گزینه تنها در صورتی در دسترس است که dos2unix از حفظ مالکیت کاربر و گروه فایل‌ها پشتیبانی کند.

حالت تبدیل پیش‌فرض. بخش «حالت‌های تبدیل (CONVERSION MODES)» را نیز ببینید.
تبدیل بین مجموعه نویسه‌های DOS و ISO-8859-1. بخش «حالت‌های تبدیل (CONVERSION MODES)» را نیز ببینید.
-1252
استفاده از صفحهٔ کُد 1252 ویندوز (اروپای غربی).
-437
استفاده از صفحهٔ کُد 437 داس (ایالات متحده). این صفحهٔ کُد پیش‌فرض برای تبدیل ISO است.
-850
استفاده از صفحهٔ کُد 850 داس (اروپای غربی).
-860
استفاده از صفحهٔ کُد 860 داس (پرتغالی).
-863
استفاده از صفحهٔ کُد 863 داس (فرانسوی کانادایی).
-865
استفاده از صفحهٔ کُد 865 داس (نوردیک).
-7
تبدیل نویسه‌های 8 بیتی به فضای 7 بیتی.
نگه‌داشتن نشانگر ترتیب بایت (BOM). زمانی که فایل ورودی دارای BOM باشد، یک BOM در فایل خروجی می‌نویسد. این رفتار پیش‌فرض هنگام تبدیل به شکستگی‌های خط DOS است. گزینهٔ "-r" را نیز ببینید.
تنظیم حالت تبدیل. که در آن CONVMODE یکی از موارد زیر است: ascii، 7bit، iso، mac که ascii حالت پیش‌فرض است.
تنظیم کُدگذاری متن نمایش‌داده‌شده. که در آن ENCODING یکی از موارد زیر است: ansi، unicode، unicodebom، utf8، utf8bom که ansi حالت پیش‌فرض است.

این گزینه فقط در dos2unix برای ویندوز با پشتیبانی از نام فایل‌های یونیکُد در دسترس است. این گزینه هیچ تأثیری بر نام واقعی فایل‌های خوانده‌شده و نوشته‌شده ندارد، بلکه فقط بر نحوهٔ نمایش آن‌ها اثر می‌گذارد.

روش‌های مختلفی برای نمایش متن در کنسول ویندوز بر اساس کُدگذاری متن وجود دارد. همهٔ آن‌ها مزایا و معایب خاص خود را دارند.

روش پیش‌فرض dos2unix استفاده از متن با کُدگذاری ANSI است. مزیت آن سازگاری رو به عقب (backwards compatibility) است. این روش با قلم‌های شطرنجی (raster) و TrueType کار می‌کند. در برخی مناطق ممکن است لازم باشد با استفاده از دستور "chcp" صفحهٔ کُد فعالِ DOS OEM را به صفحهٔ کُد ANSI سیستم ویندوز تغییر دهید، زیرا dos2unix از صفحهٔ کُد سیستم ویندوز استفاده می‌کند.

عیب ansi این است که نام فایل‌های بین‌المللی حاوی نویسه‌های خارج از صفحهٔ کُد پیش‌فرض سیستم، به درستی نمایش داده نمی‌شوند؛ به جای آن‌ها علامت سؤال یا نمادی نادرست مشاهده خواهید کرد. اگر با نام فایل‌های بین‌المللی کار نمی‌کنید، این روش مشکلی نخواهد داشت.

مزیت کُدگذاری unicode (نام ویندوز برای UTF-16) این است که متن معمولاً به درستی نمایش داده می‌شود. نیازی به تغییر صفحهٔ کُد فعال نیست. برای نمایش صحیح نویسه‌های بین‌المللی ممکن است نیاز باشد قلم کنسول را روی یک قلم TrueType تنظیم کنید. هنگامی که نویسه‌ای در قلم TrueType موجود نباشد، معمولاً یک مربع کوچک، گاهی اوقات همراه با یک علامت سؤال در داخل آن مشاهده می‌کنید.

هنگامی که از کنسول ConEmu استفاده می‌کنید، همهٔ متن‌ها به درستی نمایش داده می‌شوند، زیرا ConEmu به طور خودکار قلم مناسبی را انتخاب می‌کند.

عیب unicode این است که با ASCII سازگار نیست. زمانی که خروجی را به برنامهٔ دیگری هدایت (redirect) می‌کنید، مدیریت آن آسان نخواهد بود.

هنگامی که روش "unicodebom" استفاده شود، پیش از متن یونیکُد یک BOM (نشانگر ترتیب بایت) قرار می‌گیرد. وجود BOM برای هدایت خروجی یا لوله‌کشی (piping) صحیح در PowerShell الزامی است..IP "utf8, utf8bom" 4 مزیت utf8 سازگاری آن با ASCII است. لازم است قلم کنسول را روی یک قلم TrueType تنظیم کنید. با یک قلم TrueType، متن مشابه با کدگذاری "unicode" نمایش داده می‌شود.

عیب آن این است که هنگام استفاده از قلم شطرنجی (raster font) پیش‌فرض، تمام نویسه‌های غیر ASCII به اشتباه نمایش داده می‌شوند. نه تنها نام‌های یونیکد فایل‌ها، بلکه پیام‌های ترجمه‌شده نیز ناخوانا می‌شوند. در ویندوز پیکربندی‌شده برای منطقهٔ شرق آسیا، ممکن است هنگام نمایش پیام‌ها لرزش و پرش زیادی در کنسول مشاهده کنید.

در کنسول ConEmu روش کدگذاری utf8 به خوبی کار می‌کند.

هنگامی که از روش "utf8bom" استفاده می‌شود، متن UTF-8 با یک علامت ترتیب بایت یا BOM (مخفف Byte Order Mark) آغاز خواهد شد. برای هدایت مجدد (redirection) یا لوله‌کشی (piping) صحیح در PowerShell، وجود BOM الزامی است.

کدگذاری پیش‌فرض را می‌توان با تنظیم متغیر محیطی DOS2UNIX_DISPLAY_ENC به مقادیر "unicode"، "unicodebom"، "utf8" یا "utf8bom" تغییر داد.

افزودن شکست خط به سطر پایانی در صورتی که فاقد آن باشد. این گزینه برای تمام تبدیل‌ها اعمال می‌شود.

فایلی که از قالب DOS به Unix تبدیل می‌شود ممکن است در سطر آخر فاقد شکست خط باشد. برخی از ویرایشگرهای متن فایل‌ها را بدون شکست خط در سطر آخر ذخیره می‌کنند. برخی از برنامه‌های Unix در پردازش این فایل‌ها دچار مشکل می‌شوند، زیرا استاندارد POSIX تعیین می‌کند که هر خط در یک فایل متنی باید با یک نویسهٔ خط‌جدید (newline) خاتمه یابد. برای نمونه، الحاق کردن فایل‌ها (concatenation) ممکن است نتیجهٔ مورد انتظار را در پی نداشته باشد.

بازگرداندن خطا در صورتی که از یک فایل باینری صرف‌نظر شود.
اجبار به تبدیل فایل‌های باینری.
در ویندوز، فایل‌های UTF-16 صرف‌نظر از تنظیمات locale به‌طور پیش‌فرض به UTF-8 تبدیل می‌شوند. از این گزینه برای تبدیل فایل‌های UTF-16 به GB18030 استفاده کنید. این گزینه تنها در ویندوز در دسترس است. بخش GB18030 را نیز ببینید.
نمایش راهنما و خروج.
نمایش اطلاعات فایل. هیچ تبدیلی انجام نمی‌شود.

اطلاعات زیر به همین ترتیب چاپ می‌شوند: تعداد شکست‌های خط DOS، تعداد شکست‌های خط Unix، تعداد شکست‌های خط Mac، علامت ترتیب بایت (BOM)، متنی یا باینری، نام فایل.

خروجی نمونه:

 6       0       0  no_bom    text    dos.txt
 0       6       0  no_bom    text    unix.txt
 0       0       6  no_bom    text    mac.txt
 6       6       6  no_bom    text    mixed.txt
50       0       0  UTF-16LE  text    utf16le.txt
 0      50       0  no_bom    text    utf8unix.txt
50       0       0  UTF-8     text    utf8dos.txt
 2     418     219  no_bom    binary  dos2unix.exe

توجه داشته باشید که گاهی ممکن است یک فایل باینری به اشتباه فایل متنی تشخیص داده شود. همچنین گزینهٔ "-s" را ببینید.

اگر علاوه‌بر این از گزینهٔ "-e" یا "--add-eol" استفاده شود، نوع شکست خط در سطر پایانی نیز چاپ می‌شود، و در صورت نبود آن عبارت "noeol" چاپ خواهد شد.

خروجی نمونه:

6       0       0  no_bom    text   dos     dos.txt
0       6       0  no_bom    text   unix    unix.txt
0       0       6  no_bom    text   mac     mac.txt
1       0       0  no_bom    text   noeol   noeol_dos.txt

به‌صورت اختیاری می‌توان پرچم‌های بیشتری را برای تغییر خروجی تعیین کرد. یک یا چند پرچم را می‌توان اضافه کرد.

0
چاپ خطوط اطلاعات فایل که به‌جای نویسهٔ خط‌جدید با یک نویسهٔ null خاتمه می‌یابند. این پرچم هنگام استفاده از پرچم c امکان تفسیر صحیح نام‌های فایلی را که شامل فاصله یا علامت‌های نقل‌قول هستند فراهم می‌کند. از این پرچم در ترکیب با گزینهٔ -0 یا "--null" در xargs(1) استفاده کنید.
چاپ تعداد شکست‌های خط DOS.
چاپ تعداد شکست‌های خط Unix.
چاپ تعداد شکست‌های خط Mac.
چاپ علامت ترتیب بایت (BOM).
چاپ وضعیت متنی یا باینری بودن فایل.
چاپ نوع شکست خط در سطر آخر، یا "noeol" در صورت نبود آن.
تنها چاپ فایل‌هایی که تبدیل خواهند شد.

با پرچم "c"، دستور dos2unix تنها فایل‌هایی را چاپ می‌کند که حاوی شکست خط DOS هستند، و دستور unix2dos تنها نام فایل‌هایی را چاپ می‌کند که شکست خط Unix دارند.

اگر علاوه‌بر این از گزینهٔ "-e" یا "--add-eol" استفاده شود، فایل‌هایی که در سطر پایانی فاقد شکست خط هستند نیز چاپ خواهند شد.

چاپ سربرگ.
نمایش نام فایل‌ها بدون مسیر.

مثال‌ها:

نمایش اطلاعات برای تمام فایل‌های *.txt:

dos2unix -i *.txt

نمایش تنها تعداد شکست‌های خط DOS و شکست‌های خط Unix:

dos2unix -idu *.txt

نمایش تنها علامت ترتیب بایت (BOM):

dos2unix --info=b *.txt

فهرست کردن فایل‌هایی که دارای شکست خط DOS هستند:

dos2unix -ic *.txt

فهرست کردن فایل‌هایی که دارای شکست خط Unix هستند:

unix2dos -ic *.txt

فهرست کردن فایل‌هایی که دارای شکست خط DOS هستند یا در سطر پایانی شکست خط ندارند:

dos2unix -e -ic *.txt

تبدیل تنها فایل‌هایی که شکست خط DOS دارند و دست‌نخورده باقی گذاشتن سایر فایل‌ها:

dos2unix -ic0 *.txt | xargs -0 dos2unix

یافتن فایل‌های متنی که دارای شکست خط DOS هستند:

find -name '*.txt' -print0 | xargs -0 dos2unix -ic
حفظ برچسب تاریخ و زمان فایل خروجی، مشابه با فایل ورودی.
نمایش پروانهٔ برنامه.
افزودن خط‌جدید اضافی.

dos2unix: تنها شکست‌های خط DOS به دو شکست خط Unix تبدیل می‌شوند. در حالت Mac تنها شکست‌های خط Mac به دو شکست خط Unix تبدیل می‌شوند.

unix2dos: تنها شکست‌های خط Unix به دو شکست خط DOS تبدیل می‌شوند. در حالت Mac شکست‌های خط Unix به دو شکست خط Mac تبدیل می‌شوند.

نوشتن یک علامت ترتیب بایت (BOM) در فایل خروجی. به‌طور پیش‌فرض یک BOM برای UTF-8 نوشته می‌شود.

هنگامی که فایل ورودی UTF-16 باشد و از گزینهٔ "-u" استفاده شود، یک BOM برای UTF-16 نوشته خواهد شد.

هرگز از این گزینه هنگامی که کدگذاری خروجی چیزی غیر از UTF-8، UTF-16 یا GB18030 است استفاده نکنید. همچنین بخش UNICODE را ببینید..IP "-n, --newfile INFILE OUTFILE ..." 4 حالت فایل جدید. فایل INFILE را تبدیل کرده و خروجی را در فایل OUTFILE می‌نویسد. نام‌های فایل باید به صورت جفت ارائه شوند و از الگوهای عام (wildcard) نباید استفاده شود، در غیر این صورت فایل‌های خود را از دست خواهید داد.

کسی که تبدیل را در حالت فایل جدید (جفتی) آغاز می‌کند، مالک فایل تبدیل‌شده خواهد بود. مجوزهای خواندن/نوشتن فایل جدید، همان مجوزهای فایل اصلی منهای مقدار umask(1) کاربری است که تبدیل را اجرا می‌کند.

اجازه ندادن به تغییر مالکیت فایل در حالت فایل قدیمی (پیش‌فرض).

هنگامی که مالکیت کاربر و/یا گروهِ فایل اصلی نتواند در حالت فایل قدیمی حفظ شود، تبدیل متوقف می‌شود. همچنین گزینه‌های "-o" و "-n" را ببینید. این گزینه تنها در صورتی در دسترس است که dos2unix از حفظ مالکیت کاربر و گروه فایل‌ها پشتیبانی کند.

در صورتی که خط پایانی فاقد شکست خط باشد، شکست خطی به آن اضافه نشود (پیش‌فرض).
در صورت نادیده گرفتن یک فایل باینری، خطایی برگردانده نشود (پیش‌فرض).
نوشتن در خروجی استاندارد، مانند یک فیلتر Unix. برای بازگشت به حالت فایل قدیمی (درجا یا in-place)، از گزینهٔ "-o" استفاده کنید.

در صورت ترکیب با گزینهٔ "-e"، فایل‌ها را می‌توان به درستی به هم متصل (concatenate) کرد؛ بدون ادغام شدن خطوط پایانی و آغازین، و بدون نشانه‌های ترتیب بایت (BOM) یونیکد در میانهٔ فایلِ متصل‌شده. مثال:

dos2unix -e -O file1.txt file2.txt > output.txt
حالت فایل قدیمی. فایل FILE را تبدیل کرده و خروجی را روی آن بازنویسی می‌کند. برنامه به طور پیش‌فرض در این حالت اجرا می‌شود. نام‌های دارای نویسه عام (wildcard) مجاز هستند.

در حالت فایل قدیمی (درجا یا in-place)، فایل تبدیل‌شده همان مالک، گروه و مجوزهای خواندن/نوشتن فایل اصلی را دریافت می‌کند؛ حتی زمانی که فایل توسط کاربر دیگری تبدیل شود که مجوز نوشتن روی فایل را دارد (برای نمونه کاربر root). در صورتی که حفظ مقادیر اصلی ممکن نباشد، عملیات تبدیل متوقف خواهد شد. تغییر مالک می‌تواند به این معنی باشد که مالک اصلی دیگر قادر به خواندن فایل نخواهد بود. تغییر گروه نیز می‌تواند یک ریسک امنیتی باشد، زیرا ممکن است فایل برای اشخاصی که مورد نظر نبوده‌اند، قابل خواندن شود. حفظ مالک، گروه و مجوزهای خواندن/نوشتن تنها در Unix پشتیبانی می‌شود.

برای بررسی اینکه آیا dos2unix از حفظ مالکیت کاربر و گروه فایل‌ها پشتیبانی می‌کند، عبارت "dos2unix -V" را تایپ کنید.

تبدیل همیشه از طریق یک فایل موقت انجام می‌شود. هنگامی که خطایی در میانهٔ تبدیل رخ دهد، فایل موقت حذف شده و فایل اصلی دست‌نخورده باقی می‌ماند. وقتی تبدیل با موفقیت انجام شود، فایل اصلی با فایل موقت جایگزین می‌شود. ممکن است شما مجوز نوشتن روی فایل اصلی را داشته باشید، اما مجوز تنظیم همان ویژگی‌های مالکیت کاربر و/یا گروهِ فایل اصلی را روی فایل موقت نداشته باشید. این بدان معناست که شما قادر به حفظ مالکیت کاربر و/یا گروه فایل اصلی نیستید. در این حالت می‌توانید از گزینهٔ "--allow-chown" برای ادامهٔ تبدیل استفاده کنید:

dos2unix --allow-chown foo.txt

گزینهٔ دیگر، استفاده از حالت فایل جدید است:

dos2unix -n foo.txt foo.txt

مزیت گزینهٔ "--allow-chown" این است که می‌توانید از نویسه‌های عام استفاده کنید و ویژگی‌های مالکیت در صورت امکان حفظ خواهند شد.

حالت بی‌صدا. فرونشاندن تمامی هشدارها و پیام‌ها. مقدار بازگشتی صفر است، مگر زمانی که از گزینه‌های خط فرمان نادرست استفاده شده باشد.
حذف نشانه ترتیب بایت (BOM). در فایل خروجی نشانه BOM نوشته نمی‌شود. این رفتارِ پیش‌فرض هنگام تبدیل به شکست خط‌های Unix است. همچنین گزینهٔ "-b" را ببینید.
نادیده گرفتن فایل‌های باینری (پیش‌فرض).

نادیده گرفتن فایل‌های باینری برای جلوگیری از اشتباهات ناخواسته انجام می‌شود. توجه داشته باشید که تشخیص فایل‌های باینری ۱۰۰٪ خطاناپذیر نیست. فایل‌های ورودی برای نمادهای باینری که معمولاً در فایل‌های متنی یافت نمی‌شوند، پویش می‌شوند. ممکن است یک فایل باینری تنها حاوی نویسه‌های متنی عادی باشد. چنین فایل باینری به اشتباه به عنوان یک فایل متنی دیده خواهد شد.

به طور پیش‌فرض، هنگامی که یک فایل باینری نادیده گرفته می‌شود، خطایی بازگردانده نمی‌شود. زمانی که از گزینهٔ "--error-binary" استفاده شود، خطا برگردانده خواهد شد.

حفظ کدگذاری اصلی UTF-16 فایل ورودی. فایل خروجی در همان کدگذاری UTF-16 (ترتیب بایت‌های little-endian یا big-endian) مانند فایل ورودی نوشته خواهد شد. این کار مانع از تبدیل به UTF-8 می‌شود. بر همین اساس یک BOM مربوط به UTF-16 نیز نوشته خواهد شد. این گزینه می‌تواند با گزینهٔ "-ascii" غیرفعال شود.
فرض کردن اینکه قالب فایل ورودی UTF-16LE است.

هنگامی که یک نشانه ترتیب بایت (BOM) در فایل ورودی وجود داشته باشد، BOM بر این گزینه اولویت دارد.

اگر فرضی نادرست داشته باشید (فایل ورودی در قالب UTF-16LE نبوده باشد) و تبدیل موفق شود، یک فایل خروجی UTF-8 با متنی نادرست دریافت خواهید کرد. می‌توانید تبدیل اشتباه را با iconv(1) از طریق تبدیل فایل خروجی UTF-8 به UTF-16LE واگردانی کنید. این کار فایل اصلی را بازمی‌گرداند.

فرض UTF-16LE به عنوان یک حالت تبدیل عمل می‌کند. با جابه‌جایی به حالت پیش‌فرض ascii، فرض UTF-16LE خاموش می‌شود.

فرض کردن اینکه قالب فایل ورودی UTF-16BE است.

این گزینه مانند گزینهٔ "-ul" عمل می‌کند.

نمایش پیام‌های مفصل (verbose). اطلاعات بیشتری در مورد نشانه‌های ترتیب بایت و میزان شکست‌های خط تبدیل‌شده نمایش داده می‌شود.
پیروی از پیوندهای نمادین و تبدیل مقصدهای آن‌ها.
جایگزین کردن پیوندهای نمادین با فایل‌های تبدیل‌شده (فایل‌های مقصد اصلی بدون تغییر باقی می‌مانند).
دست‌نخورده نگه داشتن پیوندهای نمادین و مقصدها (پیش‌فرض).
نمایش اطلاعات نسخه و خروج..SH "حالت مک (MAC MODE)" به‌طور پیش‌فرض، شکست‌های خط از DOS به Unix و برعکس تبدیل می‌شوند. شکست‌های خط Mac تبدیل نمی‌شوند.

در حالت Mac، شکست‌های خط از Mac به Unix و برعکس تبدیل می‌شوند. شکست‌های خط DOS دست‌نخورده باقی می‌مانند.

برای اجرا در حالت Mac، از گزینهٔ خط فرمان "-c mac"; یا از دستورهای "mac2unix" یا "unix2mac" استفاده کنید.

این حالتِ پیش‌فرض تبدیل است. این حالت برای تبدیل فایل‌هایی با کدگذاری ASCII و سازگار با ASCII، مانند UTF-8 است. فعال‌کردن حالت ascii حالت‌های 7bit و iso را غیرفعال می‌کند.

اگر dos2unix از UTF-16 پشتیبانی کند، فایل‌های با کدگذاری UTF-16 در سیستم‌های POSIX به کدگذاری نویسهٔ locale فعلی و در ویندوز به UTF-8 تبدیل می‌شوند. فعال‌کردن حالت ascii گزینهٔ حفظ کدگذاری UTF-16 ("-u") و گزینه‌های فرض ورودی UTF-16 ("-ul" و "-ub") را غیرفعال می‌کند. برای بررسی این‌که آیا dos2unix از UTF-16 پشتیبانی می‌کند، دستور "dos2unix -V" را اجرا کنید. همچنین بخش UNICODE را ببینید.

7bit
در این حالت تمام نویسه‌های ۸ بیتی غیر ASCII (با مقادیر ۱۲۸ تا ۲۵۵) به یک نویسهٔ فاصلهٔ ۷ بیتی تبدیل می‌شوند.
نویسه‌ها بین یک مجموعه نویسهٔ DOS (صفحه کد) و مجموعه نویسهٔ ISO یعنی ISO-8859-1 (Latin-1) در Unix تبدیل می‌شوند. نویسه‌های DOS فاقد معادل ISO-8859-1، که تبدیل آن‌ها ممکن نیست، به یک نقطه تبدیل می‌شوند. همین قاعده برای نویسه‌های ISO-8859-1 فاقد معادل در DOS نیز صدق می‌کند.

هنگامی که تنها از گزینهٔ "-iso" استفاده شود، dos2unix تلاش خواهد کرد صفحه کد فعال را تشخیص دهد. در صورتی که این کار ممکن نباشد، dos2unix از صفحه کد پیش‌فرض CP437 که عمدتاً در ایالات متحده کاربرد دارد استفاده خواهد کرد. برای تحمیل یک صفحه کد خاص، از گزینه‌های -437 (ایالات متحده)، -850 (اروپای غربی)، -860 (پرتغالی)، -863 (فرانسوی کانادایی)، یا -865 (نوردیک) استفاده کنید. صفحه کد ویندوز CP1252 (اروپای غربی) نیز با گزینهٔ -1252 پشتیبانی می‌شود. برای سایر صفحه‌های کد، dos2unix را در ترکیب با iconv(1) به کار ببرید. ابزار Iconv می‌تواند بین فهرست بلندی از کدگذاری‌های نویسه تبدیل انجام دهد.

هرگز تبدیل ISO را روی فایل‌های متنی یونیکد اعمال نکنید؛ چرا که فایل‌های با کدگذاری UTF-8 را خراب خواهد کرد.

چند مثال:

تبدیل از صفحه کد پیش‌فرض DOS به Latin-1 یونیکس:

dos2unix -iso -n in.txt out.txt

تبدیل از DOS CP850 به Latin-1 یونیکس:

dos2unix -850 -n in.txt out.txt

تبدیل از Windows CP1252 به Latin-1 یونیکس:

dos2unix -1252 -n in.txt out.txt

تبدیل از Windows CP1252 به UTF-8 یونیکس (یونیکد):

iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt

تبدیل از Latin-1 یونیکس به صفحه کد پیش‌فرض DOS:

unix2dos -iso -n in.txt out.txt

تبدیل از Latin-1 یونیکس به DOS CP850:

unix2dos -850 -n in.txt out.txt

تبدیل از Latin-1 یونیکس به Windows CP1252:

unix2dos -1252 -n in.txt out.txt

تبدیل از UTF-8 یونیکس (یونیکد) به Windows CP1252:

unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt

همچنین ببینید: https://czyborra.com/charsets/codepages.html و https://czyborra.com/charsets/iso8859.html.

کدگذاری‌های یونیکد متفاوتی وجود دارند. در Unix و Linux فایل‌های یونیکد معمولاً دارای کدگذاری UTF-8 هستند. در Windows فایل‌های متنی یونیکد می‌توانند دارای کدگذاری UTF-8، UTF-16 یا UTF-16 big-endian باشند، اما بیشتر در قالب UTF-16 کدگذاری می‌شوند.

فایل‌های متنی یونیکد نیز مانند فایل‌های متنی ASCII می‌توانند دارای شکست‌های خط DOS، Unix یا Mac باشند.

تمام نسخه‌های dos2unix و unix2dos می‌توانند فایل‌های با کدگذاری UTF-8 را تبدیل کنند؛ زیرا UTF-8 برای سازگاری عقبروی با ASCII طراحی شده است.

ابزارهای dos2unix و unix2dos مجهز به پشتیبانی از Unicode UTF-16، می‌توانند فایل‌های متنی با کدگذاری UTF-16 در دو حالت little-endian و big-endian را بخوانند. برای بررسی اینکه آیا dos2unix با پشتیبانی از UTF-16 ساخته شده است، عبارت "dos2unix -V" را اجرا کنید.

در Unix/Linux فایل‌های با کدگذاری UTF-16 به کدگذاری نویسهٔ locale جاری تبدیل می‌شوند. برای پیدا کردن کدگذاری نویسهٔ locale از دستور locale(1) استفاده کنید. هنگامی که تبدیل امکان‌پذیر نباشد، خطای تبدیل رخ می‌دهد و فایل نادیده گرفته خواهد شد.

در Windows فایل‌های UTF-16 به‌طور پیش‌فرض به UTF-8 تبدیل می‌شوند. فایل‌های متنی با قالب UTF-8 به‌خوبی در هر دو سیستم‌عامل Windows و Unix/Linux پشتیبانی می‌شوند.

کدگذاری‌های UTF-16 و UTF-8 کاملاً با یکدیگر سازگارند و هیچ متنی در طول تبدیل از بین نخواهد رفت. هنگامی که یک خطای تبدیل UTF-16 به UTF-8 رخ دهد (برای نمونه زمانی که فایل ورودی UTF-16 شامل خطایی باشد)، از فایل صرف‌نظر خواهد شد.

هنگامی که از گزینهٔ "-u" استفاده شود، فایل خروجی با همان کدگذاری UTF-16 فایل ورودی نوشته می‌شود. گزینهٔ "-u" از تبدیل به UTF-8 جلوگیری می‌کند.

دستورهای dos2unix و unix2dos هیچ گزینه‌ای برای تبدیل فایل‌های UTF-8 به UTF-16 ندارند.

تبدیل در حالت‌های ISO و 7-bit روی فایل‌های UTF-16 کار نمی‌کند..SS "نشانگر ترتیب بایت (Byte Order Mark)" در ویندوز، فایل‌های متنی یونیکد معمولاً دارای یک نشانگر ترتیب بایت (BOM یا Byte Order Mark) هستند، زیرا بسیاری از برنامه‌های ویندوز (از جمله Notepad) به‌طور پیش‌فرض BOM را اضافه می‌کنند. همچنین ببینید: https://en.wikipedia.org/wiki/Byte_order_mark.

در یونیکس، فایل‌های یونیکد معمولاً فاقد BOM هستند. فرض بر این است که فایل‌های متنی با کدگذاری نویسه محلی (locale character encoding) کدگذاری شده‌اند.

دستور dos2unix تنها در صورتی می‌تواند تشخیص دهد که فایلی با قالب UTF-16 است که فایل دارای BOM باشد. هنگامی که یک فایل UTF-16 فاقد BOM باشد، dos2unix آن را به عنوان یک فایل باینری در نظر می‌گیرد.

برای تبدیل یک فایل UTF-16 بدون BOM، از گزینهٔ "-ul" یا "-ub" استفاده کنید.

دستور dos2unix به‌طور پیش‌فرض هیچ BOMای در فایل خروجی نمی‌نویسد. با گزینهٔ "-b"، dos2unix در صورتی که فایل ورودی دارای BOM باشد، یک BOM در خروجی می‌نویسد.

دستور unix2dos در صورتی که فایل ورودی دارای BOM باشد، به‌طور پیش‌فرض یک BOM در فایل خروجی می‌نویسد. برای حذف BOM از گزینهٔ "-r" استفاده کنید.

هنگامی که گزینهٔ "-m" استفاده شود، dos2unix و unix2dos همواره یک BOM می‌نویسند.

دستور dos2unix دارای پشتیبانی اختیاری برای خواندن و نوشتن نام‌های فایل یونیکد در Windows Command Prompt است. این بدان معناست که dos2unix می‌تواند فایل‌هایی را باز کند که نام آن‌ها دارای نویسه‌هایی خارج از کدپیج پیش‌فرض ANSI سیستم است. برای بررسی اینکه آیا dos2unix برای ویندوز با پشتیبانی از نام فایل یونیکد ساخته شده است یا خیر، دستور "dos2unix -V" را اجرا کنید.

مشکلاتی در نمایش نام‌های فایل یونیکد در کنسول ویندوز وجود دارد. گزینه‌های "-D" و "--display-enc" را ببینید. ممکن است نام فایل‌ها در کنسول به‌نادرستی نمایش داده شوند، اما فایل‌ها با نام صحیح نوشته خواهند شد.

تبدیل از UTF-16 ویندوز (همراه با BOM) به UTF-8 یونیکس:

dos2unix -n in.txt out.txt

تبدیل از UTF-16LE ویندوز (بدون BOM) به UTF-8 یونیکس:

dos2unix -ul -n in.txt out.txt

تبدیل از UTF-8 یونیکس به UTF-8 ویندوز همراه با BOM:

unix2dos -m -n in.txt out.txt

تبدیل از UTF-8 یونیکس به UTF-16 ویندوز:

unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt

استاندارد GB18030 یک استاندارد دولتی چین است. یک زیرمجموعهٔ الزامی از استاندارد GB18030 رسماً برای تمام محصولات نرم‌افزاری فروخته‌شده در چین اجباری است. همچنین ببینید: https://en.wikipedia.org/wiki/GB_18030.

استاندارد GB18030 کاملاً با یونیکد سازگار است و می‌تواند یک قالب تبدیل یونیکد در نظر گرفته شود. همانند UTF-8، استاندارد GB18030 نیز با ASCII سازگار است. همچنین GB18030 با کدپیج ۹۳۶ ویندوز، که با نام GBK نیز شناخته می‌شود، سازگار است.

در یونیکس/لینوکس، هنگامی که کدگذاری locale روی GB18030 تنظیم شده باشد، فایل‌های UTF-16 به GB18030 تبدیل می‌شوند. توجه داشته باشید که این تنها در صورتی کار می‌کند که لوکال توسط سیستم پشتیبانی شود. برای مشاهدهٔ فهرست لوکال‌های پشتیبانی‌شده از دستور "locale -a" استفاده کنید.

در ویندوز، برای تبدیل فایل‌های UTF-16 به GB18030 باید از گزینهٔ "-gb" استفاده کنید.

فایل‌های کدگذاری‌شده با GB18030 می‌توانند همانند فایل‌های یونیکد دارای نشانگر ترتیب بایت (BOM) باشند.

خواندن ورودی از 'stdin' و نوشتن خروجی در 'stdout':

dos2unix < a.txt
cat a.txt | dos2unix

تبدیل و جایگزینی a.txt. تبدیل و جایگزینی b.txt:

dos2unix a.txt b.txt
dos2unix -o a.txt b.txt

تبدیل و جایگزینی a.txt در حالت تبدیل ascii:

dos2unix a.txt

تبدیل و جایگزینی a.txt در حالت تبدیل ascii، تبدیل و جایگزینی b.txt در حالت تبدیل 7bit:

dos2unix a.txt -c 7bit b.txt
dos2unix -c ascii a.txt -c 7bit b.txt
dos2unix -ascii a.txt -7 b.txt

تبدیل a.txt از قالب Mac به قالب Unix:

dos2unix -c mac a.txt
mac2unix a.txt

تبدیل a.txt از قالب Unix به قالب Mac:

unix2dos -c mac a.txt
unix2mac a.txt

تبدیل و جایگزینی a.txt در حین حفظ برچسب زمان اصلی:

dos2unix -k a.txt
dos2unix -k -o a.txt

تبدیل a.txt و نوشتن در e.txt:

dos2unix -n a.txt e.txt

تبدیل a.txt و نوشتن در e.txt، و یکسان نگه‌داشتن برچسب زمان e.txt با a.txt:

dos2unix -k -n a.txt e.txt

تبدیل و جایگزینی a.txt، تبدیل b.txt و نوشتن در e.txt:

dos2unix a.txt -n b.txt e.txt
dos2unix -o a.txt -n b.txt e.txt

تبدیل c.txt و نوشتن در e.txt، تبدیل و جایگزینی a.txt، تبدیل و جایگزینی b.txt، تبدیل d.txt و نوشتن در f.txt:

    dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt
در شل یونیکس، از دستورهای find(1) و xargs(1) می‌توان برای اجرای بازگشتی dos2unix روی تمام فایل‌های متنی یک درخت دایرکتوری استفاده کرد. برای مثال جهت تبدیل تمام فایل‌های .txt در درخت دایرکتوریِ زیر دایرکتوری جاری، بنویسید:
find . -name '*.txt' -print0 |xargs -0 dos2unix

گزینهٔ "-print0" در find(1) و گزینهٔ متناظر آن در xargs(1)، یعنی -0، زمانی لازم هستند که نام فایل‌ها حاوی فاصله یا علامت‌های نقل‌قول باشد. در غیر این صورت می‌توان این گزینه‌ها را حذف کرد. راهکار دیگر، استفاده از find(1) با گزینهٔ "-exec" است:

find . -name '*.txt' -exec dos2unix {} \;

در خط فرمان ویندوز (Command Prompt) می‌توان از دستور زیر استفاده کرد:

for /R %G in (*.txt) do dos2unix "%G"

کاربران پاورشل می‌توانند از دستور زیر در Windows PowerShell استفاده کنند:

get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname}

زبان اصلی با متغیر محیطی LANG مشخص می‌شود. متغیر LANG از چندین بخش تشکیل شده است. بخش نخست، کد زبان با حروف کوچک است. بخش دوم اختیاری بوده و کد کشور با حروف بزرگ است که یک خط زیرین (_) پیش از آن می‌آید. بخش سومی نیز به صورت اختیاری وجود دارد: کدبندی نویسه‌ها (character encoding)، که با یک نقطه شروع می‌شود. چند مثال برای شل‌های استاندارد POSIX:
export LANG=nl               Dutch
export LANG=nl_NL            Dutch, The Netherlands
export LANG=nl_BE            Dutch, Belgium
export LANG=es_ES            Spanish, Spain
export LANG=es_MX            Spanish, Mexico
export LANG=en_US.iso88591   English, USA, Latin-1 encoding
export LANG=en_GB.UTF-8      English, UK, UTF-8 encoding

برای دیدن فهرست کاملی از کدهای زبان و کشور، راهنمای gettext را ببینید: https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html

در سیستم‌های یونیکس می‌توانید از دستور locale(1) برای دریافت اطلاعات مربوط به locale استفاده کنید.

با متغیر محیطی LANGUAGE می‌توانید فهرستی اولویت‌بندی‌شده از زبان‌ها را با دونقطه (:) از یکدیگر جدا کرده و مشخص کنید. dos2unix متغیر LANGUAGE را بر LANG ترجیح می‌دهد. برای نمونه، ابتدا هلندی و سپس آلمانی: "LANGUAGE=nl:de". پیش از استفاده از فهرست اولویت زبان‌ها از طریق متغیر LANGUAGE، ابتدا باید محلی‌سازی را با مقداردهی LANG (یا LC_ALL) به مقداری غیر از “C” فعال کنید. همچنین راهنمای gettext را ببینید: https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html

اگر زبانی را انتخاب کنید که در دسترس نباشد، پیام‌ها با زبان استاندارد انگلیسی نمایش داده خواهند شد.

با متغیر محیطی DOS2UNIX_LOCALEDIR می‌توان مقدار LOCALEDIR تعیین‌شده هنگام کامپایل را لغو و بازنویسی کرد. LOCALEDIR برای یافتن فایل‌های زبان به کار می‌رود. مقدار پیش‌فرض در گنو "/usr/local/share/locale" است. گزینهٔ --version مقدار LOCALEDIR مورداستفاده را نمایش خواهد داد.

مثال (شل POSIX):

export DOS2UNIX_LOCALEDIR=$HOME/share/locale

در صورت موفقیت، صفر بازگردانده می‌شود. هنگام رخ دادن یک خطای سیستمی، آخرین خطای سیستم برگردانده خواهد شد. برای سایر خطاها، مقدار 1 بازگردانده می‌شود.

مقدار بازگشتی در حالت بی‌صدا (quiet mode) همیشه صفر است، مگر این‌که گزینه‌های نادرستی در خط فرمان به کار گرفته شده باشند.

https://en.wikipedia.org/wiki/Text_file

https://en.wikipedia.org/wiki/Carriage_return

https://en.wikipedia.org/wiki/Newline

https://en.wikipedia.org/wiki/Unicode

Benjamin Lin - <blin@socs.uts.edu.au>، Bernd Johannes Wuebben (حالت mac2unix) - <wuebben@kde.org>، Christian Wurll (افزودن خط جدید اضافه) - <wurll@ira.uka.de>، Erwin Waterlander - <waterlan@xs4all.nl> (نگه‌دارنده)

صفحهٔ پروژه: https://waterlander.net/dos2unix

صفحهٔ سورس‌فورج: https://sourceforge.net/projects/dos2unix

file(1) find(1) iconv(1) locale(1) xargs(1)

2026-08-27 dos2unix