Neden cp'nin wget gibi bir ilerleme çubuğu yok?


55

Lütfen nasıl yapıldığını sormadığımı unutmayın . Zaten pvve gibi seçenekleri biliyorum rsync -P.

Ben sormak istiyorum neden vermez cpbir ilerleme çubuğu uygulamak en az bir bayrak olarak,?


7
Peki ya "Yazar buna ihtiyaç duymuyor"?
phunehehe

7
Bilmiyor pvve bilmeyen okuyucular için rsync -Pbkz. İlerleme çubuğuyla dosyaları taşıma ( yanıtlardan biri bir ilerleme göstergesi cpverecek cp -gşekilde bir yamayı işaret eder ).
Gilles 'SO- kötü olmayı'

2
Sorulacak daha iyi bir yer yeni (2010'dan beri) coreutils kullanıcı e-posta listesinde olacaktır.
Faheem Mitha

Yanıtlar:


57

Unix araçlarındaki gelenek, yalnızca bir şeyler ters gittiğinde mesajları göstermektir. Bunun hem tasarım hem de pratik nedenlerden dolayı olduğunu düşünüyorum. Tasarım, bir şeyler ters gittiğinde onu açıklığa kavuşturmak için tasarlanmıştır: bir hata mesajı alırsınız ve aslında bilgilendirici olmayan mesajlarda boğulmaz. Pratik sebep, unix'in ilk günlerinde hala teleprinterler olduğudur ; yani, programların çıktısı kağıda basılır ve ilerleme çubuklarını yazdırmak istemezsiniz.

Sebep ne olursa olsun, unix dünyasında sadece faydalı mesajlar gösterme geleneği sıkıştı. Modern araçlar bazen ilerleme çubukları getirmiştir; rsync'in durumunda, ana motivasyon rsync'in genellikle ağ üzerinden gerçekleştirilmesi ve ağların yerel disklerden çok daha şanslı olması, bu yüzden ilerleme çubuğu daha kullanışlıdır. Aynı akıl yürütme wget için de geçerlidir.


6
Bu. Ve cp1970'lerin başlarına kadar gider: alabildiğiniz kadar gelenekseldir.
dmckee

3
@dmckee O zaman neden ddilerleme bildirimleri verebilir? dd1966'ya geri dönüyor (OS / 360). Kullanıcı bunları ayrıntılı olmasını isterse Unix araçları ayrıntılı olabilir, ancak ne yazık ki cp'nin ne kadar olacağını söyleyemezsiniz (yalnızca bir ek ayrıntı seviyesi vardır:) -v.
taffer

7
@taffer ddbirçok yönden tuhaftır (açıkçası, seçenek sözdizimi) çünkü unix'ten değil, bir IBM aracının klonudur. Ayrıca, çoğunlukla kasetlerdeki uzun görevler için kullanılıyordu, bu yüzden mesajları cpçoğu durumda sadece göz kırpan ve tekrar geri döndüğünüzden farklı olarak, ara vermeden geri dönmenizi söyledi.
Gilles 'SO- kötülük olmayı'

16

Unix dünyasında, her araç bir işi yapmak ve iyi yapmak için tasarlanmıştır. cpBaşka bir araç pvzaten olduğu gibi , neden ilerleme çıktısı konusunda endişeleniyorsunuz ? Aynı şekilde, neden bu kadar çok program herhangi bir sayfalandırma yapılmadan ekrana malzeme döküyor? Çünkü bu iş için zaten more(veya less) araçları var . Neden dosyaların düzenlenmesi gereken çoğu program size bir editör sunmuyor ve bunun yerine dış kaynak $EDITORkullanıyor? Çünkü bu, herkesin yapmak için tasarlandıkları bir görevi yapmasını ve kullanıcının tüm görevler için favori editörünü kullanmasını sağlar.

Teğetsel olarak, çoğu kabuk programı, çıktılarını diğer kabuk programlarına akıtmak için tasarlanmıştır. Verebilecekleri tek çıktı, zincirdeki bir sonraki komutta ayrıştırılmasında yararlı olacak şeylerdir. Gibi programlar cpkomut dosyalarında olduğu gibi bir terminalden de el ile kullanılır, bu nedenle çıktısı çıkış koduna ve başarısız ya da başarılı olan dosyaların listelerine odaklanır.

İstediğiniz efekti gerçekleştirmek için araçları bir araya getirmeyi her zaman bekleyin.


3
Yazıldığında pvne cpoldu? Bu iyi bir nokta, ancak bu durumda, cpbaşlangıçta kasıtlı olarak ilerleme çıktısı alınmadan yazıldığını, diğer araçlarla hiçbir ilgisinin olmadığını, sadece sen ve Gilles'un bahsettiği diğer nedenleri olduğunu hissediyorum.
Cascabel

1
@Jefromi: Önemli olduğundan emin değilim. Bu, cpilk kez kodlandığında neden bir yol olduğuyla ilgili tarihsel bir soru değil . Asıl soru, neden şimdi böyle . Yıllar geçti ve birisi işlevsellik ekleyebilirdi, ancak kesinlikle bunu yapmamaya karar verdi. Bu kararda diğer araçların faktörlerinin mevcudiyeti olduğuna eminim.
Caleb

3

Bu, cp'ye bir ilerleme çubuğu seçeneği eklemek için ve aleyhinde tartışmaların olduğu marjinal şeylerden biridir. Karşısındaki ana argüman, ilerlemeyi bilmek isteyeceğiniz vaktinden önce bilmemeniz olabilir. Ctrl-T / SIGINFO bu amaç için BSD'de mevcuttur ve eğer GNU / Linux platformlarında mevcutsa, cp'deki ilerleme çubuğu mantığını tetiklemek için daha fazla sebep olabilir. Bu arada, daha genel bir çözüm gibi ayrı bir araç kullanmak coreutils İlerleme Görüntüleyici ( eskiden olarak da bilinir ), sistemde herhangi bir işlem durumunu görüntülemek için kullanılır.progresscv

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.