Linux命令学习总结:dos2unix - unix2dos

article/2025/8/22 13:25:07

命令简介:

dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。

而unix2dos则是和dos2unix互为孪生的一个命令,它是将Linux&Unix格式文件转换为Windows格式文件的命令。

命令语法:

dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]

unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]

命令参数:

此命令参数是Red Hat Enterprise Linux Server release 5.7下dos2unix命令参数,不同版本Linux的dos2nnix命令参数有可能不同。

参数

长参数

描叙

-h

 

显示命令dos2unix联机帮助信息。

-k

 

保持文件时间戳不变

-q

 

静默模式,不输出转换结果信息等

-V

 

显示命令版本信息

-c

 

转换模式

-o

 

在源文件转换,默认参数

-n

 

保留原本的旧档,将转换后的内容输出到新档案.默认都会直接在原来的文件上修改,

使用示例:

1: 查看dos2unix命令的帮助信息

[root@DB-Server myscript]# man dos2unix[root@DB-Server myscript]# dos2unix -h
dos2unix Copyright (c) 1994-1995 Benjamin LinCopyright (c) 1998      Bernd Johannes Wuebben (Version 3.0)Copyright (c) 1998      Christian Wurll (Version 3.1)
Usage: dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]-h --help        give this help-k --keepdate    keep output file date-q --quiet       quiet mode, suppress all warningsalways on in stdin->stdout mode-V --version     display version number-c --convmode    conversion modeconvmode         ASCII, 7bit, ISO, Mac, default to ASCII-l --newline     add additional newline in all but Mac convmode-o --oldfile     write to old filefile ...         files to convert in old file mode-n --newfile     write to new fileinfile           original file in new file modeoutfile          output file in new file mode

2: dos2unix filename 将Windows格式文本转换为Unix&Linux格式文件

   [root@DB-Server myscript]# cat -v test.sh . /home/oracle/.bash_profile^Mecho ' '^Mdate^Mecho ' '^M^Msqlplus test/test @/home/oracle/scripts/test.sql^M^Mecho ' '^Mdate^Mecho ' '^M[root@DB-Server myscript]# dos2unix test.sh dos2unix: converting file test.sh to UNIX format ...[root@DB-Server myscript]# cat -v test.sh . /home/oracle/.bash_profileecho ' 'dateecho ' 'sqlplus test/test @/home/oracle/scripts/test.sqlecho ' 'dateecho ' '

3: dos2unix 可以一次转换多个文件

dos2unix filename1 filename2 filename3

4: 默认情况下会在源文件上进行转换,如果需要保留源文件,那么可以使用参数-n dos2unix -n oldfilename newfilename

    [root@DB-Server myscript]# dos2unix -n dosfile linuxfiledos2unix: converting file dosfile to file linuxfile in UNIX format ...[root@DB-Server myscript]# cat -v dosfile it is a windows dos file^Myou should convert to unix&linux format^M[root@DB-Server myscript]# cat -v linuxfile it is a windows dos fileyou should convert to unix&linux format[root@DB-Server myscript]# 

clip_image001

5:保持文件时间戳不变

   [root@DB-Server myscript]# ls -lrt dosfile -rw-r--r-- 1 root root 67 Dec 26 11:46 dosfile[root@DB-Server myscript]# dos2unix dosfile dos2unix: converting file dosfile to UNIX format ...[root@DB-Server myscript]# ls -lrt dosfile -rw-r--r-- 1 root root 65 Dec 26 11:58 dosfile[root@DB-Server myscript]# dos2unix -k dosfile dos2unix: converting file dosfile to UNIX format ...[root@DB-Server myscript]# ls -lrt dosfile -rw-r--r-- 1 root root 65 Dec 26 11:58 dosfile

6:静默模式格式化文件

   [root@DB-Server myscript]# unix2dos -q dosfile [root@DB-Server myscript]# 

dos2unix的下载地址为http://sourceforge.net/projects/dos2unix/ ,可以从上面下载最新版本的dos2unix、unix2dos等命令工具以及相关文档,dos2unix的源码如下所示

