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
You can make it do so by using the pipe character '|'. Pipe is used to combine two or more commands, and in this, the output of one command acts as input to another command, and this command's output may act as input to the next command and so on.
The | command is called a pipe. It is used to pipe, or transfer, the standard output from the command on its left into the standard input of the command on its right. # First, echo "Hello World" will send Hello World to the standard output.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With