- Explanation of “Everything is a File” and Types of Files in Linux
- What are the different types of files in Linux?
- Ordinary/Regular Files
- Special Files
- Directories
- Summary
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- How to Find Files in Linux Using the Command Line
- Find a File in Linux by Name or Extension
- Using Common find Commands and Syntax to Find a File in Linux
- Basic Examples
- Options and Optimization for find
- Find a File in Linux by Modification Time
- Use grep to Find a File in Linux Based on Content
- How to Find and Process a File in Linux
- How to Find and Delete a File in Linux
- More Information
- 5 Commands to View the Content of a File in Linux Command Line
- 5 commands to view files in Linux
- 1. Cat
- 3. Less
- 4. Head
- 5. Tail
- Bonus: Strings command
Explanation of “Everything is a File” and Types of Files in Linux
If you are new to Linux, or have used it for a few months, then you must have heard or read statements such as “In Linux, everything is a File”.
Everything is a File and Types of Files in Linux
That is in fact true although it is just a generalization concept, in Unix and its derivatives such as Linux, everything is considered as a file. If something is not a file, then it must be running as a process on the system.
To understand this, take for example the amount of space on your root (/) directory is always consumed by different types of Linux files. When you create a file or transfer a file to your system, it occupies some space on the physical disk and it is considered to be in a specific format (file type).
And also the Linux system does not differentiate between files and directories, but directories do one important job, that is store other files in groups in a hierarchy for easy location. All your hardware components are represented as files and the system communicates with them using these files.
The idea is an important description of a great property of Linux, where input/output resources such as your documents, directories (folders in Mac OS X and Windows), keyboard, monitor, hard-drives, removable media, printers, modems, virtual terminals and also inter-process and network communication are streams of bytes defined by file system space.
A notable advantage of everything being a file is that the same set of Linux tools, utilities and APIs can be used on the above input/output resources.
Although everything in Linux is a file, there are certain special files that are more than just a file for example sockets and named pipes.
What are the different types of files in Linux?
In Linux there are basically three types of files:
- Ordinary/Regular files
- Special files
- Directories
Ordinary/Regular Files
These are files data contain text, data or program instructions and they are the most common type of files you can expect to find on a Linux system and they include:
- Readable files
- Binary files
- Image files
- Compressed files and so on.
Special Files
Special files include the following:
Block files : These are device files that provide buffered access to system hardware components. They provide a method of communication with device drivers through the file system.
One important aspect about block files is that they can transfer a large block of data and information at a given time.
Listing block files sockets in a directory:
Sample Output
Character files : These are also device files that provide unbuffered serial access to system hardware components. They work by providing a way of communication with devices by transferring data one character at a time.
Listing character files sockets in a directory:
Sample Output
Symbolic link files : A symbolic link is a reference to another file on the system. Therefore, symbolic link files are files that point to other files, and they can either be directories or regular files.
Listing symbolic link sockets in a directory:
Sample Output
You can make symbolic links using the ln utility in Linux as in the example below.
In the above example, I created a file called file1.txt in /tmp directory, then created the symbolic link, /home/tecmint/file1.txt to point to /tmp/file1.txt.
Pipes or Named pipes : These are files that allow inter-process communication by connecting the output of one process to the input of another.
A named pipe is actually a file that is used by two process to communicate with each and it acts as a Linux pipe.
Listing pipes sockets in a directory:
Sample Output
You can use the mkfifo utility to create a named pipe in Linux as follows.
In the above example, I created a named pipe called pipe1 , then I passed some data to it using the echo command, after that the shell became un-interactive while processing the input.
Then I opened another shell and run the another command to print out what was passed to pipe.
Socket files : These are files that provide a means of inter-process communication, but they can transfer data and information between process running on different environments.
This means that sockets provide data and information transfer between process running on different machines on a network.
An example to show the work of sockets would be a web browser making a connection to a web server.
Sample Output
This is an example of a socket create in C by using the socket() system call.
- AF_INET is the address family(IPv4)
- SOCK_STREAM is the type (connection is TCP protocol oriented)
- 0 is the protocol(IP Protocol)
To refer to the socket file, use the socket_desc , which is the same as the file descriptor, and use read() and write() system calls to read and write from the socket respectively.
Directories
These are special files that store both ordinary and other special files and they are organized on the Linux file system in a hierarchy starting from the root (/) directory.
Listing sockets in a directory:
Sample Output
You can make a directory using the mkdir command.
Summary
You should now be having a clear understanding of why everything in Linux is a file and the different types of files that can exit on your Linux system.
You can add more to this by reading more about the individual file types and they are created. I hope this find this guide helpful and for any questions and additional information that you would love to share, please leave a comment and we shall discuss more.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Источник
How to Find Files in Linux Using the Command Line
When you have to find a file in Linux, it’s sometimes not as easy as finding a file in another operating system. This is especially true if you are running Linux without a graphical user interface and need to rely on the command line. This article covers the basics of how to find a file in Linux using the CLI. The find command in Linux is used to find a file (or files) by recursively filtering objects in the file system based on a simple conditional mechanism. You can use the find command to search for a file or directory on your file system. By using the -exec flag ( find -exec ), files can be found and immediately processed within the same command.
Find a File in Linux by Name or Extension
Use find from the command line to locate a specific file by name or extension. The following example searches for *.err files in the /home/username/ directory and all sub-directories:
Using Common find Commands and Syntax to Find a File in Linux
find expressions take the following form:
- The options attribute will control the find process’s behavior and optimization method.
- The starting/path attribute will define the top-level directory where find begins filtering.
- The expression attribute controls the tests that search the directory hierarchy to produce output.
Consider the following example command:
This command enables the maximum optimization level (-O3) and allows find to follow symbolic links ( -L ). find searches the entire directory tree beneath /var/www/ for files that end with .html .
Basic Examples
Command | Description |
---|---|
find . -name testfile.txt | Find a file called testfile.txt in current and sub-directories. |
find /home -name *.jpg | Find all .jpg files in the /home and sub-directories. |
find . -type f -empty | Find an empty file within the current directory. |
find /home -user exampleuser -mtime -7 -iname «.db» | Find all .db files (ignoring text case) modified in the last 7 days by a user named exampleuser. |
Options and Optimization for find
The default configuration for find will ignore symbolic links (shortcut files). If you want find to follow and return symbolic links, you can add the -L option to the command, as shown in the example above.
find optimizes its filtering strategy to increase performance. Three user-selectable optimization levels are specified as -O1 , -O2 , and -O3 . The -O1 optimization is the default and forces find to filter based on filename before running all other tests.
Optimization at the -O2 level prioritizes file name filters, as in -O1 , and then runs all file-type filtering before proceeding with other more resource-intensive conditions. Level -O3 optimization allows find to perform the most severe optimization and reorders all tests based on their relative expense and the likelihood of their success.
Command | Description |
---|---|
-O1 | (Default) filter based on file name first. |
-O2 | File name first, then file type. |
-O3 | Allow find to automatically re-order the search based on efficient use of resources and likelihood of success. |
-maxdepth X | Search current directory as well as all sub-directories X levels deep. |
-iname | Search without regard for text case. |
-not | Return only results that do not match the test case. |
-type f | Search for files. |
-type d | Search for directories. |
Find a File in Linux by Modification Time
The find command contains the ability to filter a directory hierarchy based on when the file was last modified:
The first command returns a list of all files in the entire file system that end with the characters conf and modified in the last seven days. The second command filters exampleuser user’s home directory for files with names that end with the characters conf and modified in the previous three days.
Use grep to Find a File in Linux Based on Content
The find command can only filter the directory hierarchy based on a file’s name and metadata. If you need to search based on the file’s content, use a tool like grep . Consider the following example:
This searches every object in the current directory hierarchy ( . ) that is a file ( -type f ) and then runs the command grep «example» for every file that satisfies the conditions. The files that match are printed on the screen ( -print ). The curly braces ( <> ) are a placeholder for the find match results. The <> are enclosed in single quotes ( ‘ ) to avoid handing grep a malformed file name. The -exec command is terminated with a semicolon ( ; ), which should be escaped ( \; ) to avoid interpretation by the shell.
How to Find and Process a File in Linux
The -exec option runs commands against every object that matches the find expression. Consider the following example:
This filters every object in the current hierarchy ( . ) for files named rc.conf and runs the chmod o+r command to modify the find results’ file permissions.
The commands run with the -exec are executed in the find process’s root directory. Use -execdir to perform the specified command in the directory where the match resides. This may alleviate security concerns and produce a more desirable performance for some operations.
The -exec or -execdir options run without further prompts. If you prefer to be prompted before action is taken, replace -exec with -ok or -execdir with -okdir .
How to Find and Delete a File in Linux
To delete the files that end up matching your search, you can add -delete at the end of the expression. Do this only when you are positive the results will only match the files you wish to delete.
In the following example, find locates all files in the hierarchy starting at the current directory and fully recursing into the directory tree. In this example, find will delete all files that end with the characters .err :
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on Monday, October 25, 2010.
Источник
5 Commands to View the Content of a File in Linux Command Line
If you are new to Linux and you are confined to a terminal, you might wonder how to view a file in the command line.
Reading a file in Linux terminal is not the same as opening file in Notepad. Since you are in the command line mode, you should use commands to read file in Linux.
Don’t worry. It’s not at all complicated to display a file in Linux. It’s easy as well essential that you learn how to read files in the line.
Here are five commands that let you view the content of a file in Linux terminal.
5 commands to view files in Linux
Before you how to view a file in Unix like systems, let me clarify that when I am referring to text files here. There are different tools and commands if you want to read binary files.
1. Cat
This is the simplest and perhaps the most popular command to view a file in Linux.
Cat simply prints the content of the file to standard display i.e. your screen. It cannot be simpler than this, can it?
cat displays the content of the file on the screen
Cat becomes a powerful command when used with its options. I recommend reading this detailed tutorial on using cat command.
The problem with cat command is that it displays the text on the screen. Imagine if you use cat command with a file that has 2000 lines. Your entire screen will be flooded with the 200 lines and that’s not the ideal situation.
So, what do you do in such a case? Use less command in Linux (explained later).
The nl command is almost like the cat command. The only difference is that it prepends line numbers while displaying the text in the terminal.
nl command displays text with line numbers
There are a few options with nl command that allows you to control the numbering. You can check its man page for more details.
3. Less
Less command views the file one page at a time. The best thing is that you exit less (by pressing q), there are no lines displayed on the screen. Your terminal remains clean and pristine.
I strongly recommend learning a few options of the Less command so that you can use it more effectively.
There is also more command which was used in olden days but less command has more friendly features. This is why you might come across the humorous term ‘less is more’.
4. Head
Head command is another way of viewing text file but with a slight difference. The head command displays the first 10 lines of a text file by default.
You can change this behavior by using options with head command but the fundamental principle remains the same: head command starts operating from the head (beginning) of the file.
5. Tail
Tail command in Linux is similar and yet opposite to the head command. While head command displays file from the beginning, the tail command displays file from the end.
By default, tail command displays the last 10 lines of a file.
Head and Tail commands can be combined to display selected lines from a file. You can also use tail command to see the changes made to a file in real time.
Bonus: Strings command
Okay! I promised to show only the commands for viewing text file. And this one deals with both text and binary files.
Strings command displays the readable text from a binary file.
No, it doesn’t convert binary files into text files. If the binary file consists of actual readable text, strings command displays those text on your screen. You can use the file command to find the type of a file in Linux.
Conclusion
Some Linux users use Vim to view the text file but I think that’s overkill. My favorite command to open a file in Linux is the less command. It leaves the screen clear and has several options that makes viewing text file a lot easier.
Since you now know ways to view files, maybe you would be interested in knowing how to edit text files in Linux. Cut and Paste are two such commands that you can use for editing text in Linux terminal. You may also read about creating files in Linux command line.
Источник