How to Change Colors for ls in Bash [4 Best Methods]

Written by

Reviewed by

Last updated: July 29, 2023

Expert verified

SVG Image

TL;DR

To change colors for ls in Bash, you can try following methods:

  1. dircolors Command: Use the dircolors command to create a custom configuration file that defines the colors for different file types.
  2. LS_COLORS Environment Variable: Set the LS_COLORS environment variable to a list of file types and their corresponding color codes.
  3. Bash Aliases: Create a Bash alias for the ls command that includes the --color=auto option.
  4. Custom Scripts: Create a Bash script that uses ANSI escape codes to specify the colors you want to apply to ls output.

Customizing colors for ls in Bash is a powerful way to personalize your Terminal. However, common errors may occur, such as mixing up color codes, incompatible configurations, forgetting to reload the shell, overwriting aliases, and overwhelming color choices. Be mindful of these pitfalls to ensure a smooth and enjoyable customization process.

Continue reading the guide below to learn different methods to change colors for ls in Bash and common errors that can occur during the process.

The ls command in Bash is a powerful tool that allows you to list files and directories in the Terminal. However, the default appearance of ls output may not always be the most visually appealing or easily readable. Fortunately, you can customize the colors of ls to make it more visually appealing and productive. Customizing the colors for ls output can significantly enhance readability, boost productivity, and transform your command-line interactions into an aesthetically pleasing adventure. In this comprehensive guide, I will explore various methods to change colors for ls in Bash, catering to different preferences and needs. I will also discuss the five most common errors that you may encounter while changing the colors for ls in Bash.

How to Change Colors for ls in Bash

To change color for ls in Bash, you have various powerful methods: using the dircolors command, mastering the LS_COLORS environment variable, utilizing Bash aliases, and custom scripts. Each method offers unique ways to customize your ls colors and enhance your terminal experience.

1. dircolors Command

Enhance your Terminal experience with the power of the dircolors command. This method allows you to configure colors for various file types in ls output, making it easier to distinguish between directories, files, and more. Follow these steps to customize your ls colors:

  1. Open your Terminal window.
opening terminal 43
  1. If you don’t have dircolors installed, you can easily do so using your package manager. On Ubuntu, execute the following command:
<strong>sudo apt-get install dircolors</strong>
  1. This command uses the package manager to install the dircolors utility.
installing dircolors on ubuntu
  1. Once dircolors is installed, create a custom configuration file using this command:
<strong>dircolors --print-database > ~/.dircolors</strong>
  1. The dircolors --print-database command generates the default color configuration, and > ~/.dircolors saves it in a file named .dircolors in the user’s home directory.
creating dircolors configuration file 1
  1. By default the colors of directories and files look like this:
default colors of files and directories
  1. Open the ~/.dircolors file in a text editor by running the command:
<strong>sudo nano ~/.dircolors</strong>
  1. The file contains a list of file types and their corresponding color codes.
opening configuration file 2
  1. Now customize the colors according to your preferences. In this case, I am changing color code for directories.
changing color code in configuration file
  1. Save the changes to your shell profile file and then reload the shell or open a new Terminal window for the changes to take effect.
changed colors of directories

2. LS_COLORS Environment Variable

Customize your ls colors effortlessly by mastering the LS_COLORS environment variable. With this method, you gain the flexibility to define colors for different file types, elevating file organization and efficiency. Customize your ls colors with these simple steps:

  1. To check the current LS_COLORS configuration, run the following command:
<strong>echo $LS_COLORS</strong>
  1. This command displays the current LS_COLORS configuration set in the environment.
checking current LS COLORS configuration
  1. Directly modify LS_COLORS to specify file types and their desired color codes. For example:
<strong>export LS_COLORS="di=01;34:fi=0;37"</strong>
  1. This command sets the LS_COLORS environment variable with custom color codes. In this example, di represents directories, fi represents regular files, 01;34 represents the color code for directories (blue), and 0;37 represents the color code for regular files (white).
directly changing color code of specific file types

3. Bash Aliases

Discover the convenience of Bash aliases to tailor your ls output. By creating shortcuts and adding advanced information like file sizes and permissions, this method streamlines your file navigation. Follow these steps to change your ls colors using aliases:

  1. Create an enhanced alias to include additional information, such as file sizes and permissions by running the following command:
<strong>alias ls='ls --color=auto -lh'</strong>
  1. This enhanced alias displays ls output in long format with human-readable file sizes and colorizes the output.
creating enhanced ls alias

4. Custom Scripts for ls Color Customization

Embrace ultimate control over your ls colors with custom scripts. This method opens doors to endless possibilities, allowing you to craft a truly unique and tailored Terminal experience that reflects your creativity and workflow. Follow these steps:

  1. Using a text editor, create a Bash script that defines your preferred color scheme for different file types. Inside the script, use ANSI escape codes to specify the colors you want to apply.
customized ls color script file
  1. Ensure that the script has executable permissions using the chmod command:
<strong>chmod +x custom_ls_colors.sh</strong>
  1. This command grants execute permissions to the custom_ls_colors.sh script, allowing you to run it as a standalone executable.
