Windows and Unix do not use the same formats when storing text files: There are differences in how both ends-of-lines and ends-of-files are represented. For a full discussion on this topic, see Wikipedia. One of the more obvious symptoms is when a Unix text file is opened in Windows XP: the entire file appears in a single line. Alternatively, when a Windows file is opened under Unix, you may (depending on the editor) see extra ^M characters at the end of each line, or worse, you may run into unnecessary compilation errors or warnings.
Users of OS X should not have any problems in copying files between OS X and Unix.
Changing to the Unix Format
Once you copy a file to Windows, for example, by using either the P: drive or by using sftp, you must first convert the file using dos2unix.
For example, suppose you copied Single_list.h and Single_node.h from dos to unix. Once in Unix, you could enter:
{ecelinux:1} ls Single_list.h Single_node.h {ecelinux:2} dos2unix Single_list.h Single_list.h {ecelinux:3} dos2unix Single_node.h Single_node.h {ecelinux:4}
Note that the file name is repeated twice. The first is the input file, the second is the output file.
Alternatively, you could try:
{ecelinux:1} tcsh {ecelinux:2} foreach i (`ls *.h`) foreach? dos2unix $i $i foreach? end {ecelinux:3}
Moving to Windows
The equivalent command to convert a text file back into the Windows format is unix2dos.
Warning
Do not use:
{ecelinux:1} dos2unix *.h
To visualize what will happen, suppose that we had two files Single_list.h and Single_node.h. In that case, the above statement would be interpreted as
{ecelinux:1} dos2unix Single_list.h Single_node.h
and therefore, it will replace Single_node.h with the fixed version of Single_node.h.
Summary
We have discussed the utilities dos2unix and unix2dos. In a later topic, we will see how we can create our own tools which simplify some of the processes mentioned above.
Copyright ©2005-2008 by Douglas Wilhelm Harder. All rights reserved.