2010-10-05 42 views
11

Tôi có chương trình tạo một số dữ liệu. Nó xuất tất cả mọi thứ trên lỗi tiêu chuẩn.Làm thế nào để đầu ra chương trình ống trong một trình soạn thảo?

Bây giờ tôi muốn chuyển hướng đầu ra đến trình soạn thảo văn bản mới được bắt đầu, vào cửa sổ chỉnh sửa chưa đặt tên chính hiển thị khi khởi động. Tôi đã thử với vim và gedit mà không thành công.

myprogram | gedit 
myprogram | gvim 

Bất kỳ ai biết về trình soạn thảo văn bản X11 có thể hỗ trợ điều này?

Trả lời

16

Nếu bạn muốn chuyển hướng stderr của chương trình của bạn vào gvim bạn có thể làm:

myprogram 2>&1 | gvim - 

và trong trường hợp nếu bạn muốn chuyển hướng stdout cho ban biên tập bạn có thể làm:

myprogram| gvim - 
+1

Có, '-' nằm trong nhiều chương trình cho STDIN/STDOUT thay vì tệp. – eumiro

+0

Nó thậm chí không phải 'stderr' mà tôi muốn. Chỉ đơn giản là 'stdout'. Làm sao tôi có thể không sử dụng tập tin '-'! Câu trả lời đơn giản là 'myprogram | gvim -'. –

2

Tôi không biết bất kỳ trình chỉnh sửa nào hỗ trợ tính năng này, nhưng việc chuyển hướng đến tệp tạm thời có thể dễ dàng hơn.

F=$(mktemp) 
myprogram >$F 
gedit $F 
rm $F 
8

Tôi đã thử điều này trong Ubuntu 12.04, nó hoạt động như mong muốn:

sudo lshw | gedit & 

Trên Ubuntu 14,04

sudo lshw | gedit - & 
+0

Thông tin bổ sung: Đây là một tính năng mới trong Gedit. Nó được giới thiệu trong phiên bản đi kèm với Gnome 3.0. Xem https://bugzilla.gnome.org/show_bug.cgi?id=121891. – Lii

+2

Tôi nghĩ bạn vẫn cần dấu gạch ngang sau gedit 'sudo lshw | gedit - & '(đã thử ubuntu 14.04 và chỉ với dấu gạch ngang hoạt động) –

5

Để làm điều này tất cả trong một phù hợp với bất kỳ trình soạn, tạo ra một tập tin tạm thời, mở nó bằng gedit, sau đó xóa nó một lần gedit có nó mở:

echo hello > temp ; gedit temp ; sleep 1 && rm temp &

Sau đây hoạt động với trình chỉnh sửa như vim, nhưng gedit, geany hoặc emacs dường như không thể mở tệp nhập chuẩn hoặc tệp tạm thời như được tạo bởi <()

vi <(echo hello)

echo hello | vi -

1
history | kate -i 

soạn thảo yêu thích của tôi :-)

Như đã nói, khi một chương trình không hỗ trợ đường ống như vậy, cách tốt nhất là sử dụng một tập tin tạm thời trong thư mục/tmp/thường bị xóa ở lần khởi động tiếp theo.

history > /tmp/bflmpsvz;mcedit /tmp/bflmpsvz 
Các vấn đề liên quan