paint-brush
How I Inspect & Manipulate Files from the Command Lineโ€‚by@dolamu-asipa
1,160 reads
1,160 reads

How I Inspect & Manipulate Files from the Command Line

by Dolamu AsipaNovember 9th, 2021
Read on Terminal Reader
Read this story w/o Javascript

Too Long; Didn't Read

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - How I Inspect & Manipulate Files from the Command Line
Dolamu Asipa HackerNoon profile picture

I found the Linux command line quite intimidating when I first started learning to code. It seemed to require extensive and comprehensive knowledge and understanding of commands and keyboard shortcuts. However, as I read more about it and practiced what I learned, I realized that it isn't as scary as it seemed; that It only requires a lot of constant practice. I also discovered that others feel the same way, which made me realize that I wasn't alone.


The other thing I discovered during this period is that we are all beginners and sharing is helpful, since no one is an island. So I decided to share my experience with others starting out as well. As we all know, learning is never-ending. There will always be new tools and new commands to learn, especially when you're a beginner. The following tips have helped me navigate through files and directories on the command line. ๐Ÿ‘‡


Manipulating Files and Directories

  • To print a string of characters to your screen, use the echo command by typing ๐Ÿ‘‰ echo <string> e.g. echo Hello world. To print without a newline being inserted, use the -n option as follows; type ๐Ÿ‘‰ echo -n <string>. To print a string of characters to a file without using a text editor, use the redirect operator >. ๐Ÿ‘‰ echo "string" > filename e.g. echo "this prints to file" > index.html.


  • To add a new string of characters to the next line of the same file, use the append operator >>. ๐Ÿ‘‰ echo "string" >> filename. To dump the contents of a file to your screen, use the cat command: ๐Ÿ‘‰ cat <filename> e.g cat book.txt. To facilitate the comparison of files that are similar but not identical, use the diff command: ๐Ÿ‘‰ diff <filename1><filename2>.


  • Note that when there is no difference between two files, diff simply outputs nothing. To dump the contents of a file (or to combine the contents of multiple files) into a separate one, direct the output of the cat command to the new file using the redirect > operator:

    ๐Ÿ‘‰ cat filename(s) > newfile.


  • To abort the current task and regain user-control of the terminal, press ๐Ÿ‘‰ Ctrl-C. If this command fails, hit the Esc key. To be able to move quickly within the command line, press ๐Ÿ‘‰ Ctrl-A to get to the beginning of the line; Ctrl-E to get to the end of the line and; Ctrl-U to clear the entire line and start over.


  • To learn more about a command: ๐Ÿ‘‰ man <command name> e.g man cat.

    Note that man pages use the same interface as the less command so you can navigate through both using the same key shortcuts. To open a new terminal tab (or window): ๐Ÿ‘‰ Ctrl+Shift+T and Ctrl+Shift+N respectively. To clear your screen: ๐Ÿ‘‰ clear or Ctrl-L. To exit a terminal window (or tab): ๐Ÿ‘‰ Ctrl-D or Ctrl+Shift+W or type ๐Ÿ‘‰ exit.


  • To run the previous command exactly as written, use the exclamation point ! (pronounced bang) and type !!. Another way to repeat previous commands is by typing ! followed by a character (or a number of characters), which runs the last command that started with those characters. For example, to run the last ls command issued, type ๐Ÿ‘‰ ! l. Another powerful technique is to enter ๐Ÿ‘‰ Ctrl+R. This allows you to search interactively through your previous commands, and then optionally edit the result before executing.


  • To create a hard link to a file; use the ln command by first typing the name of the file you want to link to (i.e the source file), followed by the name of the linked file you want to create (i.e the target) for example ๐Ÿ‘‰ ln letter.doc book.doc. To force a link (say, to an existing file) (or to execute a command without having to confirm it) use the -f flag ln -f letter.doc index.html.


    The default type of link that gets created when using the ln command is the hard link. Hard links create an identical copy of the linked file on disk, that gets updated automatically as the source file is updated. However, this type of link does not work for directories.


  • To create a link to a directory, use the -s flag to create a symbolic link. This flag can also be used for linking to files as well, not just directories for example: ln -s letter.doc index.html. Symbolic links can also link to files or directories on other file systems. File systems refer to directories and files.


Inspecting Files and Directories

  • To open a file or a directory or access a URL, type ๐Ÿ‘‰ xdg-open <filename>/<directory>/<URL>. To download a file from the internet, use the curl utility which allows you to interact with URLs on the command line; ๐Ÿ‘‰ curl -OL <URL>. To fetch the HTTP header of a site, type ๐Ÿ‘‰ curl -I <URL>.


  • To view the beginning and end of a file, use the head and tail commands by typing

    ๐Ÿ‘‰ head <filename> and tail <filename> respectively. They show the first and last 10 lines of the file, as applicable. To print the first n lines of a file (instead of the first 10):

    ๐Ÿ‘‰ head -n <number> <filename>.


  • To count the number of lines in a file, type ๐Ÿ‘‰ wc <filename>. The output shows three separate figures, indicating the number of lines, words, and bytes in the file. To view a file that is actively changing, type ๐Ÿ‘‰ tail -f <filename>. This command is mostly executed when monitoring files used to log the activity of web servers for instance, in a practice known as 'tailing the log file'.


  • To easily navigate through the contents of a large file, use ๐Ÿ‘‰ the less command for example type ๐Ÿ‘‰ less <filename>. While in less mode; press the spacebar or Ctrl+F to move forward a page; the arrow keys to move one line up or down; Ctrl+B to move a page up; press ๐Ÿ‘‰ 1G and G to move to the beginning and end of the file respectively (to go directly to a specific line, type ๐Ÿ‘‰ <linenumber>G); to search through the file for a string/word, use the forward slash key /, e.g. type ๐Ÿ‘‰ /<word>; press ๐Ÿ‘‰ n to move to the next search result and N to the previous search result and to quit the less command, press ๐Ÿ‘‰ q.


  • To search directly for a word/string in a file, use the grep command: ๐Ÿ‘‰ grep <word> <filename>. To search for a word/string in a file when you aren't sure where the file is, use the -r flag: ๐Ÿ‘‰ grep -r <word>. To perform a case-insensitive search using grep use the -i flag by typing ๐Ÿ‘‰ grep -i <word> <filename>.


  • To exclude a word/string from a search term when using grep, use the -v option as follows ๐Ÿ‘‰ grep <search term> <filename> | grep -v <word>. To find the line number(s) in a file where a word appears: ๐Ÿ‘‰ grep -n <word> <filename>. To print the first 'n' lines of a search result, pipe to the head command as follows ๐Ÿ‘‰ grep -i <word> <filename> | head <-n>.


  • To count the number of lines containing references to a search term/string, use the pipe | and word countwc commands as follows ๐Ÿ‘‰ grep <word> <filename> | wc. To print the history of commands you have previously executed in your terminal shell, use the history command and pipe | it to less as follows ๐Ÿ‘‰ history | less. To execute a specific command in your command history, type ๐Ÿ‘‰ !n where n represents the command number e.g. the 43rd command in your history.


    Lastly, use the sudo command to modify system files or directories and execute tasks as root.


As always, thanks for reading! ๐Ÿ‘‹ ๐Ÿ‘‹


First Published here