What is the purpose of cd ` (backtick)?

The following behaves the same in Fedora and CentOS.

cd mydirectory

works.

cd notadirectory

works (gets an error from Bash).

However,

cd `

gives me some sort of prompt:

>

Nothing I've thought to enter gives any response, it merely heads to the next line to prompt again. I simply use CTRL+C to exit back to my root@localhost.

What is the purpose of this and what can one do with it?

Thanks!


What you've typed is a backtick - it is the start of an instruction to bash to evaluate what you type as a command. The > is displayed to indicate you are still entering the command on the next line.

If you close the backtick you'll find the whole command will run. E.g.

~$ cd `
> echo /var`
/var$

JohnC's answer already explains the backtick. But what you are also wondering about is the > prompt. This a continuation prompt, and it is not only triggered by a backtick, but always when your shell clearly knows you're not done entering a command. The easiest example is putting an explicit line continuation \ at the end of an input line (which helps splitting long input):

$ echo \
> hallo

Note that just like PS1 controls the command prompt's look, you can also set PS2 to change the continuation prompt, e.g.

$ export PS2="(cont.) "
$ echo \
(cont.) hallo

There are many reasons for the continuation to occur. A single backtick is incomplete, but you could also enter something like

ls -l `which cp`

in a single line (side-note: It's recommended to use $( and ) instead, since the parentheses make it obvious where the expansion starts and ends, while single backticks make it more difficult to see where one's missing. And nesting...). Other possible reasons for a continuation prompt:

  • a missing done after while or for
  • a missing fi after an if
  • a missing esac after case
  • a missing closing parenthesis, e.g. in subshells (cd $HOME; cat .bashrc)
  • a missing command after piping | as well as conditional execution || and && (not & though, since that's just making the command running in background)
  • a missing closing quote (' or ")

Curiously enough, a missing brace } after a variable expansion ${ also causes a continuation prompt, but will fail due to the inserted space:

$ echo ${
> PS2}
bash: ${
PS2}: bad substitution