මුල් ගොනුව තබා ගැනීමට gzip ට පවසන්නේ කෙසේද?


221

මුල් ගොනුව තබා ගනිමින් gzip විධාන රේඛා මෙවලම භාවිතයෙන් පෙළ ගොනුවක් සම්පීඩනය කිරීමට මම කැමතියි . පෙරනිමියෙන් පහත විධානය ක්‍රියාත්මක කරන්න

gzip file.txt

එහි ප්‍රති results ලය වන්නේ මෙම ගොනුව වෙනස් කිරීම සහ නැවත නම් කිරීම ය file.txt.gz. මෙම හැසිරීම වෙනුවට දැනට පවතින ගොනුවට අමතරව මෙම නව සම්පීඩිත ගොනුව ලබා ගැනීමට මම කැමතියි file.txt. දැනට මම එය කිරීමට පහත විධානය භාවිතා කරමි

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

එය ක්‍රියාත්මක වන නමුත් එවැනි පොදු කාර්යයක් කිරීමට පහසු විසඳුමක් නැත්තේ මන්දැයි මම කල්පනා කරමි. සමහර විට මට එය කිරීමේ විකල්පය මග හැරී ඇත්ද?


3
මෙයට හේතුව, gzip විසින් ලබා දී ඇති ගොනුව සම්පීඩනය කර නව ගොනුවක් නිර්මාණය කිරීමයි. සම්පීඩනය යනු මුල් ගොනුව මිරිකා එය නව එකක් සමඟ ප්‍රතිස්ථාපනය කිරීමයි. ඔබගේ "-c" විකල්පය පැහැදිලිවම gzip ට වෙනත් නමකින් සුරැකීමට පවසයි. එය ක්‍රියාත්මක වන්නේ එබැවිනි
SHW

HSHW මට ඔබේ අදහස ලැබුනේ නැද්ද ...?
මැනුවෙල් සෙල්වා

Man මැනුවෙල්සෙල්වා මුල් ගොනුව සම්පීඩනය කළ පසු, එය තවදුරටත් අවශ්‍ය නොවේ, මම හිතන්නේ එය නිර්මාණයයි.
ඩේසි

2
වෙනත් යුනික්ස් මෙවලමක් මට එහා ගිය විට gzip / gunzip පෙරනිමියෙන් මෙය කරන්නේ ඇයි?
මාටීන් උල්හාක්

Answers:


254

GNU gzip1.6 හෝ ඊට වැඩි, FreeBSD සහ ව්‍යුත්පන්නයන් හෝ NetBSD හි මෑත සංස්කරණ සඳහා, don_cristi ගේ පිළිතුර බලන්න .

ඕනෑම අනුවාදයක් සමඟ, ඔබට පහත පරිදි ෂෙල් යළි-යොමුවීම් භාවිතා කළ හැකිය:

gzip < file > file.gz

කිසිදු තර්කයක් ලබා නොදුන් විට, gzipඑහි සම්මත ආදානය කියවා, එය සම්පීඩනය කර සම්පීඩිත අනුවාදය එහි සම්මත නිමැවුමට ලියයි. ප්රසාද ලෙස, සිප්පි කටු redirections භාවිත කරන විට, ඔබ කැඳවනු ගොනු ගැන කරදර වෙන්න ඕනේ නැහැ "--help"හෝ "-"(අග එක් තවමත් ප්රශ්නයක් වීම බව gzip -c --).

තවත් වාසියක් gzip -c file > file.gzනම් fileවිවෘත කළ නොහැකි නම්, හිස් තැනීමකින් තොරව file.gz(හෝ පවතින දේ නැවත ලිවීමෙන් file.gz) සහ gzipකිසිසේත් ක්‍රියාත්මක නොවී විධානය අසමත් වීමයි.

gzip -kකෙසේ වෙතත් සාපේක්ෂව සැලකිය යුතු වෙනසක් නම්, fileපාර-දත්ත (හිමිකාරිත්වය, අවසරයන්, වෙනස් කිරීමේ කාලය, සම්පීඩිත ගොනුවේ නම) පිටපත් කිරීමට කිසිදු උත්සාහයක් නොගැනීමයි file.gz.

