Whilst tinkering with a private Docker Registry, I was reading this tutorial from Digital Ocean: -
How To Set Up a Private Docker Registry on Ubuntu 18.04
On the server you have created to host your private Docker Registry, you can create a docker-registry directory, move into it, and then create a data subfolder with the following commands:
mkdir ~/docker-registry && cd $_
mkdir data
The thing that perked my interest was the use of $_
I realised that this was somehow magically changing into the newly created ~/docker-registry subdirectory .....
How did this work ?
The internet had the answer ...
what does 'cd $_' mean?
$_ expands to the last argument to the previous simple command* or to previous command if it had no arguments.
mkdir my-new-project && cd $_
^ Here you have a command made of two simple commands. The last argument to the first one is my-new-project so $_ in the second simple command will expand to my-new-project.
In other words, the magic argument $_ means "Take the argument from the previous command i.e. my-new-project and run the cd command against it.
So, to take the first example further, I could've done this: -
mkdir -p ~/docker-registry/data && cd $_
which would: -
(a) create the entire path - ~/docker-registry/data
(b) change into it
which can be validated: -
pwd
/Users/hayd/docker-registry/data
Amazing !