/**  Name: dos2unix*  Documentation:*    Remove cr ('\x0d') characters from a file.**  The dos2unix package is distributed under FreeBSD style license.*  See also http://www.freebsd.org/copyright/freebsd-license.html*  --------**  Copyright (C) 2009-2015 Erwin Waterlander*  Copyright (C) 1998 Christian Wurll*  Copyright (C) 1998 Bernd Johannes Wuebben*  Copyright (C) 1994-1995 Benjamin Lin.*  All rights reserved.**  Redistribution and use in source and binary forms, with or without*  modification, are permitted provided that the following conditions*  are met:*  1. Redistributions of source code must retain the above copyright*     notice, this list of conditions and the following disclaimer.*  2. Redistributions in binary form must reproduce the above copyright*     notice in the documentation and/or other materials provided with*     the distribution.**  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY*  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE*  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR*  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE*  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR*  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT*  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR*  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE*  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN*  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**  == 1.0 == 1989.10.04 == John Birchfield (jb@koko.csustan.edu)*  == 1.1 == 1994.12.20 == Benjamin Lin (blin@socs.uts.edu.au)*     Cleaned up for Borland C/C++ 4.02*  == 1.2 == 1995.03.16 == Benjamin Lin (blin@socs.uts.edu.au)*     Modified to more conform to UNIX style.*  == 2.0 == 1995.03.19 == Benjamin Lin (blin@socs.uts.edu.au)*     Rewritten from scratch.*  == 2.1 == 1995.03.29 == Benjamin Lin (blin@socs.uts.edu.au)*     Conversion to SunOS charset implemented.*  == 2.2 == 1995.03.30 == Benjamin Lin (blin@socs.uts.edu.au)*     Fixed a bug in 2.1 where in new-file mode, if outfile already exists*     conversion can not be completed properly.** Added Mac text file translation, i.e. \r to \n conversion* Bernd Johannes Wuebben, wuebben@kde.org* Wed Feb  4 19:12:58 EST 1998** Added extra newline if ^M occurs* Christian Wurll, wurll@ira.uka.de* Thu Nov 19 1998**  See ChangeLog.txt for complete version history.**//* #define DEBUG 1 */#define __DOS2UNIX_C#include "common.h"#include "dos2unix.h"# if (defined(_WIN32) && !defined(__CYGWIN__))#include <windows.h>#endif#ifdef D2U_UNICODE#if !defined(__MSDOS__) && !defined(_WIN32) && !defined(__OS2__)  /* Unix, Cygwin */# include <langinfo.h>#endif#endifvoid PrintLicense(void){printf("%s", _("\Copyright (C) 2009-2015 Erwin Waterlander\n\Copyright (C) 1998      Christian Wurll (Version 3.1)\n\Copyright (C) 1998      Bernd Johannes Wuebben (Version 3.0)\n\Copyright (C) 1994-1995 Benjamin Lin\n\All rights reserved.\n\n"));PrintBSDLicense();}#ifdef D2U_UNICODEwint_t StripDelimiterW(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, wint_t CurChar, unsigned int *converted, const char *progname){wint_t TempNextChar;/* CurChar is always CR (x0d) *//* In normal dos2unix mode put nothing (skip CR). *//* Don't modify Mac files when in dos2unix mode. */if ( (TempNextChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) {if (d2u_ungetwc( TempNextChar, ipInF, ipFlag->bomtype) == WEOF) {  /* put back peek char */d2u_getc_error(ipFlag,progname);return WEOF;}if ( TempNextChar != 0x0a ) {if (d2u_putwc(CurChar, ipOutF, ipFlag, progname) == WEOF) {  /* Mac line, put CR */d2u_putwc_error(ipFlag,progname);return WEOF;}} else {(*converted)++;if (ipFlag->NewLine) {  /* add additional LF? */if (d2u_putwc(0x0a, ipOutF, ipFlag, progname) == WEOF) {d2u_putwc_error(ipFlag,progname);return WEOF;}}}} else {if (ferror(ipInF)) {d2u_getc_error(ipFlag,progname);return WEOF;}if ( CurChar == 0x0d ) {  /* EOF: last Mac line delimiter (CR)? */if (d2u_putwc(CurChar, ipOutF, ipFlag, progname) == WEOF) {d2u_putwc_error(ipFlag,progname);return WEOF;}}}return CurChar;}#endif/* CUR        NEXT0xd(CR)    0xa(LF)  => put LF if option -l was used0xd(CR)  ! 0xa(LF)  => put CR0xd(CR)    EOF      => put CR*/int StripDelimiter(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, int CurChar, unsigned int *converted, const char *progname){int TempNextChar;/* CurChar is always CR (x0d) *//* In normal dos2unix mode put nothing (skip CR). *//* Don't modify Mac files when in dos2unix mode. */if ( (TempNextChar = fgetc(ipInF)) != EOF) {if (ungetc( TempNextChar, ipInF ) == EOF) { /* put back peek char */d2u_getc_error(ipFlag,progname);return EOF;}if ( TempNextChar != '\x0a' ) {if (fputc( CurChar, ipOutF ) == EOF) { /* Mac line, put CR */d2u_putc_error(ipFlag,progname);return EOF;}} else {(*converted)++;if (ipFlag->NewLine) {  /* add additional LF? */if (fputc('\x0a', ipOutF) == EOF) {d2u_putc_error(ipFlag,progname);return EOF;}}}} else {if (ferror(ipInF)) {d2u_getc_error(ipFlag,progname);return EOF;}if ( CurChar == '\x0d' ) {  /* EOF: last Mac line delimiter (CR)? */if (fputc( CurChar, ipOutF ) == EOF) {d2u_putc_error(ipFlag,progname);return EOF;}}}return CurChar;}/* converts stream ipInF to UNIX format text and write to stream ipOutF* RetVal: 0  if success*         -1  otherwise*/#ifdef D2U_UNICODEint ConvertDosToUnixW(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, const char *progname){int RetVal = 0;wint_t TempChar;wint_t TempNextChar;unsigned int line_nr = 1;unsigned int converted = 0;ipFlag->status = 0;/* CR-LF -> LF *//* LF    -> LF, in case the input file is a Unix text file *//* CR    -> CR, in dos2unix mode (don't modify Mac file) *//* CR    -> LF, in Mac mode *//* \x0a = Newline/Line Feed (LF) *//* \x0d = Carriage Return (CR) */switch (ipFlag->FromToMode){case FROMTO_DOS2UNIX: /* dos2unix */while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) {  /* get character */if ((ipFlag->Force == 0) &&(TempChar < 32) &&(TempChar != 0x0a) &&  /* Not an LF */(TempChar != 0x0d) &&  /* Not a CR */(TempChar != 0x09) &&  /* Not a TAB */(TempChar != 0x0c)) {  /* Not a form feed */RetVal = -1;ipFlag->status |= BINARY_FILE ;if (ipFlag->verbose) {if ((ipFlag->stdio_mode) && (!ipFlag->error)) ipFlag->error = 1;d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Binary symbol 0x00%02X found at line %u\n"),TempChar, line_nr);}break;}if (TempChar != 0x0d) {if (TempChar == 0x0a) /* Count all DOS and Unix line breaks */++line_nr;if (d2u_putwc(TempChar, ipOutF, ipFlag, progname) == WEOF) {RetVal = -1;d2u_putwc_error(ipFlag,progname);break;}} else {if (StripDelimiterW( ipInF, ipOutF, ipFlag, TempChar, &converted, progname) == WEOF) {RetVal = -1;break;}}}if ((TempChar == WEOF) && ferror(ipInF)) {RetVal = -1;d2u_getc_error(ipFlag,progname);}break;case FROMTO_MAC2UNIX: /* mac2unix */while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) {if ((ipFlag->Force == 0) &&(TempChar < 32) &&(TempChar != 0x0a) &&  /* Not an LF */(TempChar != 0x0d) &&  /* Not a CR */(TempChar != 0x09) &&  /* Not a TAB */(TempChar != 0x0c)) {  /* Not a form feed */RetVal = -1;ipFlag->status |= BINARY_FILE ;if (ipFlag->verbose) {if ((ipFlag->stdio_mode) && (!ipFlag->error)) ipFlag->error = 1;d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Binary symbol 0x00%02X found at line %u\n"), TempChar, line_nr);}break;}if ((TempChar != 0x0d)) {if (TempChar == 0x0a) /* Count all DOS and Unix line breaks */++line_nr;if(d2u_putwc(TempChar, ipOutF, ipFlag, progname) == WEOF) {RetVal = -1;d2u_putwc_error(ipFlag,progname);break;}}else{/* TempChar is a CR */if ( (TempNextChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) {if (d2u_ungetwc( TempNextChar, ipInF, ipFlag->bomtype) == WEOF) {  /* put back peek char */d2u_getc_error(ipFlag,progname);RetVal = -1;break;}/* Don't touch this delimiter if it's a CR,LF pair. */if ( TempNextChar == 0x0a ) {if (d2u_putwc(0x0d, ipOutF, ipFlag, progname) == WEOF) { /* put CR, part of DOS CR-LF */d2u_putwc_error(ipFlag,progname);RetVal = -1;break;}continue;}}if (d2u_putwc(0x0a, ipOutF, ipFlag, progname) == WEOF) { /* MAC line end (CR). Put LF */RetVal = -1;d2u_putwc_error(ipFlag,progname);break;}converted++;line_nr++; /* Count all Mac line breaks */if (ipFlag->NewLine) {  /* add additional LF? */if (d2u_putwc(0x0a, ipOutF, ipFlag, progname) == WEOF) {RetVal = -1;d2u_putwc_error(ipFlag,progname);break;}}}}if ((TempChar == WEOF) && ferror(ipInF)) {RetVal = -1;d2u_getc_error(ipFlag,progname);}break;default: /* unknown FromToMode */;#if DEBUGd2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode);exit(1);#endif}if (ipFlag->status & UNICODE_CONVERSION_ERROR)ipFlag->line_nr = line_nr;if ((RetVal == 0) && (ipFlag->verbose > 1)) {d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Converted %u out of %u line breaks.\n"), converted, line_nr -1);}return RetVal;}#endif/* converts stream ipInF to UNIX format text and write to stream ipOutF* RetVal: 0  if success*         -1  otherwise*/int ConvertDosToUnix(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, const char *progname){int RetVal = 0;int TempChar;int TempNextChar;int *ConvTable;unsigned int line_nr = 1;unsigned int converted = 0;ipFlag->status = 0;switch (ipFlag->ConvMode) {case CONVMODE_ASCII: /* ascii */case CONVMODE_UTF16LE: /* Assume UTF-16LE, bomtype = FILE_UTF8 or GB18030 */case CONVMODE_UTF16BE: /* Assume UTF-16BE, bomtype = FILE_UTF8 or GB18030 */ConvTable = D2UAsciiTable;break;case CONVMODE_7BIT: /* 7bit */ConvTable = D2U7BitTable;break;case CONVMODE_437: /* iso */ConvTable = D2UIso437Table;break;case CONVMODE_850: /* iso */ConvTable = D2UIso850Table;break;case CONVMODE_860: /* iso */ConvTable = D2UIso860Table;break;case CONVMODE_863: /* iso */ConvTable = D2UIso863Table;break;case CONVMODE_865: /* iso */ConvTable = D2UIso865Table;break;case CONVMODE_1252: /* iso */ConvTable = D2UIso1252Table;break;default: /* unknown convmode */ipFlag->status |= WRONG_CODEPAGE ;return(-1);}/* Turn off ISO and 7-bit conversion for Unicode text files */if (ipFlag->bomtype > 0)ConvTable = D2UAsciiTable;if ((ipFlag->ConvMode > CONVMODE_7BIT) && (ipFlag->verbose)) { /* not ascii or 7bit */d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("using code page %d.\n"), ipFlag->ConvMode);}/* CR-LF -> LF *//* LF    -> LF, in case the input file is a Unix text file *//* CR    -> CR, in dos2unix mode (don't modify Mac file) *//* CR    -> LF, in Mac mode *//* \x0a = Newline/Line Feed (LF) *//* \x0d = Carriage Return (CR) */switch (ipFlag->FromToMode) {case FROMTO_DOS2UNIX: /* dos2unix */while ((TempChar = fgetc(ipInF)) != EOF) {  /* get character */if ((ipFlag->Force == 0) &&(TempChar < 32) &&(TempChar != '\x0a') &&  /* Not an LF */(TempChar != '\x0d') &&  /* Not a CR */(TempChar != '\x09') &&  /* Not a TAB */(TempChar != '\x0c')) {  /* Not a form feed */RetVal = -1;ipFlag->status |= BINARY_FILE ;if (ipFlag->verbose) {if ((ipFlag->stdio_mode) && (!ipFlag->error)) ipFlag->error = 1;d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Binary symbol 0x%02X found at line %u\n"),TempChar, line_nr);}break;}if (TempChar != '\x0d') {if (TempChar == '\x0a') /* Count all DOS and Unix line breaks */++line_nr;if (fputc(ConvTable[TempChar], ipOutF) == EOF) {RetVal = -1;d2u_putc_error(ipFlag,progname);break;}} else {if (StripDelimiter( ipInF, ipOutF, ipFlag, TempChar, &converted, progname) == EOF) {RetVal = -1;break;}}}if ((TempChar == EOF) && ferror(ipInF)) {RetVal = -1;d2u_getc_error(ipFlag,progname);}break;case FROMTO_MAC2UNIX: /* mac2unix */while ((TempChar = fgetc(ipInF)) != EOF) {if ((ipFlag->Force == 0) &&(TempChar < 32) &&(TempChar != '\x0a') &&  /* Not an LF */(TempChar != '\x0d') &&  /* Not a CR */(TempChar != '\x09') &&  /* Not a TAB */(TempChar != '\x0c')) {  /* Not a form feed */RetVal = -1;ipFlag->status |= BINARY_FILE ;if (ipFlag->verbose) {if ((ipFlag->stdio_mode) && (!ipFlag->error)) ipFlag->error = 1;d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Binary symbol 0x%02X found at line %u\n"),TempChar, line_nr);}break;}if ((TempChar != '\x0d')) {if (TempChar == '\x0a') /* Count all DOS and Unix line breaks */++line_nr;if(fputc(ConvTable[TempChar], ipOutF) == EOF) {RetVal = -1;d2u_putc_error(ipFlag,progname);break;}}else{/* TempChar is a CR */if ( (TempNextChar = fgetc(ipInF)) != EOF) {if (ungetc( TempNextChar, ipInF ) == EOF) {  /* put back peek char */d2u_getc_error(ipFlag,progname);RetVal = -1;break;}/* Don't touch this delimiter if it's a CR,LF pair. */if ( TempNextChar == '\x0a' ) {if (fputc('\x0d', ipOutF) == EOF) { /* put CR, part of DOS CR-LF */RetVal = -1;d2u_putc_error(ipFlag,progname);break;}continue;}}if (fputc('\x0a', ipOutF) == EOF) { /* MAC line end (CR). Put LF */RetVal = -1;d2u_putc_error(ipFlag,progname);break;}converted++;line_nr++; /* Count all Mac line breaks */if (ipFlag->NewLine) {  /* add additional LF? */if (fputc('\x0a', ipOutF) == EOF) {RetVal = -1;d2u_putc_error(ipFlag,progname);break;}}}}if ((TempChar == EOF) && ferror(ipInF)) {RetVal = -1;d2u_getc_error(ipFlag,progname);}break;default: /* unknown FromToMode */;#if DEBUGd2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode);exit(1);#endif}if ((RetVal == 0) && (ipFlag->verbose > 1)) {d2u_fprintf(stderr, "%s: ", progname);d2u_fprintf(stderr, _("Converted %u out of %u line breaks.\n"),converted, line_nr -1);}return RetVal;}int main (int argc, char *argv[]){/* variable declarations */char progname[9];CFlag *pFlag;char *ptr;char localedir[1024];# ifdef __MINGW64__int _dowildcard = -1; /* enable wildcard expansion for Win64 */# endifint  argc_new;char **argv_new;progname[8] = '\0';strcpy(progname,"dos2unix");#ifdef ENABLE_NLSptr = getenv("DOS2UNIX_LOCALEDIR");if (ptr == NULL)strcpy(localedir,LOCALEDIR);else {if (strlen(ptr) < sizeof(localedir))strcpy(localedir,ptr);else {d2u_fprintf(stderr,"%s: ",progname);d2u_ansi_fprintf(stderr, "%s", _("error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n"));strcpy(localedir,LOCALEDIR);}}#endif#if defined(ENABLE_NLS) || (defined(D2U_UNICODE) && !defined(__MSDOS__) && !defined(_WIN32) && !defined(__OS2__))/* setlocale() is also needed for nl_langinfo() */setlocale (LC_ALL, "");#endif#ifdef ENABLE_NLSbindtextdomain (PACKAGE, localedir);textdomain (PACKAGE);#endif/* variable initialisations */pFlag = (CFlag*)malloc(sizeof(CFlag));if (pFlag == NULL) {d2u_fprintf(stderr, "dos2unix:");d2u_ansi_fprintf(stderr, " %s\n", strerror(errno));return errno;}pFlag->FromToMode = FROMTO_DOS2UNIX;  /* default dos2unix */pFlag->keep_bom = 0;if ( ((ptr=strrchr(argv[0],'/')) == NULL) && ((ptr=strrchr(argv[0],'\\')) == NULL) )ptr = argv[0];elseptr++;if ((strcmpi("mac2unix", ptr) == 0) || (strcmpi("mac2unix.exe", ptr) == 0)) {pFlag->FromToMode = FROMTO_MAC2UNIX;strcpy(progname,"mac2unix");}#ifdef D2U_UNIFILE/* Get arguments in wide Unicode format in the Windows Command Prompt */wchar_t **wargv;char ***argv_glob;/* This does not support wildcard expansion (globbing) */wargv = CommandLineToArgvW(GetCommandLineW(), &argc);argv_glob = (char ***)malloc(sizeof(char***));if (argv_glob == NULL) {d2u_fprintf(stderr, "%s:", progname);d2u_ansi_fprintf(stderr, " %s\n", strerror(errno));return errno;}/* Glob the arguments and convert them to UTF-8 */argc_new = glob_warg(argc, wargv, argv_glob, pFlag, progname);argv_new = *argv_glob;#else  argc_new = argc;argv_new = argv;#endif#ifdef D2U_UNICODEreturn parse_options(argc_new, argv_new, pFlag, localedir, progname, PrintLicense, ConvertDosToUnix, ConvertDosToUnixW);#elsereturn parse_options(argc_new, argv_new, pFlag, localedir, progname, PrintLicense, ConvertDosToUnix);#endif}


