Do Done Linux


In the world of Linux, there’s a powerful and versatile command that every Linux user should be familiar with: “do-done.” This command, often used in scripting, allows you to execute multiple commands sequentially within a loop. Today, I want to take a deep dive into the “do-done” command and explore its various use cases and functionalities.

Introduction to “do-done” in Linux

When working with Linux, automation is key. Instead of manually executing a series of commands one by one, the “do-done” command allows you to create scripts that can perform repetitive tasks with ease. By placing multiple commands between the “do” and “done” keywords, you can ensure that each command is executed in sequence.


Let’s say I want to create a script that renames multiple files in a directory. Instead of renaming each file individually, I can use the “do-done” command to automate the process. Here’s an example:


for file in *
  mv "$file" "${file}_backup"

In this script, the “do” keyword initiates the loop, and each file in the directory is assigned to the variable “file.” The “mv” command is then used to rename each file by adding “_backup” to its original name. Once all the files have been renamed, the loop ends with the “done” keyword.

Advanced Usage of “do-done”

While the basic usage of the “do-done” command is helpful for automating repetitive tasks, it can also be used in more complex scenarios. Here are a few advanced use cases:

1. Looping through a range of numbers:

The “do-done” command can be used to iterate through a range of numbers using the “seq” command. Here’s an example:


for i in $(seq 1 5)
  echo "Number: $i"

In this script, the “seq 1 5” command generates a sequence of numbers from 1 to 5. The “for” loop then iterates through each number, and the “echo” command prints the number to the terminal.

2. Performing operations on files with specific extensions:

You can use the “do-done” command to perform operations on files with specific extensions. For example, let’s say you want to convert all the .txt files in a directory to .csv format. Here’s how you can achieve that:


for file in *.txt
  mv "$file" "${file%.txt}.csv"

In this script, the “for” loop iterates through each .txt file in the directory. The “${file%.txt}.csv” expression removes the .txt extension from the file name and replaces it with .csv. This way, all the .txt files are converted to .csv format.


The “do-done” command in Linux is a powerful tool for automation and scripting. By executing multiple commands in sequence, you can save time and effort when performing repetitive tasks. Whether you’re renaming files, looping through numbers, or performing operations on specific file extensions, the “do-done” command has got you covered. So next time you find yourself executing a series of commands, consider harnessing the power of “do-done” to streamline your workflow. Happy scripting!