එසේම file.gzදැනටමත් තිබේ නම්, ඔබ noclobberඔබේ කවචයේ ඇති විකල්පය සක්‍රිය කර නොමැති නම් එය නිහ ly ව එය අභිබවා යනු ඇත ( set -o noclobberඋදාහරණයක් ලෙස POSIX shells සමඟ).


4
දැන් මෙය OP හි ප්‍රශ්නයේ විශේෂතා ආමන්ත්‍රණය කරන අතර "මුල් ගොනුව තබා ගැනීමට gzip ට පවසන්නේ කෙසේද" යන පොදු ප්‍රශ්නයට පිළිතුරු සපයයි. වඩා පහසු සහ වඩා ප්‍රයෝජනවත් -c.
codewaggle

8
<සහ> ඇත්ත වශයෙන්ම විධානයට ටයිප් කළ යුතු බවත්, ගොනු නාමය සඳහා ස්ථාන දරන්නෙකු නියෝජනය නොකරන බවත් සලකන්න
ගෞරව් ගුප්තා

1
මෙම මොකක්ද -kවිකල්පය? මෑන් පිටුවල එය සොයාගත නොහැකි විය, උදා: මෙම අනුවාදය මෙහි linux.die.net/man/1/gzip . එසේම, gzip ගොනුවේ පාර-දත්ත පෙරනිමියෙන් පිටපත් කරන බවක් පෙනේ.
flow2k

1
@ flow2k, එය don_cristi ගේ පිළිතුරට සබැඳිය.
ස්ටෙෆාන් චසෙලාස්

අහ්, මම එය මගේ මැකෝස් මත දකින නමුත් එය නරකයි එය RHEL හෝ උබුන්ටු මත නොවේ. ස්තූතියි.
flow2k

150

මෑතකදී (2013 ජුනි) නිකුත් කරන ලද "xz, lzip සහ bzip2 වැනි මෙවලම් සමඟ අනුකූල වීම සඳහා --keep (-k) විකල්පය පිළිගනී. මෙම විකල්පය සමඟ gzip සම්පීඩනය කිරීමේදී හෝ විසංයෝජනය කිරීමේදී නම් කරන ලද ආදාන ගොනු ඉවත් නොකරයි" .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 දී FreeBSD 7.0 හි) FreeBSD ක්‍රියාත්මක කිරීමේදී අනුකූලතාව සඳහා ය bzip2. එය gzipපදනම් වී ඇත්තේ gzipNetBSD විසින් GNU නැවත ලිවීම මත ය . මෙම -kවිකල්පය අවසානයේදී එය 2010 දී නැවත NetBSD වෙත ගෙන එන ලදි .


12
ගීස්. RHEL6 පැමිණෙන්නේ zip 1.3.12 පාදම සමඟ පමණි ...
නිකලස් ටොලි කොට්‍රෙල්

මෙය ක්‍රියාත්මක වන්නේ මැක් / ඕඑස් එක්ස් :) (එය බීඑස්ඩී ය)
පෝල්

> = 1.6 භාවිතා නොකරන බොහෝ සම්මත ඩිස්ට්‍රෝ තිබේද? පිළිතුර යාවත්කාලීන කිරීම අවශ්‍ය දැයි කල්පනා කිරීම
මයිකල්

1
"-" යනු කුමක්ද? මම හිතන්නේ gzip -k "ගොනුව" හොඳින් ක්‍රියාත්මක වේ.
notilas


30

ප්‍රලේඛනයෙන් බැලූ විට ගොනුවේ පිටපතක් සෑදීමට විකල්පයක් නොමැති බව පෙනේ.

ඔබට ෂෙල් ශ්‍රිතයක් අර්ථ දැක්විය හැකිය

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

ඊළගට

gzipkeep file.txt

2
ගොනුව නම් -, ඔබ එය ඇමතිය යුතු බව සලකන්න gzipkeep ./-.
ස්ටෙෆාන් චසෙලාස්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.