2011-12-01 44 views
5

Tôi đang tìm cách giới hạn số lượng đầu ra được tạo bởi tất cả các chương trình dòng lệnh trong Linux, và tốt nhất là hãy cho tôi biết khi nào nó bị giới hạn.Giới hạn đầu ra của tất cả các lệnh Linux

Tôi đang làm việc trên máy chủ có độ trễ trên màn hình. Thỉnh thoảng tôi sẽ vô tình chạy một lệnh xuất ra một lượng lớn văn bản tới thiết bị đầu cuối, chẳng hạn như cat trên một tệp lớn hoặc ls trên một thư mục có nhiều tệp. Sau đó tôi phải đợi một lúc để tất cả đầu ra được in tới thiết bị đầu cuối.

Vì vậy, có cách tự động đưa tất cả đầu ra vào một lệnh như head hoặc wc để ngăn quá nhiều đầu ra phải được in tới thiết bị đầu cuối không?

Trả lời

3

Tôi không biết về trường hợp chung, nhưng đối với mỗi lệnh nổi tiếng (cat, ls, tìm thấy?) bạn có thể làm như sau:

  • hardlink một bản sao cho tiện ích hiện
  • viết một hàm bash nhỏ gọi là tiện ích và đường ống đến đầu (hoặc wc hoặc bất kỳ thứ gì)
  • bí danh tên của tiện ích để gọi hàm của bạn.

Vì vậy, cùng những dòng này (hoàn toàn chưa được kiểm tra):

$ ln `which cat` ~/bin/old_cat 

function trunc_cat() { 
    `old_cat [email protected] | head -n 100` 
} 

alias cat=trunc_cat 
+0

vâng tôi đã nghĩ về một cái gì đó như thế, nhưng đã hy vọng cho một cái gì đó tổng quát hơn – daniel

0

Giả sử bạn đang làm việc trên một kết nối mạng, như ssh, vào một máy chủ từ xa sau đó thử đường ống đầu ra của lệnh để less. Bằng cách đó bạn có thể quản lý và điều hướng đầu ra từ chương trình trên máy chủ tốt hơn. Sử dụng 'j' và 'k' để di chuyển lên và xuống trên mỗi dòng và 'ctrl-u' và 'ctrl-d' để di chuyển 1/2 trang lên và xuống. Khi bạn thực hiện điều này chỉ văn bản có liên quan (tức là nội dung phù hợp trên màn hình) sẽ được truyền qua mạng.

+0

Tôi đã tìm kiếm một cái gì đó tự động hơn phải luôn luôn đường ống đến ít hơn. Điều này cũng có vấn đề mở 'less' cho một lượng nhỏ đầu ra và mất colourisation cho ví dụ. 'ls'. – daniel

+0

sử dụng ít -R cho màu sắc. – sashang

1

Làm bí danh tất cả các lệnh của bạn sẽ là một khởi đầu tốt. Một cái gì đó như

alias lm="ls -al | more" 
alias cam="cat [email protected] | more" 
1

Có thể sử dụng screen có thể giúp ích?

+0

Tôi sử dụng byobu, tôi vẫn phải đợi cho tất cả đầu ra hiển thị. Có cái gì trong này tôi không biết điều đó sẽ giúp đỡ? – daniel

+0

Nhấn Ctrl + A Esc và thiết bị đầu cuối sẽ đóng băng tại vị trí hiện tại. Bạn có thể bỏ qua đến cuối bằng Esc>. –

1

điều này khiến tôi nghĩ đến việc hoàn thành bash.

Như complete lệnh trong bash cho phép bạn chỉ định xử lý khi một chương trình không được tìm thấy,

gì về viết handler của riêng bạn và rõ ràng $PATH, để thực hiện tất cả các lệnh với chuyển hướng đến một ống lọc?

#Không tự mình thử.

Các vấn đề liên quan