| dos2unix(1) | 2026-08-27 | dos2unix(1) |
نام (NAME)
dos2unix - مبدل قالب فایلهای متنی DOS/Mac به Unix و برعکس
خلاصه دستور (SYNOPSIS)
dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...] unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]
توضیحات (DESCRIPTION)
بستهٔ 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 بهره میبرد.
گزینهها (OPTIONS)
- --
- با تمام
گزینههای
پس از این
به عنوان
نام فایل
رفتار
میکند. اگر
میخواهید
فایلهایی
را که
نامشان با
خط تیره (dash)
آغاز
میشود
تبدیل
کنید، از
این گزینه
استفاده
نمایید.
برای
نمونه، جهت
تبدیل
فایلی به
نام «-foo»،
میتوانید
از این
دستور
استفاده
کنید:
dos2unix -- -foo
یا در حالت فایل جدید:
dos2unix -n -- -foo out.txt
- --allow-chown
- اجازه دادن
به تغییر
مالکیت
فایل در
حالت فایل
قدیمی.
هنگام استفاده از این گزینه، در صورتی که مالکیت کاربر و/یا گروهِ فایل اصلی در حالت فایل قدیمی قابل حفظ نباشد، تبدیل لغو نخواهد شد. فرایند تبدیل ادامه مییابد و فایل تبدیلشده همان مالکیت جدیدی را دریافت میکند که گویی در حالت فایل جدید تبدیل شده است. همچنین گزینههای "-o" و "-n" را ببینید. این گزینه تنها در صورتی در دسترس است که dos2unix از حفظ مالکیت کاربر و گروه فایلها پشتیبانی کند.
- -ascii
- حالت تبدیل پیشفرض. بخش «حالتهای تبدیل (CONVERSION MODES)» را نیز ببینید.
- -iso
- تبدیل بین مجموعه نویسههای DOS و ISO-8859-1. بخش «حالتهای تبدیل (CONVERSION MODES)» را نیز ببینید.
- -1252
- استفاده از صفحهٔ کُد 1252 ویندوز (اروپای غربی).
- -437
- استفاده از صفحهٔ کُد 437 داس (ایالات متحده). این صفحهٔ کُد پیشفرض برای تبدیل ISO است.
- -850
- استفاده از صفحهٔ کُد 850 داس (اروپای غربی).
- -860
- استفاده از صفحهٔ کُد 860 داس (پرتغالی).
- -863
- استفاده از صفحهٔ کُد 863 داس (فرانسوی کانادایی).
- -865
- استفاده از صفحهٔ کُد 865 داس (نوردیک).
- -7
- تبدیل نویسههای 8 بیتی به فضای 7 بیتی.
- -b, --keep-bom
- نگهداشتن نشانگر ترتیب بایت (BOM). زمانی که فایل ورودی دارای BOM باشد، یک BOM در فایل خروجی مینویسد. این رفتار پیشفرض هنگام تبدیل به شکستگیهای خط DOS است. گزینهٔ "-r" را نیز ببینید.
- -c, --convmode CONVMODE
- تنظیم حالت تبدیل. که در آن CONVMODE یکی از موارد زیر است: ascii، 7bit، iso، mac که ascii حالت پیشفرض است.
- -D, --display-enc ENCODING
- تنظیم
کُدگذاری
متن
نمایشدادهشده.
که در آن ENCODING
یکی از
موارد زیر
است: ansi، unicode،
unicodebom، utf8، utf8bom
که ansi حالت
پیشفرض
است.
این گزینه فقط در dos2unix برای ویندوز با پشتیبانی از نام فایلهای یونیکُد در دسترس است. این گزینه هیچ تأثیری بر نام واقعی فایلهای خواندهشده و نوشتهشده ندارد، بلکه فقط بر نحوهٔ نمایش آنها اثر میگذارد.
روشهای مختلفی برای نمایش متن در کنسول ویندوز بر اساس کُدگذاری متن وجود دارد. همهٔ آنها مزایا و معایب خاص خود را دارند.
- ansi
- روش
پیشفرض dos2unix
استفاده از
متن با
کُدگذاری ANSI
است. مزیت
آن سازگاری
رو به عقب (backwards
compatibility) است. این
روش با
قلمهای
شطرنجی (raster) و
TrueType کار
میکند. در
برخی مناطق
ممکن است
لازم باشد
با استفاده
از دستور
"chcp"
صفحهٔ کُد
فعالِ DOS OEM را
به صفحهٔ
کُد ANSI سیستم
ویندوز
تغییر
دهید، زیرا
dos2unix از صفحهٔ
کُد سیستم
ویندوز
استفاده
میکند.
عیب ansi این است که نام فایلهای بینالمللی حاوی نویسههای خارج از صفحهٔ کُد پیشفرض سیستم، به درستی نمایش داده نمیشوند؛ به جای آنها علامت سؤال یا نمادی نادرست مشاهده خواهید کرد. اگر با نام فایلهای بینالمللی کار نمیکنید، این روش مشکلی نخواهد داشت.
- unicode, unicodebom
- مزیت
کُدگذاری 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" تغییر داد.
- -e, --add-eol
- افزودن
شکست خط به
سطر پایانی
در صورتی که
فاقد آن
باشد. این
گزینه برای
تمام
تبدیلها
اعمال
میشود.
فایلی که از قالب DOS به Unix تبدیل میشود ممکن است در سطر آخر فاقد شکست خط باشد. برخی از ویرایشگرهای متن فایلها را بدون شکست خط در سطر آخر ذخیره میکنند. برخی از برنامههای Unix در پردازش این فایلها دچار مشکل میشوند، زیرا استاندارد POSIX تعیین میکند که هر خط در یک فایل متنی باید با یک نویسهٔ خطجدید (newline) خاتمه یابد. برای نمونه، الحاق کردن فایلها (concatenation) ممکن است نتیجهٔ مورد انتظار را در پی نداشته باشد.
- --error-binary
- بازگرداندن خطا در صورتی که از یک فایل باینری صرفنظر شود.
- -f, --force
- اجبار به تبدیل فایلهای باینری.
- -gb, --gb18030
- در ویندوز، فایلهای UTF-16 صرفنظر از تنظیمات locale بهطور پیشفرض به UTF-8 تبدیل میشوند. از این گزینه برای تبدیل فایلهای UTF-16 به GB18030 استفاده کنید. این گزینه تنها در ویندوز در دسترس است. بخش GB18030 را نیز ببینید.
- -h, --help
- نمایش راهنما و خروج.
- -i[FLAGS], --info[=FLAGS] FILE ...
- نمایش
اطلاعات
فایل. هیچ
تبدیلی
انجام
نمیشود.
اطلاعات زیر به همین ترتیب چاپ میشوند: تعداد شکستهای خط 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) استفاده کنید.
- d
- چاپ تعداد شکستهای خط DOS.
- u
- چاپ تعداد شکستهای خط Unix.
- m
- چاپ تعداد شکستهای خط Mac.
- b
- چاپ علامت ترتیب بایت (BOM).
- t
- چاپ وضعیت متنی یا باینری بودن فایل.
- e
- چاپ نوع شکست خط در سطر آخر، یا "noeol" در صورت نبود آن.
- c
- تنها چاپ
فایلهایی
که تبدیل
خواهند شد.
با پرچم "c"، دستور dos2unix تنها فایلهایی را چاپ میکند که حاوی شکست خط DOS هستند، و دستور unix2dos تنها نام فایلهایی را چاپ میکند که شکست خط Unix دارند.
اگر علاوهبر این از گزینهٔ "-e" یا "--add-eol" استفاده شود، فایلهایی که در سطر پایانی فاقد شکست خط هستند نیز چاپ خواهند شد.
- h
- چاپ سربرگ.
- p
- نمایش نام فایلها بدون مسیر.
مثالها:
نمایش اطلاعات برای تمام فایلهای *.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
- -k, --keepdate
- حفظ برچسب تاریخ و زمان فایل خروجی، مشابه با فایل ورودی.
- -L, --license
- نمایش پروانهٔ برنامه.
- -l, --newline
- افزودن
خطجدید
اضافی.
dos2unix: تنها شکستهای خط DOS به دو شکست خط Unix تبدیل میشوند. در حالت Mac تنها شکستهای خط Mac به دو شکست خط Unix تبدیل میشوند.
unix2dos: تنها شکستهای خط Unix به دو شکست خط DOS تبدیل میشوند. در حالت Mac شکستهای خط Unix به دو شکست خط Mac تبدیل میشوند.
- -m, --add-bom
- نوشتن یک
علامت
ترتیب بایت
(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) کاربری است که تبدیل را اجرا میکند.
- --no-allow-chown
- اجازه
ندادن به
تغییر
مالکیت
فایل در
حالت فایل
قدیمی
(پیشفرض).
هنگامی که مالکیت کاربر و/یا گروهِ فایل اصلی نتواند در حالت فایل قدیمی حفظ شود، تبدیل متوقف میشود. همچنین گزینههای "-o" و "-n" را ببینید. این گزینه تنها در صورتی در دسترس است که dos2unix از حفظ مالکیت کاربر و گروه فایلها پشتیبانی کند.
- --no-add-eol
- در صورتی که خط پایانی فاقد شکست خط باشد، شکست خطی به آن اضافه نشود (پیشفرض).
- --no-error-binary
- در صورت نادیده گرفتن یک فایل باینری، خطایی برگردانده نشود (پیشفرض).
- -O, --to-stdout
- نوشتن در
خروجی
استاندارد،
مانند یک
فیلتر Unix.
برای
بازگشت به
حالت فایل
قدیمی (درجا
یا in-place)، از
گزینهٔ
"-o"
استفاده
کنید.
در صورت ترکیب با گزینهٔ "-e"، فایلها را میتوان به درستی به هم متصل (concatenate) کرد؛ بدون ادغام شدن خطوط پایانی و آغازین، و بدون نشانههای ترتیب بایت (BOM) یونیکد در میانهٔ فایلِ متصلشده. مثال:
dos2unix -e -O file1.txt file2.txt > output.txt
- -o, --oldfile FILE ...
- حالت فایل
قدیمی. فایل
FILE را تبدیل
کرده و
خروجی را
روی آن
بازنویسی
میکند.
برنامه به
طور
پیشفرض در
این حالت
اجرا
میشود.
نامهای
دارای
نویسه عام
(wildcard) مجاز
هستند.
در حالت فایل قدیمی (درجا یا in-place)، فایل تبدیلشده همان مالک، گروه و مجوزهای خواندن/نوشتن فایل اصلی را دریافت میکند؛ حتی زمانی که فایل توسط کاربر دیگری تبدیل شود که مجوز نوشتن روی فایل را دارد (برای نمونه کاربر root). در صورتی که حفظ مقادیر اصلی ممکن نباشد، عملیات تبدیل متوقف خواهد شد. تغییر مالک میتواند به این معنی باشد که مالک اصلی دیگر قادر به خواندن فایل نخواهد بود. تغییر گروه نیز میتواند یک ریسک امنیتی باشد، زیرا ممکن است فایل برای اشخاصی که مورد نظر نبودهاند، قابل خواندن شود. حفظ مالک، گروه و مجوزهای خواندن/نوشتن تنها در Unix پشتیبانی میشود.
برای بررسی اینکه آیا dos2unix از حفظ مالکیت کاربر و گروه فایلها پشتیبانی میکند، عبارت "dos2unix -V" را تایپ کنید.
تبدیل همیشه از طریق یک فایل موقت انجام میشود. هنگامی که خطایی در میانهٔ تبدیل رخ دهد، فایل موقت حذف شده و فایل اصلی دستنخورده باقی میماند. وقتی تبدیل با موفقیت انجام شود، فایل اصلی با فایل موقت جایگزین میشود. ممکن است شما مجوز نوشتن روی فایل اصلی را داشته باشید، اما مجوز تنظیم همان ویژگیهای مالکیت کاربر و/یا گروهِ فایل اصلی را روی فایل موقت نداشته باشید. این بدان معناست که شما قادر به حفظ مالکیت کاربر و/یا گروه فایل اصلی نیستید. در این حالت میتوانید از گزینهٔ "--allow-chown" برای ادامهٔ تبدیل استفاده کنید:
dos2unix --allow-chown foo.txt
گزینهٔ دیگر، استفاده از حالت فایل جدید است:
dos2unix -n foo.txt foo.txt
مزیت گزینهٔ "--allow-chown" این است که میتوانید از نویسههای عام استفاده کنید و ویژگیهای مالکیت در صورت امکان حفظ خواهند شد.
- -q, --quiet
- حالت بیصدا. فرونشاندن تمامی هشدارها و پیامها. مقدار بازگشتی صفر است، مگر زمانی که از گزینههای خط فرمان نادرست استفاده شده باشد.
- -r, --remove-bom
- حذف نشانه ترتیب بایت (BOM). در فایل خروجی نشانه BOM نوشته نمیشود. این رفتارِ پیشفرض هنگام تبدیل به شکست خطهای Unix است. همچنین گزینهٔ "-b" را ببینید.
- -s, --safe
- نادیده
گرفتن
فایلهای
باینری
(پیشفرض).
نادیده گرفتن فایلهای باینری برای جلوگیری از اشتباهات ناخواسته انجام میشود. توجه داشته باشید که تشخیص فایلهای باینری ۱۰۰٪ خطاناپذیر نیست. فایلهای ورودی برای نمادهای باینری که معمولاً در فایلهای متنی یافت نمیشوند، پویش میشوند. ممکن است یک فایل باینری تنها حاوی نویسههای متنی عادی باشد. چنین فایل باینری به اشتباه به عنوان یک فایل متنی دیده خواهد شد.
به طور پیشفرض، هنگامی که یک فایل باینری نادیده گرفته میشود، خطایی بازگردانده نمیشود. زمانی که از گزینهٔ "--error-binary" استفاده شود، خطا برگردانده خواهد شد.
- -u, --keep-utf16
- حفظ کدگذاری اصلی UTF-16 فایل ورودی. فایل خروجی در همان کدگذاری UTF-16 (ترتیب بایتهای little-endian یا big-endian) مانند فایل ورودی نوشته خواهد شد. این کار مانع از تبدیل به UTF-8 میشود. بر همین اساس یک BOM مربوط به UTF-16 نیز نوشته خواهد شد. این گزینه میتواند با گزینهٔ "-ascii" غیرفعال شود.
- -ul, --assume-utf16le
- فرض کردن
اینکه قالب
فایل ورودی
UTF-16LE است.
هنگامی که یک نشانه ترتیب بایت (BOM) در فایل ورودی وجود داشته باشد، BOM بر این گزینه اولویت دارد.
اگر فرضی نادرست داشته باشید (فایل ورودی در قالب UTF-16LE نبوده باشد) و تبدیل موفق شود، یک فایل خروجی UTF-8 با متنی نادرست دریافت خواهید کرد. میتوانید تبدیل اشتباه را با iconv(1) از طریق تبدیل فایل خروجی UTF-8 به UTF-16LE واگردانی کنید. این کار فایل اصلی را بازمیگرداند.
فرض UTF-16LE به عنوان یک حالت تبدیل عمل میکند. با جابهجایی به حالت پیشفرض ascii، فرض UTF-16LE خاموش میشود.
- -ub, --assume-utf16be
- فرض کردن
اینکه قالب
فایل ورودی
UTF-16BE است.
این گزینه مانند گزینهٔ "-ul" عمل میکند.
- -v, --verbose
- نمایش پیامهای مفصل (verbose). اطلاعات بیشتری در مورد نشانههای ترتیب بایت و میزان شکستهای خط تبدیلشده نمایش داده میشود.
- -F, --follow-symlink
- پیروی از پیوندهای نمادین و تبدیل مقصدهای آنها.
- -R, --replace-symlink
- جایگزین کردن پیوندهای نمادین با فایلهای تبدیلشده (فایلهای مقصد اصلی بدون تغییر باقی میمانند).
- -S, --skip-symlink
- دستنخورده نگه داشتن پیوندهای نمادین و مقصدها (پیشفرض).
- -V, --version
- نمایش اطلاعات نسخه و خروج..SH "حالت مک (MAC MODE)" بهطور پیشفرض، شکستهای خط از DOS به Unix و برعکس تبدیل میشوند. شکستهای خط Mac تبدیل نمیشوند.
در حالت Mac، شکستهای خط از Mac به Unix و برعکس تبدیل میشوند. شکستهای خط DOS دستنخورده باقی میمانند.
برای اجرا در حالت Mac، از گزینهٔ خط فرمان "-c mac" یا از دستورهای "mac2unix" یا "unix2mac" استفاده کنید.
حالتهای تبدیل (CONVERSION MODES)
- ascii
- این حالتِ
پیشفرض
تبدیل است.
این حالت
برای تبدیل
فایلهایی
با کدگذاری
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 (با مقادیر ۱۲۸ تا ۲۵۵) به یک نویسهٔ فاصلهٔ ۷ بیتی تبدیل میشوند.
- iso
- نویسهها
بین یک
مجموعه
نویسهٔ 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.
یونیکد (UNICODE)
کدگذاریها (Encodings)
کدگذاریهای یونیکد متفاوتی وجود دارند. در Unix و Linux فایلهای یونیکد معمولاً دارای کدگذاری UTF-8 هستند. در Windows فایلهای متنی یونیکد میتوانند دارای کدگذاری UTF-8، UTF-16 یا UTF-16 big-endian باشند، اما بیشتر در قالب UTF-16 کدگذاری میشوند.
تبدیل (Conversion)
فایلهای متنی یونیکد نیز مانند فایلهای متنی 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 مینویسند.
نامهای فایل یونیکد در ویندوز (Unicode file names on Windows)
دستور dos2unix دارای پشتیبانی اختیاری برای خواندن و نوشتن نامهای فایل یونیکد در Windows Command Prompt است. این بدان معناست که dos2unix میتواند فایلهایی را باز کند که نام آنها دارای نویسههایی خارج از کدپیج پیشفرض ANSI سیستم است. برای بررسی اینکه آیا dos2unix برای ویندوز با پشتیبانی از نام فایل یونیکد ساخته شده است یا خیر، دستور "dos2unix -V" را اجرا کنید.
مشکلاتی در نمایش نامهای فایل یونیکد در کنسول ویندوز وجود دارد. گزینههای "-D" و "--display-enc" را ببینید. ممکن است نام فایلها در کنسول بهنادرستی نمایش داده شوند، اما فایلها با نام صحیح نوشته خواهند شد.
مثالهای یونیکد (Unicode examples)
تبدیل از 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 یک استاندارد دولتی چین است. یک زیرمجموعهٔ الزامی از استاندارد 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) باشند.
مثالها (EXAMPLES)
خواندن ورودی از '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}
محلیسازی (LOCALIZATION)
- LANG
- زبان اصلی
با متغیر
محیطی 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
- با متغیر
محیطی 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
- با متغیر
محیطی DOS2UNIX_LOCALEDIR
میتوان
مقدار LOCALEDIR
تعیینشده
هنگام
کامپایل را
لغو و
بازنویسی
کرد. LOCALEDIR برای
یافتن
فایلهای
زبان به کار
میرود.
مقدار
پیشفرض در
گنو
"/usr/local/share/locale"
است. گزینهٔ
--version مقدار LOCALEDIR
مورداستفاده
را نمایش
خواهد داد.
مثال (شل POSIX):
export DOS2UNIX_LOCALEDIR=$HOME/share/locale
مقدار بازگشتی (RETURN VALUE)
در صورت موفقیت، صفر بازگردانده میشود. هنگام رخ دادن یک خطای سیستمی، آخرین خطای سیستم برگردانده خواهد شد. برای سایر خطاها، مقدار 1 بازگردانده میشود.
مقدار بازگشتی در حالت بیصدا (quiet mode) همیشه صفر است، مگر اینکه گزینههای نادرستی در خط فرمان به کار گرفته شده باشند.
استانداردها (STANDARDS)
https://en.wikipedia.org/wiki/Text_file
https://en.wikipedia.org/wiki/Carriage_return
نویسندگان (AUTHORS)
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
همچنین ببینید (SEE ALSO)
| 2026-08-27 | dos2unix |