http://chatgpt.dhexx.cn/article/WGjLOa67.shtml

相关文章

mac vim 配色方案

如果没有代码高亮的话&#xff0c;用vim写代码确实不爽&#xff0c;于是&#xff0c;笔者今天花了一个上午的时间把mac下vim 的所有配色试了个遍&#xff0c; 下面给大家展示一下mac下所有vim的配色方案的样式。 darkblue delek elflord koehler murphy p…

MacVim配置参考

1、http://www.oschina.net/question/132421_18650?sorttime&p1 vim是一个很强的神器&#xff0c;对于我只用到其中的一小部分内容&#xff0c;接下来是我打造 php IDE的全过程&#xff0c;希望有兄弟能指点我其中的不足&#xff0c;要学习的兄弟能跟我一起努力学习。 第一…

mac vim 安装 YouCompleteMe 插件自动补全

前言 笔者常用vim进行c/c/go开发&#xff0c;虽说vim也有自带自动补全&#xff08;controln&#xff0c;controlp&#xff09;&#xff0c;不过操作上还是比较麻烦&#xff0c;笔者希望可以实现&#xff0c;输入部分单词可以直接弹出下拉框提示所有可能的单词。网上一搜&#…

安装Macvim

前言 本文记录了一次安装Macvim遇到的问题和解决办法&#xff0c;并提到了如何从终端启动Macvim。 brew install macvim 成功&#xff0c;但启动报错 今天重装了Mac系统(10.11.5 El Capitan&#xff0c;你问Mac居然也重装系统&#xff1f;我只是想要一块干净的硬盘。). 折腾…

