- [Instructor] Hi and welcome
to the third section of this course, file in, file out.
Unix treats every object in the operating system
as a file.
We can find files associated with every action performed
and can make use of them for different system
or process-related manipulations.
For example, the command terminal that we use
is associated with a device file.
We can write to the terminal
by writing to the corresponding device file
for that specific terminal.
Files take different forms
such as directories, regular files,
block devices, special character devices,
symbolic links, sockets, named pipes, and so on.
Filename, size, file type, modification time,
access time, change time, inode,
links associated and the final system that the file is on
are all attributes and properties that files can have.
This section will teach you how to handle operations
of properties related to files.
Now we will see the first video of section 3,
generating files of any size.
In this video,
we'll see how to create a look back file system
to by using general utilities.
For various reasons,
you may need to generate a file filled with random data.
It may be for creating a test file to perform tests
such as an application efficiency test
that uses large files as input,
or to test the splitting of files into many parts
or to create loop back file systems.
Loop back files are files that contain a file system itself,
and these files can be mounted similarly
to a physical device using the mount command.
It takes effort to create such files
by writing specific programs,
so we use general utilities.
The easiest way to create a large size file
with the given size is to use the dd command.
The dd command clones the given input
and writes an exact copy to the output.
Input can be standard in, a device file, a regular file,
or so on.
Output can be standard out, a device file,
a regular file, or so on.
An example of the dd command is as follows.
The preceding command will create a file called junk.data
which is exactly 1 megabyte in size.
Let's go through the parameters.
if stands for the input file.
Of stands for the out output file.
Bs stands for bytes for a block,
and count stands for the number of blocks of bs
specified to be copied.
Be careful while using the dd command.
It operates on a very low level with the devices.
If you make a mistake,
you might end up wiping your disk
or corrupting data otherwise.
So always double-check your dd command syntax,
especially your of equals parameter for correctness.
In the previous example, we are only creating a file
which is 1 megabyte in size by specifying bs as 1 MB
with a total of 1.
If bs was set to 2M, and count to 2,
then the total file size would be 4 megabyte.
We can use various units for block size, bs, as follows.
Append any of the following characters to the number
to specify the size in bytes.
Byte, 1B, c.
Word, 2B, w.
Block, 512B, b.
Kilobyte, 1024B, k.
Megabyte, 1024KB, M.
Gigabyte, 1024MB, G.
We can generate a file of any size using this.
Instead of MB, we can use any other unit notations,
such as the ones mentioned in the previous table.
/dev/zero is a character special device
which infinitely returns 0 byte / zero.
If the input parameter, if, is not specified,
it will read the input from std in by default.
Similarly, if the output parameter, of, is not specified,
it will use standard out as the default output sync.
The dd command can also be used
to measure the speed of memory operations
by transferring a large quantity of data
and checking the command output.
For example, 1038476 bytes, 1 megabyte,
copied 0.00702656 seconds,
149 megabits per second
as seen in the previous example.
Great, we successfully learned
about generating files of any size.
In the next video, we'll learn about the intersection
and set difference, A-B, on text files.