আসল ফাইল রাখতে জিজিপকে কীভাবে বলবেন?


210

আমি আসল ফাইলটি রাখার সময় gzip কমান্ড লাইন সরঞ্জাম ব্যবহার করে একটি পাঠ্য ফাইল সংকুচিত করতে চাই । ডিফল্টরূপে নিম্নলিখিত কমান্ড চালানো

gzip file.txt

এই ফাইলটি পরিবর্তন করে এর নাম পরিবর্তন করে file.txt.gz। এই আচরণের পরিবর্তে আমি বিদ্যমান নতুনটি ছাড়াও এই নতুন সংকোচিত ফাইলটি রাখতে চাই file.txt। আপাতত আমি এটি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করছি

gzip -c file.txt > file.txt.gz

এটি কাজ করে তবে আমি ভাবছি কেন এত সাধারণ কাজ করার সহজ সমাধান নেই? আমি কি অপশন মিস করছি?


3
এটি কারণ, gzip প্রদত্ত ফাইলটি সংকুচিত করে এবং নতুন ফাইল তৈরি করে। সংকোচনের অর্থ আসল ফাইলটি সঙ্কুচিত করা এবং এটিকে নতুন ফাইলের সাথে প্রতিস্থাপন করা। আপনার "-সি" বিকল্পটি অন্য নামের সাথে এটি সংরক্ষণ করার জন্য স্পষ্টভাবে জিজিপকে বলছে। সে কারণেই এটি কাজ করে
SHW

@ এসএইচডাব্লু আমি আপনার মন্তব্য পাইনি ...?
ম্যানুয়েল সেলভা

@ ম্যানুয়েলসেলভা একবার মূল ফাইলটি সংকুচিত হওয়ার পরে, এটির আর দরকার নেই, আমার ধারণা এটি নকশা ছিল।
ডেইজি

2
যখন অন্য কোনও ইউনিক্স সরঞ্জাম এটি করে না সে ক্ষেত্রে gzip / gunzip কেন ডিফল্টরূপে এটি করে।
মতিন উলহাক

উত্তর:


247

জিএনইউ gzip১.6 বা তারও উপরে, ফ্রিবিএসডি এবং ডেরিভেটিভস বা নেটবিএসডি-র সাম্প্রতিক সংস্করণগুলির জন্য ডোন_ক্রিসটির উত্তর দেখুন

যে কোনও সংস্করণ সহ, আপনি শেল পুনর্নির্দেশগুলি এখানে হিসাবে ব্যবহার করতে পারেন:

gzip < file > file.gz

যখন কোনও যুক্তি না দেওয়া হয়, তখন gzipএটির স্ট্যান্ডার্ড ইনপুটটি পড়ে, সংকুচিত করে এবং সংমিত সংস্করণটিকে তার স্ট্যান্ডার্ড আউটপুটে লিখে দেয়। বোনাস হিসাবে, শেল পুনর্নির্দেশগুলি ব্যবহার করার সময়, আপনাকে কল করা ফাইলগুলি ( "--help"বা "-"পরে যেটি এখনও সমস্যা হয় gzip -c --) নিয়ে চিন্তা করতে হবে না ।

আর একটি সুবিধা gzip -c file > file.gzহ'ল যদি fileনা খোলা যায়, কমান্ডটি ফাঁকা তৈরি না করে file.gz(বা বিদ্যমান ওভাররাইট করা file.gz) ব্যতীত এবং কিছু না চালিয়ে ব্যর্থ gzipহবে।

gzip -kযদিও এর তুলনায় একটি তাত্পর্যপূর্ণ পার্থক্য হ'ল fileএর মেটাডেটা (মালিকানা, অনুমতি, সংশোধন সময়, সঙ্কুচিত ফাইলের নাম) অনুলিপি করার চেষ্টা করা হবে না file.gz

