Bash Commands to Manage Directories

Bash, the default shell in many Linux distributions, offers a powerful set of commands for managing directories. Understanding these commands is crucial for navigating your file system effectively and automating tasks.


  1. pwd: Prints the current working directory's absolute path.
  2. cd: Changes the current working directory. Use cd directory_name to navigate to a specific directory, cd .. to go up one level, and cd ~ to return to your home directory.
  3. ls: Lists the contents of the current directory. With options like -l for detailed information and -a for hidden files.
  4. tree: Displays a hierarchical tree structure of the directory and its subdirectories.

Creation and deletion

  1. mkdir: Creates a new directory. Use mkdir directory_name to create a single directory, or mkdir -p path/to/directory to create a nested directory structure.
  2. rmdir: Deletes an empty directory. Use rmdir directory_name to remove a specific directory.

Advanced operations

  1. mv: Moves or renames a file or directory. Use mv old_name new_name to move/rename within the current directory, or mv old_name path/to/new_location to move to a different location.
  2. cp: Copies a file or directory. Use cp file_name path/to/destination to copy a file, or cp -r directory_name path/to/destination to copy a directory and its contents.
  3. find: Searches for files and directories based on various criteria. Use find . -name "pattern" to search for files with a specific name in the current directory and its subdirectories.
  4. pushd and popd: Manage directory stacks. Use pushd directory_name to push a directory onto the stack and change to it, and popd to pop the last directory from the stack and change back to it.

Path manipulation

  1. Absolute paths: Begin with / and specify the full directory hierarchy (e.g., /home/user/documents).
  2. Relative paths: Start from the current working directory and use . for the current directory and .. for the parent directory (e.g., ./file.txt, ../subdirectory/file.txt).
  3. Tab completion: Press Tab after a partial directory or file name to automatically complete it.

Navigating Directories

pwd: Print the current working directory.
cd: Change directory.
cd /path/to/directory
cd .. # Move up one level
cd ~ # Move to home directory

Listing Contents

ls: List the contents of a directory.
ls -l # Detailed list
ls -a # Show hidden files

Creating and Removing Directories

mkdir: Create a new directory.
mkdir new_directory
rmdir: Remove an empty directory.
rmdir empty_directory
rm -r: Remove a directory and its contents (use with caution).
rm -r directory_to_remove

Copying and Moving

cp: Copy files or directories.
cp file.txt /path/to/destination cp -r directory /path/to/destination # Recursive copy
mv: Move or rename files or directories.
mv file.txt new_location/file.txt mv old_directory new_location/renamed_directory

Wildcards (Globbing)

Use * for matching any sequence of characters.

ls *.txt # List all text files in the current directory

Symbolic Links

ln -s: Create symbolic links (soft links).
ln -s /path/to/source_file link_name

Working with Special Directories

  1. . (dot): Represents the current directory.
  2. .. (dot dot):Represents the parent directory.

Directory Stack

pushd and popd: Manage the directory stack.
pushd /path/to/directory popd

Finding Files

find: Search for files and directories.
find /path/to/search -name "filename"

Changing Permissions

chmod: Change file or directory permissions.
chmod +x # Add execute permission


Working with directories in Bash involves commands like cd to navigate, ls to list contents, mkdir to create directories, and cp and mv to copy or move files. Understanding these commands is essential for effective directory navigation and management in the Bash shell.