# 4.1 Reading Text Files Since Linux is basically a large collection of text files. Reading and manipulating them is an important skill for managing your Linux system. We will go through the most used tools to read text files. ### more The ```more``` command is used to view the text files in the command prompt, displaying one screen at a time in case the file is large (for example log files). The ```more``` command also allows the user to scroll up and down through the page. The syntax, along with options and command, is as follows: ```bash more [-options] [-num] [+/pattern] [+linenum] [file_name] [-options]: any option that you want to use in order to change the way the file is displayed. Choose any one from the followings: (-d, -l, -f, -p, -c, -s, -u) [-num]: type the number of lines that you want to display per screen. [+/pattern]: replace the pattern with any string that you want to find in the text file. [+linenum]: use the line number from where you want to start displaying the text content. [file_name]: name of the file containing the text that you want to display on the screen. ``` Another application of ```more``` is to use it with some other command after a pipe. When the output is large, we can use the ```more``` command to see output one by one. Basic Controls: - Enter key: to scroll down line by line. - Space bar: to go to the next page. - b key: to go to back one page. Let's try to use the ```more``` command a bit, ```bash more /media/onthegenealogyofmorality ``` You should now see the contents of the file. Press ```space``` to go down. Press ```b``` to go up. Press ```enter``` to scroll line by line. Press ```q``` to quit. ### less The ```less``` command is linux utility, which can be used to read contents of text file one page(one screen) per time. It has faster access, because if the file is large, it doesn’t access the complete file, but it will only access the file page by page. For example, if it’s a large file and you are reading it using any text editor, then the complete file will be loaded to main memory. The ```less``` command doesn’t load the entire file, but it will load the file bit by bit, which makes it faster. The ```less``` help is extensive to say the least, you can check the ```less``` help yourself by typing.
```less --help``` The most used switches are: ```bash -E : causes less to automatically exit the first time it reaches end of file -f : forces non-regular file to open. -F : causes less to exit if entire file can be displayed on first screen -g : highlight the string which was found by last search command -G : suppresses all highlighting of strings found by search commands -i : cause searches to ignore case -n : suppresses line numbers -p pattern : it tells less to start at the first occurrence of pattern in the file -s : causes consecutive blank lines to be squeezed into a single blank line. ``` Let's try the ```less``` command a bit. ```bash less /usr/share/vim/vim80/doc/message.txt ``` You can navigate the document now with the following buttons. ``` / – search for a pattern which will take you to the next occurrence. n – for next match in forward N – for previous match in backward ? – search for a pattern which will take you to the previous occurrence. n – for next match in backward direction N – for previous match in forward direction CTRL+F – forward one window CTRL+B – backward one window CTRL+D – forward half window CTRL+U – backward half window j – navigate forward by one line k – navigate backward by one line G – go to the end of file g – go to the start of file q or ZZ – exit the less pager ``` ### cat Cat, other then an animal means, concatenate files and print on the standard output. We have used this command before; it should explain itself.
It takes a file and puts it in stdout[1]. After this, you can do manipulations like: ```cat /var/log/secure | grep rhcsa```. With this you can check the log's when the user rhcsa has logged in. We will also see failed login attempts in the /var/log/secure. ### head Shows the top of the file: ```head /media/onthegenealogyofmorality``` Now let's say we only want the first 2 lines: ```head -n 2 /media/onthegenealogyofmorality``` ### tail Shows the bottom of the file: ```tail /media/onthegenealogyofmorality``` Now let's say we only want the last 2 lines: ```tail -n 2 /media/onthegenealogyofmorality``` ### nl cat, but with line numbers: ```nl /media/onthegenealogyofmorality``` You can try this command to check it out.