Chciałem być sprytny i porównać plik zdalny z plikiem lokalnym bez wcześniejszego ręcznego pobrania. Mogę pobrać zawartość pliku zdalnego przez
ssh user@remote-host "cat path/file.name"
Jednak przesyłanie tego do diff
ssh user@remote-host "cat path/file.name" | diff path/file.name
daje mi to:
diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.
Mam skonfigurowane klucze ssh, więc nie monituje mnie o hasło. Co to za obejście?
command-line
pipe
diff
użytkownik394
źródło
źródło
-
), możesz użyć/dev/stdin
. np.diff file1 /dev/stdin
Odpowiedzi:
Spróbuj użyć
-
do przedstawienia standardowego wejścia.ssh user@remote-host "cat path/file.name" | diff path/file.name -
źródło
Oto jedno obejście:
diff
wydaje się akceptować <( wyrażenie ) jako argumenty:źródło
/dev/fd
:diff
widzi coś takiego/dev/fd/3
w wierszu poleceń).diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")
którego teraz używam cały czas.diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
Pipowanie do diff jest równoważne z uruchomieniem
diff path/file.name
a następnie po uruchomieniu wpisuje całą zawartość pliku.
Jak widać, nie tego się spodziewałeś.
źródło
źródło
StrictHostKeyChecking=no
? W przeciwnym razie dobra odpowiedź.