命令行使用MacVim

命令行使用MacVim 配置环境变量 vim ~/.zshrc 增加以面一行 alias gvim/Applications/MacVim.app/Contents/MacOS/Vim -g2021年8月30日补充 评论区有小伙伴有疑问&#xff0c;截图说明一下。 动画演示 总结 我个人还是喜欢直接使用命令行中的vim&#xff0c;这样更纯粹…

mac vim没有颜色 vim着色

mac选手使用vim的时候发现&#xff0c;代码全是白色的&#xff01;我的天&#xff0c;我用的是vi吗&#xff1f; 但是编辑/usr/share/vim/vimrc中会发现系统不让用户改因为没有权限&#xff0c;这样可以直接在当前用户下实现同样的功能。步骤如下&#xff1a; 新建vimrc文件 …

MacOS - MacVim安装

1.应用场景 主要用于学习使用MacVim进行编程&#xff0c;尤其是在服务端编程发挥作用&#xff5e; 2.学习/操作 1.文档阅读 01&#xff5c;各平台下的 Vim 安装方法&#xff1a;上路前准备好你的宝马-极客时间 Releases macvim-dev/macvim GitHub https://github.com/macv…

2022 最新 Mac Vim 开发环境的部署与配置

2022 最新 Mac Vim 开发环境的部署与配置 效果图 Vim 插件简介 插件名描述pope/vim-fugitiveVim 编辑器中的 Git 包装器插件&#xff0c;它可以让我们在 Vim 编辑器中完成 Git 操作scrooloose/nerdtree用来提供一个导航目录的侧边栏ryanoasis/vim-devicons在 NERDTree 中显示…

