Thêm hành vi đuôi trong đó nhập thêm dòng trống vào ít hơn


8

Tôi thích less, cái mà tôi có thể sử dụng để theo dõi nhật ký bằng +Fcờ (hoặc ShiftFphím nóng), tìm kiếm tiến và lùi, và thường di chuyển tự do qua tài liệu.

Nhưng có một điều còn thiếu less: thường thì tôi ở cuối tập tin và tôi muốn thấy những điều mới xảy ra. Trong tail -ftôi sẽ nhấn entervài lần và các dòng nhật ký mới sẽ xuất hiện tách biệt rõ ràng với các dòng cũ.

Có thể thêm điều này vào less? Làm sao?


Tôi không nghĩ bạn có thể làm điều này, mặc dù đôi khi tôi sẽ tạo ra tiếng vang -e '\ n \ n \ n \ n \ n' >> / dev / pts / 0 chẳng hạn, nó không sạch sẽ nhưng ít nhất cho phép tôi có một điểm tham chiếu nơi tôi rời đi khi tôi nhìn đi chỗ khác.
David Houde

Câu trả lời:


6

Đây không phải taillà hành vi thực sự - đó là thiết bị đầu cuối. Tail chỉ gửi một luồng đầu ra tới thiết bị xuất chuẩn, đi đến thiết bị đầu cuối của bạn và bạn đang chèn các dòng trống ở giữa đầu ra đó bằng cách nhấn enter. Bản thân Tail không thực sự chấp nhận đầu vào từ bạn. Bạn có thể nhập bất cứ thứ gì bạn muốn và điều đó cũng sẽ xuất hiện.

lesstuy nhiên, là một ứng dụng giao diện điều khiển, và nó nhận đầu vào và xử lý nó. Đó là quản lý bàn điều khiển bằng các chuỗi điều khiển đầu cuối, đó là cách bạn có thể cuộn xung quanh. Để bạn chèn các ký tự tùy ý vào luồng sẽ làm rối màn hình và dù sao đi nữa, ít sử dụng dữ liệu đầu vào của bạn để điều khiển chương trình.

Thật không may, dường như không có cách nào để đánh dấu vị trí hiện tại một cách trực quan. Tuy nhiên, đó không phải là một yêu cầu tính năng khủng khiếp và ít khi vẫn nhận được các tính năng mới.


Bạn có sẵn một liên kết để yêu cầu tính năng này cho những người ít hiểu biết hơn không?
blueFast


4

Tôi tìm thấy câu hỏi của bạn trong khi tìm kiếm câu trả lời tương tự cho chính mình.

Thất vọng vì câu trả lời được chấp nhận, tôi đã đưa ra một cách giải quyết. Điều đó ít hơn lý tưởng, nhưng nó cho phép tôi đánh dấu vị trí của mình trong nhật ký mà tôi đang theo dõi less, đó là toàn bộ vấn đề.

Tôi đã tạo một tập lệnh thực thi nhỏ (tôi gọi nó marklog) với các nội dung sau và đặt nó vào đường dẫn của tôi:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Tất nhiên, điều này chỉ hoạt động nếu bạn có quyền ghi vào tệp nhật ký - có thể là một công cụ giải quyết trong nhiều tình huống. Tôi cũng đã tạo phiên bản này mà tôi sử dụng để ghi vào các tệp nhật ký mà tôi không sở hữu (nhưng tôi có quyền truy cập sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Các kịch bản này chỉ cung cấp loại phá vỡ hình ảnh mà tôi đang tìm kiếm. Có ít nhất 3 cách bạn có thể sử dụng chúng:

  1. Tại điểm mà bạn thường nhấn enter một vài lần khi sử dụng tail -f, thay vào đó chạy marklogtừ một thiết bị đầu cuối khác (cung cấp đường dẫn đến tệp nhật ký làm đối số).

  2. Sử dụng CtrlZđể tạm dừng lessđể bạn có thể chạy tập lệnh trong cùng một cửa sổ đầu cuối, nhưng khi bạn quay lại tiền cảnh less( fgdĩ nhiên là sử dụng ), nó sẽ không còn ở chế độ 'theo dõi', vì vậy bạn sẽ cần phải nhấn ShiftFlại ...

  3. Cuối cùng - và đây có thể là cách thuận tiện nhất, vì bạn không cần nhập đường dẫn đến tệp nhật ký: Chạy marklogtrực tiếp từ lessbằng cách nhập !marklog %. Lesssẽ thay thế tên tệp hiện tại cho %. Tuy nhiên, lesssẽ không trả lời! trong khi nó ở chế độ 'theo dõi', vì vậy bạn sẽ phải nhấn CtrlCtrước để thoát chế độ theo dõi, chạy !marklog %, sau đó ShiftFlại.

Với phương pháp 3, bạn cũng nhận được phần thưởng bổ sung của lịch sử lệnh Ít hơn: Chỉ cần nhấn !và sau đó sử dụng mũi tên lên để chọn lệnh gần đây nhất (đối với tôi, luôn luôn như vậy marklog).

Hy vọng điều này sẽ giúp ai đó nhiều như đã giúp tôi.


1

Nhấn Shift+ Fở cuối tệp và ít hơn sẽ bắt đầu hoạt động như tail -f.


2
Không, nó sẽ không. Nó sẽ theo dòng mới, nhưng nó sẽ không hoạt động như tail -f. Cụ thể nó sẽ không chấp nhận nhập dưới dạng dòng mới, đó là điểm duy nhất trong câu hỏi của tôi. Ngoài ra, tôi đã đề cập Shift+Ftrong câu hỏi (với một lỗi nhỏ, tôi phải nói)
blueFast

1

Tôi không nghĩ bạn có thể làm điều này. Tôi đã sử dụng m'đánh dấu các địa điểm ưa thích và sau đó chọn lại chúng nhưng điều này không mang lại cho bạn sự tách biệt mà bạn yêu cầu. Có lẽ một cái gì đó như multitail sẽ làm những gì bạn muốn.


-1

Câu trả lời từ Lambart đưa tôi đến giải pháp yêu thích của tôi. Thx đến Lambart!

Chỉ cần xen vào chế độ theo sau ctrlcvà nhập !printf "\n\n---$(date)---\n\n" >> %. Sau đó, bạn phải nhấn entermột lần nữa và nhấn shiftfđể bắt đầu lại sau tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.