## Simple Command Substitution
Use $()
not backticks
%%bash echo "Current directory is $(pwd)"
It also works with backticks, but it's not the best way:
%%bash echo "Current directory is `pwd`"
(Because when you nest these, you have to escape the backticks)
_drafts
Folder%%bash git ls-files --others --exclude-standard
%%bash mv $(git ls-files --others --exclude-standard) ./_drafts
It works for me and I'd be happy stopping here, but in the real world where files have spaces, it'll break.
xargs
xargs
lets you map a list to any command. Here I would use it like:
%%bash git ls-files --others --exclude-standard | xargs -I {} mv {} ./_drafts/
The untracked files list is piped to xargs
, which lets us run a command for each line in the list. Then mv
is run for each file in the list.
-I {}
is needed to put the filename somewhere other than the end of the mv
command. Here, -I
enables string replacement, and {}
is the placeholder string that gets replaced.