《设计模式之禅》中23种设计模式demo汇总

《设计模式之禅》中23种设计模式demo汇总 Git地址&#xff1a; https://github.com/baozi-little/designPatterns 23种设计模式如下图&#xff1a; 项目架构&#xff1a;JDK1.8 springboot 每个设计模式都有对应的单元测试&#xff0c;可直接运行&#xff0c;项目结构如下&a…

设计模式之禅--思维导图

原图ProcessOn里搜索&#xff1a;设计模式之禅

设计模式之禅之结构类PK【装饰模式VS适配器模式】

设计模式之禅PK之结构类 结构类设计模式 结构类模式&#xff1a; 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 相同点&#xff1a;他们都是通过组合类或对象产生更大的结构以适应更高的层次的逻辑需求 【装饰模式】VS【适配器模式】 装饰模式和适配器模…

设计模式之禅——观察者模式

观察者模式是一种比较常见的设计模式&#xff0c;在安卓源码中也应用得很多&#xff0c;如baseAdapter、相关触发器机制。 首先从一个情景入手&#xff0c;战国时期&#xff0c;李斯&#xff08;观察者&#xff09;作为秦国宰相希望监视&#xff08;观察&#xff09;韩非子&…

《设计模式之禅》-策略模式

策略模式 定义 定义一组算法&#xff0c;将每个算法都封装起来&#xff0c;并且使它们之间可以互换 策略模式有三个角色 1.Strategy 抽象策略角色 策略&#xff0c;算法家族的抽象&#xff0c;通常为接口&#xff0c;定义每个策略或算法必须具有的方法和属性。 2.Concrete…

