Çıkışı terminal genişliğine kesmek için kullanılır mı?


12

Ben yaparken

ps aux

Çıktı, terminalimin genişliğine göre güzelce kesiliyor, böylece uzun süreç açıklamaları birden fazla satır almıyor. Ancak, başka bir şeye boru yaparsam, uzun çizgiler geri döner.

Bunun artık uygun bir davranış olduğunu anlıyorum, çünkü ps artık tty'ye çıktı vermiyor ve tüm çıktılar işlem için çok önemli olabilir. İstediğim şey, işim bittiğinde çıktıyı kesecek başka bir araç .

Böyle bir şey yapabilmek istiyorum:

ps aux | grep -v 'www-data' | nowrap  

nowraparadığım hayali araçtır. Uzun çizgilerin kırpılmasını ve taşmamasını sağlayacaktır.

Böyle bir şey var mı?

Yanıtlar:


15

cutÇıkışı dilimlemek için komutu kullanabilirsiniz . Örneğin:

ps aux | grep -v 'www-data' | cut -c-80

Bu, her satırın yalnızca ilk 80 karakterini tutacaktır. Elbette bunu istediğiniz genişliğe ayarlayabilirsiniz.

Bash komut satırını kullanıyorsanız, bunu yapabilirsiniz:

ps aux | grep -v 'www-data' | cut -c-$COLUMNS

Çıktının sekmeleri varsa, genişlik doğru hesaplanamayabilir. expandsekmeleri boşluklara dönüştürebilir:

ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS

1
... ve çıktınızın grep (benim yaptığım gibi) ile renklendirilmesini istiyorsanız, cutönce siz grepsonra da.
DerMike

Ve ~ / .bash_aliases dosyama bir takma ad ekledim: alias cutt = 'cut -c - $ COLUMNS'. Şimdi sadece kesmek için boru olabilir ...
Samuel Lampa

1
Çıktıda sekmeler varsa bu yanlış davranır. Herhangi bir öneri? Bir seçenek önce sekmeleri boşluklara dönüştürmektir, ancak sekmeleri boru hattında daha sonra kullanmak üzere korumak istiyorsak, bundan kaçınmak güzel olurdu.
Aaron McDaid

2
expandCevabı eklemek için buldum ve düzenledim. Sekmeyi düzeltir
Aaron McDaid

3

Tuşunu kullanarak çıktıyı kırpabilirsiniz cut. Örneğin

ps aux | grep -v 'www-verileri' | cut -c1 - $ {COLUMNS}

Burada ${COLUMNS}terminalin geçerli genişliğini sağlar. resizeKomut, mevcut genişlik yeniden üretmek için kullanılabilir:

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

Bunu otomatikleştirmek istiyorsanız, bunu bir komut dosyasında toplayabilirsiniz nowrap:

#!/bin/bash

eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -

2

Ve nagülün söylediklerine ek olarak, bash'da da kullanabilirsiniz:

tput cols

genişliği almak için:

COLUMNS = $ (tput sütunu)

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.