[MUSIC] The hierarchical file system contains the following types of files. That's directories, regular files, named pipes or FIFO, character special files, and symbolic links. Users and programmers create directories, regular files, pipes and symbolic links. And a system programmer creates character special files. Let's take a look at these in turn. A directory is just a file, just like everything else, but it's a special kind of file. It consists of the name of a set of files and other information about them. Usually the files in the directory are related to each other in some way. And of course, a directory can have subdirectories. A z/OS UNIX user has a directory defined as his home directory. After log on, the home directory becomes the working directory. A regular file is a named unit of text or binary data information. A file can be, for example, a piece of C source code, a list of names or places, a printer formatted document, a string of numbers organized in a certain way an employee record, or a memo. A user or application must understand how to access and use the individual increments of data within the file. When the sticky bit is set on for a directory, only the super user or the owner can delete or remove a file in the directory. When the sticky bit is set on for an executable program, z/OS UNIX looks for that program in the user's step lib, the link pack area, or the linked list concatenation. This is done to reduce IO and improve performance of frequently used programs. A named pipe is also called a first in first out, or FIFO, special file. A FIFO is a file typically used to send data from one process to another, so that the receiving process reads the data in a first in first out order. Named pipes are created by the mkfifo function or by JCL. This results in a directory entry for the FIFO being created in the file system. Named pipes have to be opened and closed by all processes that are using them. Named pipes can be used between independent processes or by parent and by child processes. A character special file is located in the /dev directory in the root file system. It's a file that defines a number of things. There's a system console file, that's /dev/console or /dev/operlog. That's used to direct data to the system console or the operator log facility of z/OS. A null file, or /dev/null, is equivalent to a z/OS dummy file. /dev/zero is a character special device file, data written to this file is discarded. And the data read from this file is in the form of binary zeros. There's /dev/random, which is a device file that produces random bytes. A file descriptor file, for example, /dev/fdn, used to create a duplicate of an open descriptor. A terminal file /dev/ptypnnnn, and /dev/ttypnnnn, where nnnn is a number, used to represent a harbor device, such as a terminal or a workstation. These files are built in pairs, and the system selects a pair of these files to represent a connection between the user and the system. And finally, the terminal file, /dev/tty, which is the default controlling terminal for a process. A symbolic link is a file that contains the path name for another file, in essence, a reference to another file. It's somewhat comparable to a z/OS alias. A symbolic link can be created for a file or a directory. A symbolic link can refer to files in another file system. And the symbolic link is created by the symlink function. A symbolic link can be used when a file is moved to a new directory, and you want users to access the file with the old name. Also, it can be used to create an aliased short path name for a file that has a long path name. A hard link is a bit different from a symbolic link in that it's a new name for an existing file. A hard link is a new entry in a directory that has the same inode as the original data. A hard link can only point to a file in the same file system. It can't point to a directory or across file systems. And it's created with a link function. An external link is a variation of a symbolic link. An external link is a type of symbolic link which points to a z/OS dataset. It can only be used by the network file system, the exec family of functions, and to point to dynamic link libraries located in z/OS datasets. The -e option on the ln command creates an external link. They can also be created through the ISHELL. ISHELL user can browse data in a z/OS dataset through an external link. They can only create, delete, or look at the external links attributes. We've mentioned file name, symbolic link, hard link, and file descriptors, which are all used for referencing a file. So let's look at an overview of these file identifiers. A file can be identified by, of course, file and path name. Each file has a unique identification number called an inode number as well. The inode number refers to a physical file, and that's the where the data is stored in a particular location. The inode number is kept in the directory together with the file name. A symbolic link is a separate physical file with a pointer to another physical file. The two files have a different inode numbers, and they can reside in different file systems. A hard link is a new name for an existing file. And a hard link is a new entry in a directory with the same inode number as the existing file. Hard links can't point to data across file systems. And finally, a file descriptor is a number that represents an open file. It's used to access files in C language programs. When a program opens a file, the system returns a file descriptor for it. Okay, so that's file systems, and next up HFS and ZFS data sets. [MUSIC]