If you ever have the misfortune of working with an application that starts its directories with a -
character, then you will know the pain of pretty much every standard bash tool breaking as they all expect -
to be used for flags like so:
$ cd -test
bash: cd: -t: invalid option cd: usage: cd [-L|[-P [-e]] [-@]] [dir]
Intuitively, you would think that escaping the string with -test
would work, but that produces the same error.
To solve this, I had to dive into some POSIX standards and discovered that the following is how you safely discard the first argument and not trigger Bash into thinking that -test
is your flag:
$ cd -- -test
Easy enough once you know that trick. You can also cheat and define the path explicitly, but that isn’t as fun to whip out at parties:
$ cd ./-test