এছাড়াও যদি file.gzইতিমধ্যে বিদ্যমান থাকে তবে আপনি noclobberযদি নিজের শেলটিতে বিকল্পটি চালু না করেন (তবে set -o noclobberপসিক্স শেলগুলিতে উদাহরণস্বরূপ) এটি নিঃশব্দে এটিকে ওভাররাইড করে ।


4
এখন এটি ওপি-র প্রশ্নের সুনির্দিষ্ট বিষয়গুলিকে সম্বোধন করে এবং "মূল ফাইলটি রাখার জন্য জিজিপকে কীভাবে বলতে হয়" এই সাধারণ প্রশ্নের উত্তর দেয়। এর চেয়ে খুব সুবিধাজনক এবং আরও দরকারী -c
কোডওগল

8
নোট করুন যে <এবং> আসলে কমান্ডে টাইপ করা হয়েছিল এবং ফাইল
নামটির

কি -kবিকল্প? ম্যান পৃষ্ঠাগুলিতে এটি খুঁজে পাওয়া যায় নি, উদাহরণস্বরূপ এই সংস্করণটি এখানে linux.die.net/man/1/gzip । এছাড়াও, দেখতে দেখতে জিজিপ ডিফল্টরূপে ফাইলটির মেটাডেটা অনুলিপি করে।
ফ্লো

1
@ ফ্লো 2 কে, এটি ডন_ক্রাস্টির উত্তরের লিঙ্ক।
স্টাফেন চেজেলাস

আহ, আমি এটিকে আমার ম্যাকোজে দেখছি তবে খুব খারাপ এটি আরএইচইএল বা উবুন্টুতে নেই। ধন্যবাদ।
ফ্লো

138

নোট করুন যে সম্প্রতি প্রকাশিত (জুন 2013) এক্সজেড, এলজিপ এবং বিজিপ 2 এর মতো সরঞ্জামগুলির সাথে সামঞ্জস্য করার জন্য "- কিপ (-কে) বিকল্পটি স্বীকার করেgzip-1.6

ম্যান পৃষ্ঠা থেকে অংশ:

  -k --keep
         Keep (don't delete) input files during compression or decompression.

সুতরাং, হিসাবে 1.6, আপনি মূল ফাইলটি ব্যবহার করতে -kবা --keepরাখতে পারেন :

gzip -k -- "$file"

(নোট যে এটা কাজ করে না $fileহয় -(যা gzipঅর্থ ব্যাখ্যা করে stdin প্রকৃত নামক ফাইলের পরিবর্তে -), যা ক্ষেত্রে, আপনি এটি পরিবর্তন করতে হবে ./-)

ধারাবাহিকতার জন্য এই বিকল্পটি প্রথমে ফ্রিবিএসডি বাস্তবায়নেরgzip (2007 সালে ফ্রিবিএসডি 7.0 তে) চালু হয়েছিল bzip2। এটি নেটবিএসডি কর্তৃক gzipজিএনইউ-র পুনর্লিখনের ভিত্তিতে gzip-kবিকল্প অবশেষে 2010 সালে NetBSD বা ফিরে এটি তৈরি করা


10
গীজ। আরএইচইএল 6 কেবল বেসে জিপ 1.3.12 নিয়ে আসে ...
নিকোলাস

এটি ম্যাক / ওএস এক্স :) এ কাজ করে (যা বিএসডি)
পল

সেখানে কি অনেকগুলি স্ট্যান্ডার্ড ডিগ্রোস>> = 1.6 ব্যবহার করছে না? উত্তরটির
আপডেটের

"-" কিসের জন্য? আমি মনে করি gzip -k "ফাইল" ঠিকঠাক কাজ করে।
notilas


30

ডকুমেন্টেশন থেকে মনে হয় যে ফাইলটির অনুলিপি তৈরি করার কোনও বিকল্প নেই।

আপনি একটি শেল ফাংশন সংজ্ঞায়িত করতে পারেন

gzipkeep() {
    if [ -f "$1" ] ; then
        gzip -c -- "$1" > "$1.gz"
    fi
}

এবং তারপর

gzipkeep file.txt

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