tar cvf veya tar -cvf?


24

Seçenekler için '-' kullanmadan tar kullanmayı öğrendim, tar cvfz dir.tar.gz Directory/ancak son zamanlarda biraz farklı tar -czvfsözdizimine rastladım (bence 'f' bu durumda son seçenek olmalı).

Her ikisi de linux ve Mac OS'ta çalışır. Unix lezzetlerinde daha taşınabilir olan '-' olmadan ou ile önerilen bir sözdizimi var mı?



-fSon seçeneğin olmasının nedeni , bir argüman alması ve bu argümana seçeneğe dokunarak verilebilmesidir. dosyaları içeren tar -cvfz dir.tar.gz Directorybir arşiv oluşturmak anlamına gelir ve . zdir.tar.gzDirectory
JoL

Yanıtlar:


27

tarseçenek sözdiziminin standartlaştırılmadığı günlerden kalma bu eski komutlardan biridir. Tüm yararlı çağrılar, tarherhangi bir dosya adı sağlamadan önce bir işlem belirtmeyi gerektirdiğinden, çoğu taruygulama ilk argümanını a ile başlamamış olsa bile bir seçenek olarak yorumlar -. Mevcut uygulamaların çoğu a -; Farkında olduğum tek istisna Minix .

POSIX ve Single Unix'in eski sürümleri işlem belirticisinden önce tarolmayan bir komut içeriyordu -. Tek Unix v2 hem geleneksel arşivleme vardı cpiove tarancak mevcut uygulamalar çok farklı oldukları için standartlar yeni bir komut, tanıtılan bu yüzden çok az bayraklar, standardize edilebilir paxberi sadece standart arşivleyicisidir, Tek Unix v3 . Standart uyumluluk istiyorsanız, kullanın pax, ancak birçok Linux dağıtımının bunu temel kurulumlarına dahil etmediğini paxve Minix'te bulunmadığını unutmayın . Pratikte taşınabilirlik istiyorsanız, kullanın tar cf filename.tar.



1
Ayrıca bir Linux dağıtımı içeriyorsa pax, genellikle birçok hata nedeniyle kaçınılması gereken en kötü bilinen pax uygulaması (GNU pax) ile birlikte geldiğini unutmayın .
schily

Ayrıca, pskomut aynı davranışa sahiptir -, seçenekleri için ihmal edebilirsiniz .
Perşembe

1
@perror Bu yanlış. Pek çok sürümü psihmal etmenize izin vermez -. Linux versiyonunda ve seçeneğinde olmayan seçenekler bulunur -, ancak çoğunun farklı anlamları vardır (BSD - System V uyumluluğu).
Gilles 'SO- kötülük olmayı'

1
Doğru, çoğu zaman sadece kullanırım ps aux... Yani, (kısmen) yanlış olabilirim. Üzgünüm.
Perşembe

13

Bir dinozor olabilirim, ancak alışkanlıkla "-cvf" yerine "cvf" kullanmanın muhtemelen daha taşınabilir olduğunu düşünüyorum. Çoğu Linux dağıtımının GNU tar kullandığını tahmin ediyorum ve * BSD'lerin de yaptığını tahmin ediyorum, ancak eski SysV tar'ı kullanan ve hala seçeneklerinde '-' kullanmamızı gerektiren özel Unix'ler bulacaksınız. .

"-Cvf" (ya da "-xf" ya da her neyse) kullanmıyorum ve kanama kenarı Arch linux ile bile sorunum yok.

Ve bir not olarak, Sun standartlarında "jar" komut seçeneklerini '-' de veya olmadan da kullanabileceğinizi düşünüyorum.


Katranın bilgi sayfası (üç seçenek belirleme stilinden açıkça anlaşılıyorsa) bilgi sayfasının sadece uyumluluk için saklandığını ve hiçbir eski muhabbeti olmayan bir sürü seçenek olduğunu söylese bile cevabınıza katılıyorum.
David Costa

1
Yanılıyorsun: AT&T UNIX'te tar, sahip olmaması için yazılmıştı - ama kabul ediyor - ve atlıyor. Katranı çağırmanın tek taşınabilir yolu, onu olmadan çağırmaktır - ve eğer hiç bir şeyi kabul etmeyen bir "katran" uygulaması bulursanız, bu katran değildir.
schily

3

UNIX'te mevcut seçenek standardına uymayan az sayıda program vardır.

Birincisi dd, ancak dd, IBM anabilgisayar programından DDR(Disk Dökümü ve Geri Yüklemesi) elde edildi.

Biri arve diğeri tar. Bilgilerime göre, tar, ar'ya benzer olmak istedi.

Tüm katran uygulamaları - olmadan çalışır ve hiçbir kullanışlı uygulama - gerektirir. Bu nedenle, taşınabilir komut dosyaları yazmak istiyorsanız, SUSv2 standardını kontrol edin ve yalnızca SUSv2 ile uyumlu bir komut satırı kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.