ใช้สำหรับตัดแต่งเอาต์พุตให้มีความกว้างเทอร์มินัลหรือไม่


12

เมื่อฉันทำ

ps aux

เอาท์พุทได้รับการตัดแต่งอย่างดีถึงความกว้างของเทอร์มินัลของฉันเพื่อให้คำอธิบายกระบวนการที่ยาวนานไม่ใช้มากกว่าหนึ่งบรรทัด อย่างไรก็ตามถ้าฉันสอดมันเข้าไปในสิ่งอื่นเส้นยาว ๆ จะกลับมา

ฉันรู้ว่านี่เป็นพฤติกรรมที่เหมาะสมเนื่องจาก ps ไม่ส่งออกไปยัง tty อีกต่อไปและเอาต์พุตทั้งหมดอาจมีความสำคัญสำหรับการประมวลผล สิ่งที่ฉันต้องการคือการใช้งานอื่นที่จะครอบตัดเอาท์พุทกลับมาเมื่อฉันทำเสร็จแล้ว

ฉันต้องการที่จะทำอะไรเช่นนี้:

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

nowrapเป็นเครื่องมือจินตภาพที่ฉันกำลังมองหา มันจะทำให้แน่ใจว่าเส้นที่ยาวถูกตัดและไม่ล้น

มีอะไรแบบนี้เหรอ?

คำตอบ:


15

คุณสามารถใช้cutคำสั่งเพื่อตัดเอาท์พุท ตัวอย่างเช่น:

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

สิ่งนี้จะเก็บเฉพาะ 80 ตัวอักษรแรกของแต่ละบรรทัด แน่นอนคุณสามารถกำหนดความกว้างที่คุณต้องการ

หากใช้ bash commandline คุณสามารถทำได้:

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

หากผลลัพธ์มีแท็บความกว้างอาจคำนวณได้ไม่ถูกต้อง expandสามารถเปลี่ยนแท็บให้เป็นช่องว่างได้:

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

1
... และถ้าคุณต้องการส่งออกของคุณสีโดย grep (ที่ผมทำ) คุณcutเป็นครั้งแรกและgrepจากนั้น
DerMike

และฉันได้เพิ่มนามแฝงในไฟล์ ~ / .bash_aliases ของฉัน: alias cutt = 'cut -c - $ COLUMNS' ตอนนี้ฉันสามารถไปต่อเพื่อตัด ...
ซามูเอลแลมปา

1
ซึ่งจะทำงานผิดปกติหากมีแท็บอยู่ในเอาต์พุต ข้อเสนอแนะใด ๆ ทางเลือกหนึ่งคือการแปลงแท็บเป็นช่องว่างก่อน แต่มันก็เป็นการดีที่จะหลีกเลี่ยงกรณีนี้ในกรณีที่เราต้องการรักษาแท็บไว้ในภายหลังในไปป์ไลน์
Aaron McDaid

2
ฉันพบexpandและแก้ไขคำตอบเพื่อรวมไว้ แก้ไขสำหรับแท็บ
Aaron McDaid

3

cutคุณสามารถตัดการส่งออกโดยใช้ เช่น

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

โดยที่${COLUMNS}ให้ความกว้างปัจจุบันของเทอร์มินัล resizeคำสั่งสามารถนำมาใช้อีกครั้งสร้างความกว้างปัจจุบัน:

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

คุณสามารถทำได้ถ้าคุณต้องการทำให้สิ่งนี้เป็นแบบอัตโนมัติห่อสิ่งนี้ไว้ในสคริปต์nowrap:

#!/bin/bash

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

2

และนอกจากสิ่งที่นากูลพูดไว้คุณสามารถใช้ในการทุบตี:

tput cols

เพื่อรับความกว้าง:

COLUMNS = $ (tput cols)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.