making script file executable 1
  1. Execute the script to apply your custom colors to ls output:
<strong>./custom_ls_colors.sh</strong>
  1. By running the script, the custom colors defined in the script will be applied to the ls command, enhancing the visual appearance of the file listings in your Terminal.
executing script file 1

5 Common Errors When Changing Colors for ls in Bash

Customizing colors for the ls command in Bash allows you to personalize your Terminal and improve file recognition. However, During customizing colors for the ls command in Bash, certain errors can occur, leading to unexpected outcomes or disruptions. Understanding these pitfalls will help you customize colors with confidence and create a pleasant and efficient Terminal experience. Here are five common errors that you may encounter:

  • 🎨 Color Code Format Errors: Mixing up or incorrectly specifying ANSI escape codes in your dircolors or .dircolors file can lead to unusual color combinations or cause ls to display files incorrectly. Always double-check color codes for accuracy and ensure they follow the correct format (e.g., di=01;34 for directories) to prevent mishaps.
  • 🧪 Incompatible Shell Configurations: Customization methods that work in one shell (e.g., bash) might not be compatible with others (e.g., zsh). Verify that your color configurations align with the specific shell you are using to avoid conflicts and unexpected behaviors.
  • Forgetting to Reload the Shell: After making changes to your shell profile or configuration files, neglecting to reload the shell or open a new Terminal window can lead to the new colors not taking effect. Always refresh the shell using source or by opening a new Terminal to see your desired color changes.
  • 🧩 Overwriting Existing Aliases: Defining new aliases without checking for conflicting ones may overwrite existing ones and disrupt the expected behavior of your shell. Before setting up aliases for ls colors, ensure they don’t interfere with existing commands and functions.
  • 🌈 Overwhelming Color Choices: When customizing colors, it’s easy to go overboard with vivid or contrasting hues, making the ls output visually overwhelming. Opt for a balanced color scheme that enhances readability and avoids excessive distractions, ensuring a pleasant and efficient Terminal experience.

To Sum Up

In this article, I’ve shared various methods to change colors for ls in Bash, empowering you to customize your Terminal environment to your liking. However, while exploring these methods, keep in mind the common errors that can arise, such as color code format mistakes, incompatible shell configurations, forgetting to reload the shell, overwriting existing aliases, and overwhelming color choices.

Remember, color customization is just the beginning of your journey into Bash customization. To explore deeper into the world of Terminal magic, you may want to explore articles on Bash Shell Scripting, Advanced Bash Commands and Tricks, and Mastering Linux File Permissions. Embrace the flexibility of Bash, experiment with different techniques, and make your Terminal environment uniquely yours.

Frequently Asked Questions

How do I revert to the default ls colors after customization?

To revert to the default ls colors after customization, simply remove or comment out any custom color configurations that you added to the relevant files, such as .dircolors or .bashrc. Once you have removed the custom color settings, save the changes to the file. To apply the changes, reload the shell by either restarting the Terminal or executing the appropriate command, depending on your operating system. This will restore the default ls color scheme, giving you a clean slate to further customize or use the standard colors.

Is it possible to set different color themes based on the user or host system?

Yes, it is indeed possible to set different color themes for the ls command based on the user or host system. To achieve this, you can use conditional statements in your shell profile file (e.g., .bashrc). By checking the current user or hostname using environment variables, you can specify different dircolors configurations or aliases based on the conditions. This way, each user or host can enjoy a unique and personalized ls color scheme tailored to their preferences or requirements.

Can I use hexadecimal color codes instead of ANSI escape codes to customize ls colors?

While hexadecimal color codes are commonly used for web design and graphics, ls in Bash relies on ANSI escape codes for color customization. Using ANSI escape codes is essential to achieve the desired color changes for ls output. These escape codes provide specific instructions to the Terminal for applying colors to different file types, directories, and more. Therefore, when customizing ls colors through the dircolors configuration or aliases, ensure that you use the appropriate ANSI escape codes for a successful and visually appealing result.

Ojash

Author

Ojash is a skilled Linux expert and tech writer with over a decade of experience. He has extensive knowledge of Linux's file system, command-line interface, and software installations. Ojash is also an expert in shell scripting and automation, with experience in Bash, Python, and Perl. He has published numerous articles on Linux in various online publications, making him a valuable resource for both seasoned Linux users and beginners. Ojash is also an active member of the Linux community and participates in Linux forums.

Akshat

Reviewer

Akshat is a software engineer, product designer and the co-founder of Scrutify. He's an experienced Linux professional and the senior editor of this blog. He is also an open-source contributor to many projects on Github and has written several technical guides on Linux. Apart from that, he’s also actively sharing his ideas and tutorials on Medium and Attirer. As the editor of this blog, Akshat brings his wealth of knowledge and experience to provide readers with valuable insights and advice on a wide range of Linux-related topics.

Share this article
Shareable URL
Prev Post

3 Effective Methods to Update Fedora Linux to Get the Latest Software

Next Post

How to Master Save and Exit in Nano Editor [2 Easy Methods]

Leave a Reply

Your email address will not be published. Required fields are marked *

Read next