Sử dụng văn bản từ đầu ra của các lệnh trước


16

EDIT Tháng 4, 2015: Nếu bạn có câu hỏi tương tự, tôi cũng khuyên bạn nên kiểm tra http://xiki.org/


Tôi biết đây không phải là cách các thiết bị đầu cuối hoạt động, nhưng tôi thấy mình thường mong muốn có một cách dễ dàng sử dụng văn bản (sao chép nó, sửa đổi nó, v.v.) đã có trong lịch sử cửa sổ đầu cuối của tôi từ một số đầu ra lệnh trước đó.

Tôi đã tưởng tượng nó như thế này:

Tôi đang ở trong bash shell của mình để nhập lệnh và tôi nhận ra rằng tôi cần phải nhập một cái gì đó đã có trên màn hình một vài dòng ở trên. Tôi có thể với lấy con chuột và chọn nó, nhưng tôi ghét điều đó. Điều tôi thực sự mong muốn vào lúc này là toàn bộ thiết bị đầu cuối của tôi đã trở thành một bộ đệm Vim khổng lồ, tất cả đều là: lời nhắc, các lệnh tôi đã nhập và đầu ra từ các lệnh đó. Mọi điều. Và sau đó tôi có thể nhảy một vài dòng lên, có thể chỉnh sửa một chút và kéo một số văn bản. Sau đó, quay trở lại chế độ bash shell và dán bất cứ thứ gì tôi đã kéo vào dòng lệnh hiện tại.

Tôi biết có một số tùy chọn:

  • Đương nhiên, chuyển văn bản tôi cần trực tiếp từ đầu ra của một số lệnh sang tệp hoặc quyền của lệnh tiếp theo. Nhưng để làm được điều đó, bạn phải lập kế hoạch trước hoặc thực hiện lại lệnh từ lịch sử của mình (giả sử đầu ra sẽ không thay đổi giữa các lần gọi).

  • Để với tới chuột và chọn văn bản cần sao chép. Khập khiễng, khó chịu, tôi ước tôi đã không làm điều đó, (đây không phải là trang web stackexchange của GUI, phải không? =)

  • Để sử dụng tùy chọn "Xuất văn bản dưới dạng ..." của ứng dụng Terminal (Mac OS X) của tôi và lưu văn bản đầu cuối vào một tệp. Sau đó mở tệp và làm việc với nó. Hầu như, nhưng tại sao lại trải qua bước lưu vào một tệp trên đĩa?

Vì vậy, câu hỏi là: Bạn làm gì trong tình huống này? Có bất kỳ thủ thuật, công cụ, tính năng shell nào có thể hữu ích trong kịch bản này không? Bạn chỉ cần từ chức để sử dụng chuột hoặc gõ lại bất cứ điều gì bạn cần gõ?

Có thể vấn đề là tôi không làm mọi thứ 'theo cách unix', nhưng xin chào, đây là năm 2010 và tôi có thể dễ dàng sao chép một số văn bản cách con trỏ của tôi vài dòng không?



Câu trả lời:


4

Bạn có thể sử dụng tập lệnh (sử dụng -f để đảm bảo rằng nó sẽ được xóa mỗi lần) và bạn có thể có tất cả đầu ra trong một tệp.

Sử dụng bộ ghép kênh đầu cuối (màn hình, tmux, v.v.). Chẳng hạn, đối với màn hình http://web.mit.edu/gnu/doc/html/screen_11.html#

Lệnh: sao chép Nhập chế độ sao chép / cuộn lại. Điều này cho phép bạn sao chép văn bản từ cửa sổ hiện tại và lịch sử của nó vào bộ đệm dán. Trong chế độ này, trình chỉnh sửa toàn màn hình giống như vi đang hoạt động, với các điều khiển như được nêu dưới đây.

Các bộ ghép kênh đầu cuối khác chắc chắn có khả năng tiên tiến hơn.


Đồng ý. Tôi mới biết rằng một 'Bộ ghép kênh đầu cuối' có lẽ là thứ tôi cần. Cảm ơn. Ngoài ra, cảm ơn về gợi ý lệnh 'script'.
Sergio Acosta

5

Trong tmux (bộ ghép kênh đầu cuối), bạn có thể nhấn Ctrl + A- [để chuyển sang chế độ bộ đệm Vi nơi bạn có thể điều hướng xung quanh màn hình, cuộn qua lại bộ đệm, sao chép văn bản, v.v ... Phím tắt mặc định thực sự là Ctrl + B- [nhưng điều đó rõ ràng có nghĩa là được cấu hình lại. Ngoài ra, chế độ bộ đệm mặc định là Emacs nhưng bạn có thể cấu hình nó thành Vi.

Kiểm tra tmux, nó thực sự là một bộ ghép kênh thiết bị đầu cuối hiện đại tuyệt vời. Bên cạnh việc làm việc với bộ đệm, bạn có thể chia màn hình trong nhiều cửa sổ, kết nối với cùng một phiên từ nhiều thiết bị đầu cuối, v.v ... Để thuận tiện nhất, bạn thậm chí có thể biến nó thành vỏ đăng nhập nếu bạn cho nó biết vỏ thực sự của bạn là gì.

Trên OpenBSD tmux thậm chí đã trở thành một phần của hệ thống cơ sở.

Xem trang man cho tmux để biết thêm chi tiết. Đồng thời xem ảnh chụp màn hình trên http://tmux.sourceforge.net/


tmux là tuyệt nhất!
gabe.

4

Trong emacs, Mx shell xử lý phiên bản đầu ra trước đó. Bạn có thể dễ dàng sao chép dán đầu ra lệnh trước đó hoặc bất kỳ phần nào trong bộ đệm của bạn, như bộ đệm thông thường. Tôi khá chắc chắn nên có một vim tương đương.


1
Đó là rất gần với những gì tôi muốn, nhưng tôi cần phải ở trong Emacs hoặc Vim. +1
Sergio Acosta

Vâng, nó có thể là thuật ngữ mặc định + shell của bạn. :) Sau đó, bạn sẽ sử dụng các phím điều hướng văn bản thông thường ở đó là tối thiểu. Nếu bạn đã học được nhiều khóa đặc biệt hơn, thì có thể truy cập các tính năng sau của Emacseshell .
imz - Ivan Zakharyaschev

1

Như đã đề cập ở đây, Emacs ' eshellcó thể là thuật ngữ + shell mặc định của bạn. :) Sau đó, bạn sẽ sử dụng các phím điều hướng văn bản thông thường ở đó là tối thiểu. Nếu bạn đã học được nhiều khóa đặc biệt hơn, thì eshellcó thể truy cập các tính năng sau của Emacs :



1

Hãy thử sử dụng vim làm CLI của bạn? Chỉ cần chọn đầu ra từ một vài dòng lên và dẫn nó qua:!.


Tôi xin lỗi, tôi không theo dõi bạn. Bạn có thể giải thích, xin vui lòng?
roaima
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.