Linux Command line Basics – Working with Files and Directories

This post explains how to work with files and directories. This includes tasks, such as locating your position in the directory structure, viewing file contents, copying and moving files and directories, creating and removing files and directories, and searching for files and directories.

Viewing Directories

A directory is a list of references to objects, which can include files, subdirectories, and symbolic links. Each reference consists of two components:

  • A name: The name of the object is used to identify and access the object.
  • A number: The number specifies the inode in which information about the object is stored.

You can use various commands to display the current directory, view content of a directory, and change directories.

What is an Inode?

An inode is a list of information relating to a particular object, such as a file, directory, or symbolic link. The information held by the inode includes the type of object about which the inode holds information, permissions, ownership information, and the locations in which data is stored.

Determining the Current Directory

The pwd command identifies the full or absolute path name of the current working directory.

$ pwd
/home/user

Displaying the Directory Content

The ls command displays the content of a directory. The syntax for the ls command is:

$ ls [-options] [filename]

Below are few examples of using ls command to list the directory contents.

1. To list the files and directories in the current directory (/export/home/student), enter the ls command without arguments.

$ ls
file1  file2  file3

2. To display the content of a specific directory within the current working directory, enter the ls command followed by the directory name.

$ ls dir1
textfile1  textfile2  textfile3

3. To display the content of a directory that is not in the current working directory, enter the ls command with the complete path to that directory.

$  ls /var/tmp/test
test1  test2  test3

Displaying the Directory Content With Options

The ls -l command displays a long listing of file information.

The following is a brief explanation of the parts of the long list displayed in the figure above:

  • The first character is the file type. It can be a file(-) or directory(d) or symbolic link(l) etc
  • The second nine places indicate the file permissions: r means readable, w means writable, x means executable, and the – means denied.
  • The third section (one number) is the link count.
  • The fourth section is the owner (user).
  • The fifth section is the group (user).
  • The sixth section is the file size.
  • The seventh section is the date.
  • The eighth section is the file name.

Some files are hidden from view when you use the ls command. Hidden files often contain information that customizes your work environment. The “ls -la” command lists all files in a directory, including hidden files.

$ ls -la
total 1296
dr-xr-x---.  8 root root    4096 May 12 15:25 .
drwxr-xr-x. 23 root root    4096 May 12 15:25 ..
-rw-r--r--   1 root root     139 Apr 14 13:01 a
-rw-r--r--   1 root root    3564 May 12 12:53 .bash_history
-rw-r--r--   1 root root      18 Mar 12 21:32 .bash_logout
-rw-r--r--   1 root root     176 Mar 12 21:32 .bash_profile
-rw-r--r--   1 root root     176 Mar 12 21:32 .bashrc
Note: A single period (.) represents the current working directory. The double period (..) represents the parent directory, which contains the current working directory.

The ls -ld command displays detailed information about a directory without showing its content.

$ ls -ld directory name

For example, to obtain detailed directory information for the dir1 directory, enter the ls -ld command.

$ ls -ld dir1
drwxr-xr-x 2 root root 4096 May 12 15:32 dir1

For example, to view a recursive list of the content of the dir1 directory, enter the ls -R dir1 command.

$ ls -R dir1
dir1:
file1  file2  file3  testdir

dir1/testdir:
textfile1  textfile2  textfile3

Displaying File Types

Knowing the file type may help you decide the command or program to use for reading the file. The ls -F command or the file command displays the file types. For example:

$ ls -F
dir1/ dir2/ dir3/ file1 file2 file3

The following table shows the symbols or indicators used with the “ls –F” command output.

Indicator File Type
* Executable
/ Directory
#ERROR! Socket
@ Symbolic link
| First In First Out (FIFO)
Note: A symbolic link is a special type of file that points to another file or directory.

The file command also helps determine certain file types. The syntax for the file command is:

$ file filename

For example, to view the file type of the file “test”, enter the file command and specify the name of the file.

$ file test
test: ASCII text

The output from the file command is one of the following:

  • Text: Text files include American Standard Code for Information Interchange (ASCII) text, English text, command text, and executable shell scripts.
  • Data: Data files are created by programs. The file command indicates the type of data file, such as a FrameMaker document, if the type is known. The file command indicates that the file is a data file if the type is unknown.
  • Executable or binary: Executable files include 32-bit executable and extensible linking format (ELF) code files and other dynamically linked executable files. Executable files are commands or programs.

Changing Directories

When working within the directory hierarchy, you always have a current working directory. When you initially log in to the system, the current directory is set to your home directory. You can change your current working directory at any time by using the cd command. For example, to change directories from the student directory to the dir1 directory, use the cd command:

$ pwd
/home/user
$ cd dir1
$ pwd
/home/user/dir1
$

When you use the cd command without options or arguments, the current working directory changes to your home directory. In the command line, you can use path name abbreviations to easily navigate to or refer to directories. The table describes the path name abbreviations.

Symbol Path name
. Current or working directory
.. Parent directory, the directory directly above the current working directory

For example, to move to the parent directory for dir1, enter the cd .. command.

$ pwd
/home/user/dir1
$ cd ..

Confirm the current working directory by using the pwd command.

$ pwd
/home/user
Note: You can move up multiple levels of the directory hierarchy by using the cd .. command followed by a slash (/). For example “cd ../../..”

Relative and Absolute Path Name

You can use either a relative or an absolute path name to move around the directory hierarchy. A relative path name lists the directories in the path relative to the current working directory. An absolute path name lists all the directories in the path, starting with the root (/) directory.

For example, to change directories using a relative path name, enter the cd command with the path name that starts from the current working directory, student.

$ cd
$ cd dir1
$ pwd
/home/user/dir1
$ cd ../dir2
$ pwd
/home/user/dir2
$ cd
$ cd dir1/coffee
$ pwd /home/user/dir1/coffee

For instance, to change directories using an absolute path name, enter the cd command with the complete path name from the root (/) directory.

$ cd
$ cd /home/user/dir1/coffee 
$ pwd 
/home/user/dir1/coffee

Home Directory

The home directory of a regular user is where the user is placed after logging in. The user can create and store files in the home directory. Often the name of a user’s home directory is the same as the user’s login name. For example, if your user login name is john, your home directory would be /home/john.

Returning to Your Home Directory

You can return to your home directory by using one of the two methods:
1. Use the cd command without arguments.

$ cd
$ pwd
/home/user

2. Use the cd command with the absolute path name to your home directory.

$ cd /home/user

You can also navigate to a user’s home directory, using the cd command with a tilde (~) character in front of the username. The tilde (~) character is an abbreviation that equates to the absolute path name of the user.

$ cd ~user
$ pwd
/home/user

Note: The tilde (~) character is a shell facility and is not available in all shells.

You can also use the tilde (~) character to represent your home directory in a relative path. The tilde (~) in the following example represents the student home directory.

$ cd ~/dir1/coffee

You can also use the tilde (~) character to navigate to another user’s home directory.

$ cd ~user2
$ pwd
/home/user2
$ cd
$ pwd
/home/user1
Related Post