I think creating a function is the most appropriate way to do this, but just for listing all alternative ways, you could write:
mkdir foo && cd "$_"
$_
is a special parameter that holds the last argument of the previous command. The quote around $_
make sure it works even if the folder name contains spaces.
Why use double quotes?
In some shells, such as zsh
, the double quotes surrounding the $_
are not necessary even when the directory name contains spaces. They are required for this command to work in bash
, however.
For example, running this command in bash 3.2.57 on macOS 10.13.6:
mkdir "my directory" && cd $_
results in this output:
bash: cd: my: No such file or directory
However, if we surround $_
with double quotes, the command returns successfully.
bash-3.2$ mkdir "my directory" && cd "$_"
bash-3.2$ echo $?
0
bash-3.2$