Reputation: 2300
In linux it is possible t do this:
git diff $(git status -s -b | sed -n '2p' | cut -d' ' -f2-)
or a simpler case
ls $(pwd)
The question is how can I achieve the same in windows? (not using a batch file, a one liner in command prompt). Not all commands support piping so how can we evaluate one and pass result as parameter to another?
I've tried piping and <
and >
but none work.
git diff < (git status -s -b | sed -n '2p' | cut -d' ' -f2-)
Try that yourself it expects a file. And |
doesn't work either as git diff
doesn't support it
git status -s -b | sed -n '2p' | cut -d' ' -f2- | git diff // results in illegal seek
Upvotes: 31
Views: 34519
Reputation: 34899
There is no $
operator in cmd
.
Redirection operators (<
, >
, >>
) expect files or stream handles.
A pipe |
passes the standard output of a command into the standard input of another one.
A for /F
loop however is capable of capturing the output of a command and providing it in a variable reference (%A
in the example); see the following code:
for /F "usebackq delims=" %A in (`git status -s -b ^| sed -n '2p' ^| cut -d' ' -f2-`) do git diff %A
Upvotes: 42