cd (change directory) in Linux CLI - Time & Space Complexity
Let's look at how the time it takes to run the cd command changes as we use it. We want to understand if moving between folders takes more time when folders are deeper or more complex.
What happens to the work done by cd when the folder path changes?
Analyze the time complexity of the following code snippet.
cd /home/user/documents/projects
cd ../downloads
cd /var/log
cd ../../etc
cd ./scripts
This code changes the current folder several times using absolute and relative paths.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The shell processes the path string to find the target directory.
- How many times: Once per
cdcommand, parsing each folder name in the path.
As the path length grows, the shell checks each folder name one by one to reach the target.
| Input Size (n) | Approx. Operations |
|---|---|
| 2 (e.g., /a/b) | 2 checks |
| 5 (e.g., /a/b/c/d/e) | 5 checks |
| 10 (e.g., /a/b/c/d/e/f/g/h/i/j) | 10 checks |
Pattern observation: The work grows directly with the number of folders in the path.
Time Complexity: O(n)
This means the time to change directory grows linearly with the number of folders in the path.
[X] Wrong: "Changing directories always takes the same time no matter how deep the folder is."
[OK] Correct: The shell must check each folder in the path, so longer paths take more steps.
Understanding how commands like cd work under the hood helps you think about efficiency in scripts and automation. This skill shows you can reason about how tools behave as inputs grow.
"What if the cd command used symbolic links that point to other folders? How would that affect the time complexity?"