There are two different types of files on a file system. --> Directories (folders) --> Everything Else If a file contains bytes, it is structurally the same as any other file containing bytes. A Word document, an executable program, a text file, an SQL database, a video file, an image. To the operating system, these are all the same types of file. So, if these are all the same, why do we have file extensions in Windows (.txt or .docx or .exe)? So that the operating system knows which program to use. Windows knows which program to run by looking at the file extension. Mac knows which programs to run because a Mac file has two components, the data and the header. The data contains the contents of the file. The header contains system information, such as what program should be used to run this. Linux doesn't know, doesn't care. so make sure you run the correct program with your file. However, it's not completely fair to combine every single non-directory file into the same category. One example would be peripherals. A printer attached to your system might have a filename attached to it. You can "write" to a printer using normal write commands, but it isn't really storing data. Another example would be generics. A generic file isn't really attached to anything specific but depends on the program running. On Linux, writing to /dev/tty always writes to standard output. Reading from /dev/tty reads from standard input. The most famous generic file on Linux /dev/null. Anything written to /dev/null is ignored. Any read from /dev/null returns zero bytes read (aka "end of file"). (The corresponding generic in Windows is called NUL). rec.arts.sf.tv.quantum-leap. A common phrase on the newsgroup. "Don't like what I'm saying? Please direct all feedback to /dev/null." Another form of non-directory, non-data file is a link. There are hard links and soft or symbolic links. ("S" is used an abbreviation for this kind of link, and different people interpret the "s" as standing for different things.) A link is a way to connect more than one filename to the exact same file. Like two pointers to the same piece of data. If you use one filename to change the data, the other filename also points to that changed data.