While it may seem antiquated in this  day and age of modern operating systems, the command line remains the most  flexible and powerful way to perform tasks in Linux. In the first part of our  command line series, we discussed some of the very basics of the Linux command  line including directory navigation, file/directory operations and  search.
In this follow up article we build on  that as we go deeper to discuss file metadata, permissions, timestamps, as well  as some new tools like tee, Vim, and more.
Go to Part 1 for Linux CLI Basics #1 to #12.
13. How to access file metadata like size, permissions, and more?
Use the ls command  with -l option  to display file metadata in output. For example:
Each line in the output contains metadata information related to a file or a sub-directory present in the current directory. This information can be divided into the following eight parts:
+permissions that apply to the owner
|
| +permissions that apply to all other users
| |
| | +number of hard links
| | |
| | | +file size +last modification date/time
_|_ _|_ | _|___ ________|__
drwxr-xr-x 3 himanshu himanshu 4096 Jul 3 14:26 Desktop
__ ________ ________ ______
| | | |
| | | +name of file/ directory
| | |
| | +group the file belongs to
| |
| +owner of the file
|
+permissions that apply to the members of the group the file belongs to
The first character represents the file  type. For example, in the line shown above, d indicates  this is a directory. Other values can be: - for  normal file, s for  socket file, l for  link file, and more.
The next 9 characters represent  permissions -- r -  read, w -  write, x-  execute. The first set of three characters represents the owner’s permission,  the next three are group's permission, and the final three represent permissions  granted to others who are neither the owner, nor the part of the group the file  belongs to. In the example shown above, the owner has  read, write and execute permissions, while the group as  well as others both  have only read and execute permissions.
Tip: Use  the -h command  line option along with -l to  display file size in human readable format.
14. How to change file permissions?
Use the chmod command  to alter file permissions. There are two ways in which this command can be used.  The first method, also known as letters  method, uses +, -,  and = signs  to add, remove, and assign permissions. Letters a, o, u,  and g represent  all, others, owner, and group respectively.
For example, the chmod  u=rwx somefile command assigns read, write, and execute  permissions to the owner of the file somefile.  Similarly, the chmod  o+w somefile command adds write permission for others, the chmod  g-r somefile removes read permission from the group the file  belongs to, and the chmod  a+x somefile command adds execute permission for  everyone.
Specifying a is  not mandatory, which means that setting permissions like +x or -r without  specifying owner, group or other automatically applies it to  all.
The second method is the numbers  method and it uses 4, 2,  and 1 instead  of r, w,  and x.  The values are added together in sets of 3 to give us a three digit number  denoting permissions.
For example, the chmod  761 somefile command gives rwx, rw, and r permissions to the  owner, group, and others, respectively. Here 7 represents  the sum of numbers corresponding to r,w, and x. Similarly, 6 represents  the sum of numbers corresponding to r and w, while 1 represents  x.
15. How to change file timestamps?
Use the touch command  to change file timestamps. There are three types of timestamps associated with a  file: Access  time, Modification  time, and Change  time. While the first two are self explanatory, the third one represents  the time when the inode information  or the meta data related to file last changed. Use the stat command  to display these timestamps:
To change the file access  time to the current time, use the touch command  with the -a option:touch  -a somefile. Similarly, the -m option  changes the file modification  time to the current time.
To change file timestamps to a time  other than the current time, use the -t command  line option. For example, the command touch  -t 201407020900.01 -a somefile changes the access timestamp of somefile to 2014/07/02  09:00:01. You can also pass a specific date and time in human readable  form. Use the -d command  line option for this. Here are some examples:
touch -d "2013-01-10 10:00:07" -a somefiletouch -d "next sunday" -m somefiletouch -d "3 hours ago" -a somefile
16. How to determine file types?
Use the file command  to determine file types. As shown in the example below, the command expects a  filename as an argument. You can also use the wildcard * in place of file name  to display the file type for every file in the current directory: file  *
17. I’ve downloaded an executable file, but it doesn’t execute, why?
In Linux (and other *nix systems)  whether a file is executable or not depends solely on its permissions, not on  its extension or content. When a file is downloaded, its original permissions  are not known, and is hence given a default set of permissions that are  determined by umask.
If the user really intends to execute  the downloaded file, they’ll have to explicitly give executable permissions to  it using the chmod command  explained above. Giving permissions manually also helps prevent virus, worms,  and more from infecting your system without your knowledge.
18. How to print the number of new lines, words, and bytes in files?
Use the wc command  to print newline, word, and byte counts for a file. Here is an  example:
In the output shown above, 5 represents  the number of lines, 12 represents  the number of words, and 52 represents  the number of bytes. You can also use the -l, -w,  and -c command  line options to separately produce number of lines, words, and bytes,  respectively in the output.
19. How to display disk usage of files and directories?
Use the du command  to display disk usage of files and directories. Here is an  example:
Note -   The -h command  line option is used to produce the size in human readable  format.
An important thing to note here is that  the du command  outputs the resident  size of a file, which could be different from the actual  size that the ls  -l command displays. The reason behind this difference is either slack  space or sparse files.
To display the combined size of a  directory as well as all its subdirectories, use the -s option,  while -S can  be used to display separate sizes. To display the amount of disk space available  on the file system containing a specific file or directory use the df command.
Here again, the -h option  is used to display the output in human readable format. If the dfcommand  is run without any file/directory name, it'll show disk usage for all the file  systems.
20. How to compare two files?
Use the diff command  to compare two files. The command examines both the files and produces the  output in a particular format to let you know what changes are required for the  files to match. The command requires two filenames as arguments, as shown in the  example below.
Use the diff command  to compare these files:
Decrypting the output shown above, 5c5 means  that the fifth line of somefile is  changed, and should be replaced by the fifth line of the file anotherfile.  The line in question from the first file is marked with a < symbol,  while line from the second file is marked with a > symbol.
Note-  Besides c,  which signifies a changed line, the diff command also points which lines need to  be added (a)  and deleted (d)  for the files being compared to match.
More complex examples of this command  can be found here.
21. How to view the first few and last few lines of a file?
Use the head and tail commands  to quickly view the first and last few lines of a file. These commands come in  handy when you just want to have a quick peek inside the file. For example,  the head  -n2 somefile command displays the first 2 lines  of the file somefile.  Similarly, the tail  -n3 somefile command displays the last 3 lines  of the file.
Not only lines, you can also quickly  view a specified number of bytes using these commands. For this, use the -c command  line option instead of -n.  By default, when the number of lines is not specified, both the commands  display 10 lines  in the output.
22. How to store and view the output of a command at once?
Use the tee command  to simultaneously write the output of any other command to standard output as  well as to one or more files. For example, the ls  | tee ls-dump command displays the output of the ls command  on console and stores the output in the file ls-dump.
While the tee command  is mostly used for capturing and analyzing logs at the same time, it can also be  used to speed up your workflow. For example, the echo  "Linux command line" | tee file1 > file2 command writes the  string to both files in one go.
23. How to compress and uncompress a file?
Working on Linux requires you to deal  with archives like .tar, .tar.gz, .bz2,  and more. To create as well as uncompress these archives you can use the tar command.
For example, the tar  -cvf practice.tar practice/ command compresses the practice folder  and creates a .tar archive  named practice.tar.  The -c command  line option tells the tar command  to create an archive, -v displays  the files added to the tarball , and -f specifies  the filename.
To uncompress the .tar archive  created above, use the tar  -xvf practice.tar command. The -xcommand  line option signals the command to extract the archive. This command untars the  file in the current directory. Use the -C option  to specify a different target directory.
To create .tar.gz and .tar.bz2 archives,  add an extra -z and -j command  line option, respectively. The command to uncompress these archives is same as  the one used for .tar files.  Use the -tcommand  line option (along with v and f)  in case you just want to list the contents of an archive.
Tip -  To deal with .zip files,  use the zip command.
24. How to edit a file using Vim editor?
While the Vim editor is one of the most  powerful command line text editors, it also requires you to learn a lot of  keyboard shortcuts. But the basics of editing are simple and  easy.
To open a file in the editor, run  the vim command  with the file name as an argument. For example, vim  textfile. If the file textfile doesn’t  exist in the specified directory, the editor will create and open a new file by  that name, otherwise it will open the existing file. 
There are two operation modes in  Vim: command  mode and insert  mode. The editor opens the file in command mode, where you can  move the cursor using the arrow keys on your keyboard, but cannot edit the file  until you press i --  activating the insert mode as shown below.
Once you are done editing the file, you  have to press the Esc key  to come out of the insert mode and into the command mode before being able to  save the file.
To save the file, type the :w command  and then hit Enter.
To quit the editor, type the :q command  and press Enter, or :wq to  save and quit in one go.
Note -  To quickly copy or delete a line, switch the editor to the command  mode, bring the cursor to the desired line, and type yy or dd,  respectively. To paste, press p in  the command mode.
No comments:
Post a Comment