ডিফ করতে পারছেন না?


74

আমি চতুর হতে চেয়েছিলাম এবং প্রথম কোনও ম্যানুয়ালি ডাউনলোড না করে কোনও স্থানীয় ফাইলের সাথে একটি দূরবর্তী ফাইলের তুলনা করতে চাই। আমি এর মাধ্যমে রিমোট ফাইলের সামগ্রীগুলি পেতে পারি

ssh user@remote-host "cat path/file.name"

যাইহোক, যে পাইপিং diff

ssh user@remote-host "cat path/file.name" | diff path/file.name

আমাকে এটি দেয়:

diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.

আমি ssh কী সেট আপ করেছি, সুতরাং এটি আমাকে একটি পাসওয়ার্ডের জন্য অনুরোধ জানায় না। এটির জন্য একটি কার্যনির্বাহী কী?


5
যাইহোক, আপনি এটি করার পরেও ফাইলটি ডাউনলোড করছেন (যেহেতু এর সামগ্রীটি এসএসএইচ সংযোগের মাধ্যমে প্রেরণ হয়ে যায়), আপনি কেবল এটি কোথাও সংরক্ষণ করছেন না। সুতরাং আপনি কোনও ব্যান্ডউইথ বা কিছু সংরক্ষণ করার মতো নয়।
ডেভিড জেড

2
হ্যাঁ, আমি কেবল আমার ফাইল সিস্টেমটি চারদিকে ঝুলন্ত এক শট ফাইলের সাথে আপ করতে চাই না।
ব্যবহারকারী 394

1
যখন কমান্ডটি স্টিডিনকে সমর্থন করে না (যেমন মাধ্যমে -), আপনি ব্যবহার করতে পারেন /dev/stdin। উদাহরণস্বরূপdiff file1 /dev/stdin
ctrl-alt-delor

উত্তর:


92

-স্ট্যান্ডার্ড ইনপুট উপস্থাপন করতে ব্যবহার করার চেষ্টা করুন।

ssh user@remote-host "cat path/file.name" | diff path/file.name -


জায়ান্ট ফাইলগুলির তুলনা করার সময় (যেমন লিনাক্স ডিস্ক চিত্রগুলি) কনসোলে তাদের আউটপুট দেয়! এমনকি ডিফফ-এস ("একই" জন্য) এটি এটি করে।
ব্যবহারকারী 39131339

65

এখানে একটি কার্যনির্বাহী: diff<( এক্সপ্রেস ) কে তর্ক হিসাবে গ্রহণযোগ্য বলে মনে হচ্ছে :

diff <(ssh \"cat path/file.name/") <(cat path/file.name)

17
এটি আলাদা নয়, এটি শেল (বাশ, কেএসএস এবং জেডএস এই সিনট্যাক্সকে সমর্থন করে, তবে এটি পসিক্স নয়), কার্নেল থেকে কিছু সহায়তা নিয়ে (এটি অবশ্যই সরবরাহ করতে হবে /dev/fd: এর কমান্ড লাইনের diffমতো কিছু দেখায় /dev/fd/3)।
20:25

3
এটি "সরবরাহ করতে হবে না" - শেলগুলি এই বৈশিষ্ট্যটির জন্য অস্থায়ী নামের পাইপও তৈরি করতে পারে।
প্রশংসিত

3
এই দুর্দান্ত উত্তর!
Neves

6
আমি ব্যক্তিগতভাবে এই উত্তর পছন্দ। আমার দুটি ভিন্ন এক্সএমএল ফাইলের পার্থক্য করা দরকার; তবে তাদের প্রথমে সঠিকভাবে গঠন করা দরকার। এটি এর নেতৃত্বে: diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")যা আমি এখন সব সময় ব্যবহার করি।
পল নেলসন বাকের

এটি ওএস এক্সেও খুব দরকারী যেখানে কোনও ব্যক্তি দুটি বাইনারি .plist ফাইলের তুলনা করতে চাইতে পারে:diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
মুরগ্যান্ট

4

ডিফের মধ্যে পাইপ দেওয়া চলমান সমান

diff path/file.name

এবং তারপরে, একবার এটি চলমান হওয়ার পরে, ফাইলটির পুরো বিষয়বস্তু টাইপ করুন।

আপনি দেখতে পাচ্ছেন, এটি আপনার প্রত্যাশা মতো নয়।


কোন কর্মসংস্থান? :(
ব্যবহারকারী 394

1
হেমন্তের উত্তর দেখুন। আমি একটিরও জানতাম না।
মাচা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.