1.19. When Is a File Not a File?
Unix differs from most operating systems in that it is file oriented.
The designers of Unix decided that they could make the operating
system much simpler if they treated everything as if it were a file.
As far as Unix is concerned, disk drives, terminals, modems, network
connections, etc. are all just files. Recent versions of Unix (such
as Linux) have gone further: files can be
pipes (FIFOs) (Section 43.11) and processes are
files (Section 24.9). Like waves and
particles in quantum physics, the boundary between files and the rest
of the world can be extremely fine: whether you consider a disk a
piece of hardware or a special kind of file depends primarily on your
perspective and what you want to do with it.
Therefore, to
understand Unix, you have to understand what files are. A file is
nothing more than a stream of bytes -- that is, an arbitrarily
long string of bytes with no special structure. There are no special
file structures and only a few special file types (for keeping track
of disks and a few other purposes). The structure of any file is
defined by the programs that use it, not by the Unix operating
system.[3] You may
hear users talk about file headers and so on, but these are defined
by the applications that use the files, not by the Unix filesystem
itself.
Unix programs do abide by one
convention, however. Text files use a single newline character
(linefeed) between lines of text, rather than the carriage
return-linefeed combination used in Microsoft Windows or the carriage
returns used in the Macintosh. This difference may cause problems
when you bring files from other operating systems over to Unix.
Windows files will often be littered with carriage returns (Ctrl-M),
which are necessary for that operating system but superfluous for
Unix. These carriage returns will look ugly if you try to edit or
print the file and may confuse some Unix programs. Mac text files
will appear to be one long line with no breaks. Of course, you can
use Unix utilities to convert Mac and Windows files for Unix.
-- ML
 |  |  | 1.18. The Superuser |  | 1.20. Scripting |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|
|