কার্ল .gz ফাইলটি এবং সংক্ষেপণের জন্য পাইপ করুন


13

আমি প্রদত্ত ইউআরএলগুলি থেকে কিছু .gzফাইল (এনবি নয় .tar.gzএমন) ডাউনলোড করার চেষ্টা করছি এবং বিদ্যমান ফাইলগুলি ওভাররাইট করার জন্য সেগুলি সংক্ষেপিত করব।

প্রতিটি পৃথক ডাউনলোডের জন্য, আমি নিম্নলিখিতগুলি চেষ্টা করেছিলাম:

curl -O $URL | gunzip -f

যাইহোক, এই যেমন ব্যর্থ কাজ করে নি: gzip: stdin: unexpected end of file। আমি বাশ শেল স্ক্রিপ্টের ভিতরে এই কমান্ডের একটি সিরিজ চালিয়েছি।

আমি যদি আদেশটি দুটি স্পষ্ট পদক্ষেপে ছড়িয়ে দিয়েছি, অর্থাত্ প্রথমে ফাইলটি ডাউনলোড করুন এবং তারপরে .gzফাইলটি সংক্ষেপিত করুন, এটি কাজ করে।

পাইপযুক্ত সংস্করণটি কেন কাজ করে না?


1
আপনি কি নিশ্চিত যে curl -Oফাইলটি স্ট্যান্ডার্ড আউটপুট এ প্রবাহিত করে? আপনি কি ভাবছেন wget -O-?
স্টিল্ড্রাইভার

@ স্টিলড্রাইভারের উত্তর পোস্ট হিসাবে এটি পোস্ট করা উচিত | tar xz ...
প্যানথার

এছাড়াও রয়েছে --compressed, তবে এটি কেবল একটি সংকোচিত প্রতিক্রিয়ার জন্য কাজ করে।
কেনারব

উত্তর:


18

একটি নল (দ্বারা প্রতিনিধিত্ব |প্রতীক) পাঠায় মান আউটপুট এক প্রক্রিয়ার মান ইনপুট অন্যের। আপনার ক্ষেত্রে, আপনি কোনও নামকৃত ফাইলটি ব্যবহার করতে চান বলে মনে হয় যাতে কোনও পাইপ উপযুক্ত হয় না - বিশেষত, পাইপের কিছুই নেই (তাই gunzipত্রুটিটি) কারণ দূরবর্তী বিষয়বস্তু স্থানীয় ফাইলে যাচ্ছে। পরিবর্তে, আপনাকে ফাইলটির নামটি বের করতে হবে - উদাহরণস্বরূপ, এর ইউআরএল থেকে - এর মতো কিছু (স্ট্রিং ম্যানিপুলেশন সক্ষমতাগুলিতে ব্যাশ নির্মিত)

curl -O "$URL" && gunzip -f "${URL##*/}"

আপনি যদি কোনও পাইপ ব্যবহার করতে চান তবে এটি করার উপায়টি এমন কিছু হবে

curl "$URL" | gunzip -c

( -Oবিকল্প ব্যতীত) যাতে এটি থেকে পাইপ করা curlযায় এমন দূরবর্তী বিষয়বস্তুগুলিকে প্রবাহিত করে , তবে তারপরে আপনার যথাযথরূপে লক্ষ্যহীন ফাইলকে ওভাররাইট করার জন্য আউটপুটটিকে পুনর্নির্দেশ করতে হবে ।stdoutgunzipgunzip


6

ডাউনলোড করার সময় পুনঃনির্দেশগুলি অনুসরণ করুন। কখনও কখনও কোনও ওয়েব সার্ভারে সুরক্ষা এবং / অথবা এলোমেলো কারণে লুকানো পুনর্নির্দেশগুলি থাকে। আপনি যদি পুনঃনির্দেশটি অনুসরণ না করেন তবে ভুল ডেটা ডাউনলোড হয়ে যায় এবং পাইপযুক্ত ডেটা পড়তে আপনার অ্যাপ্লিকেশন বিভ্রান্ত হয়ে যায়। আপনি -L পতাকা ব্যবহার করে কার্লের সাথে পুনঃনির্দেশগুলি অনুসরণ করতে পারেন।

curl -L https://example.com/mygzip.tar.gz | tar zxv
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.