《设计模式之禅》-原型模式

原型模式属于比较简单的设计模式&#xff0c;所以使用次数也非常的多 定义&#xff1a; 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 原型模式的通用代码&#xff1a; public class PrototypeClass implements Cloneable {Overridepublic Pr…

设计模式之禅——门面模式

门面模式【Facade Pattern】也叫外观模式&#xff0c;是一种比较常用的封装模式&#xff0c;其定义如下&#xff1a; 【要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口&#xff0c;使得子系统更容易使用】 门面模式注重“统一…

设计模式之禅读后感

过早优化是万恶之源——Unix编程思想 让正确的程序更快&#xff0c;要比让快速的程序正确容易得多。 文章目录 前言六大设计原则*单一职责原则**里氏替换原则**依赖倒置原则**接口隔离原则**迪米特法则**开闭原则* 二十三种设计模式创建型模式*单例模式**工厂方法模式**抽象工厂…

设计模式之禅笔记

设计模式PK 创建类模式PK 工厂方法模式 VS 建造者模式 工厂方法模式注重的是整体对象的创建方法。建造者模式注重的是部件构建的过程。 工厂方法模式的对象粒度较粗&#xff0c;建造者模式的产品对象粒度较细。 抽象工厂模式 VS 建造者模式 抽象工厂模式也是注重产品的整…

《设计模式之禅》(第2版)

第一部分 大旗不挥 谁敢冲锋 —— 6大设计原则全新解读 第1章 单一职责原则 单一职责原则&#xff0c;Single Responsibility Principle&#xff0c;简称SRP&#xff0c;有且只有一个原因引起类/接口的变更&#xff1b;即一个接口/类只有一个职责&#xff0c;只负责一件事…

设计模式之禅《一》 大旗不挥,谁敢冲锋 ——6大设计原则

设计模式之禅《一》大旗不挥&#xff0c;谁敢冲锋 ——6大设计原则 《一》 六大原则 一&#xff1a;单一职责原则 1、单一职责原则最难划分的就是职责 2、有两个可以变化的原因放到了一个接口中&#xff0c;这就为以后的变化带来了风险。 3、对于单一职责原则&#xff0c;…

设计模式之禅(六大设计原则)

1.单一职责原则(Single Responsibility Principle) 也就是职责划分要明确&#xff0c;单一职责原则提出了一个编写程序的标准&#xff0c;用“职责”或者“变化原因”来衡量接口或者类设计的是否优良&#xff0c;但是“职责”或者“变化原因”都是不可度量的&#xff0c;因项目…