Saya ingin menjadi pintar dan membandingkan file jarak jauh dengan file lokal tanpa terlebih dahulu mengunduhnya secara manual. Saya bisa mendapatkan isi dari file jarak jauh dengan
ssh user@remote-host "cat path/file.name"
Namun, perpipaan itu untuk diff
ssh user@remote-host "cat path/file.name" | diff path/file.name
berikan saya ini:
diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.
Saya memiliki kunci ssh yang diatur, jadi itu tidak meminta saya untuk kata sandi. Apa solusinya untuk ini?
command-line
pipe
diff
pengguna394
sumber
sumber
-
), Anda dapat menggunakan/dev/stdin
. misalnyadiff file1 /dev/stdin
Jawaban:
Coba gunakan
-
untuk mewakili input standar.ssh user@remote-host "cat path/file.name" | diff path/file.name -
sumber
Berikut ini satu solusinya:
diff
tampaknya menerima <( expr ) sebagai argumen:sumber
/dev/fd
:diff
melihat sesuatu seperti/dev/fd/3
pada baris perintahnya).diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")
yang sekarang saya gunakan sepanjang waktu.diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
Perpipaan ke dalam diff sama dengan menjalankan
diff path/file.name
dan kemudian, setelah itu berjalan, ketikkan seluruh isi file.
Seperti yang Anda lihat, bukan itu yang Anda harapkan.
sumber
sumber
StrictHostKeyChecking=no
? Kalau tidak, jawaban yang bagus.