Satır sayısına bağlı olarak "kedi" veya "daha az" nasıl kullanılır?


12

Dosyaların içeriğine bakarken, dosyaları ekran boyutunu aşan catdosyaları otomatik olarak kısaltmak istiyorum less. Ben bir şey kullanabilirsiniz wc -l, ama belki de mevcut pencere boyutu / mevcut satır miktarı dikkate daha iyi bir yolu var mı?


1
Birçok araç bunu yaparken, beklentiyi bozduğunu unutmayın. Yani kullanıcı ne olacağını önceden bilemez. Mesela bu sinir bozucu buluyorum git logki bu da tam olarak bunu yapıyor. Ne alacağınızı asla bilemezsiniz (vurmanız gerekiyor qmu?).
bitmask

4
NOT: Genel olarak catdosyaları görüntülemek için kullanmaktan kaçınmalısınız . Genellikle catbir dosyanın içeriğini stdout'a göndermek için kullanmalısınız , böylece dosya başka bir işleme geçirilebilir. Görüntüleme için kullanmaktan kaçınmanın nedeni cat, ham baytları terminale göndermesidir, bu da beklenmedik terminal komutlarının yürütülmesine neden olabilir (örn., Bazı kullanıcılar terminal klavyesini devre dışı bırakmak için doğru baytları içerdiğinde bazı kullanıcılar sıkıştı) . Genellikle less, terminal tarafından yorumlanmamaları için özel karakterleri görüntülemek üzere biçimlendirecek bir çağrı cihazı veya bir düzenleyici kullanmalısınız .
Chris Page

2
Dosya içeriklerini doğrudan terminalde görüntülemek cat -viçin cat'i kullanacaksanız, en azından özel karakterlerden kaçması için kullanın .
Chris Page

@bitmask iyi bir nokta, bu yüzden sordum Bölünmüş ekran cating mümkün mü? Bu daha iyi bir çözüm olabilir
Tobias Kienzler

@ChrisPage Benim klavye öldürüldü, ama ben Codepage kez ... işaret için teşekkürler berbat başardı düşünüyorum değildi cat -vdışarı
Tobias Kienzler

Yanıtlar:


9

wcTabanlı kontrolü içeren formülü vermek için :

(($(wc -l<input_file)<=$(tput lines))) && echo 'will fit' || echo 'not enough'

Kullanılabilecek bir $LINESkabuk değişkeni vardır:

(($(wc -l<input_file)<=LINES)) && echo 'will fit' || echo 'not enough'

Ancak $LINESyalnızca komut isteminde güncelleştirilir. Ne demek istediğimi anlamak için, bunu çalıştırın ve sırasında terminal penceresini yeniden boyutlandırın sleep:

( sleep 3; echo $LINES; tput lines )

Teşekkürler, bu, lessörneğin ekranın 2 / 3'ü tarafından kullanıldıysa kullanılmak üzere ayarlanabilmesi avantajına sahiptir cat.
Tobias Kienzler

20

Belki 'less -F file_to_read' seçenek: pencere tüm dosyayı görüntülemek için yeterliyse daha az çıkar ve durum böyle değilse çağrı cihazını bekler


kulağa hoş geliyor, ancak bu durumda hiçbir şey çıkmıyor ve çıkış kodları her iki durumda da aynı
Tobias Kienzler

Sadece 'az -F / etc / passwd' deniyorum ve dosyayı doğru (çağrı cihazı ile veya çağrı cihazı olmadan) görüntüler. Haklısınız, her iki durumda da dönüş kodu 0'dır.
Dom

11
Bu komut istendiği gibi çalışır, ancak küçük bir aksaklıkla: dosyayı görüntüledikten sonra ekranı temizler. -XSeçeneğin eklenmesi temizlemeyi durduracağından kısa dosyalar olduğu gibi görüntülenecektir cat. Ne yazık ki, -Xuzun, kaydırılan dosyaları görüntüledikten sonra ekran temizlenmez.
manatwork

1
@manatwork bu harika, teşekkürler. Ekranı temizlemek değil (değil) neler olacağını o yıllardan beri, aslında tamam catsıra çağrıldı
Tobias Kienzler
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.