Viết lệnh trong một thiết bị đầu cuối, xem kết quả trên một thiết bị khác


35

Tôi muốn chạy một lệnh foo trên một thiết bị đầu cuối và chuyển kết quả sang thiết bị đầu cuối khác. Có khả năng làm cái này không ?


4
Đồng thời nhìn vào tmuxmàn hình , cả hai đều cho phép bạn tiếp quản, nhân bản hoặc chỉ thực hiện các lệnh trên, các phiên khác.
Kevin

Câu trả lời:


46

Vâng, nó là. Một bức tranh đáng giá ngàn lời nói:

thiết bị đầu cuối của radu

Vì vậy, bạn phải chuyển hướng đầu ra của lệnh bằng cách sử dụng >toán tử /dev/pts/#. Bạn có thể tìm thấy #bằng cách sử dụng whohoặc wlệnh. Nếu bạn muốn chuyển hướng và các lỗi, sử dụng:

<command> >& /dev/pts/#

cảm ơn. nhưng nếu thiết bị đầu cuối khác không tồn tại. chúng ta nên làm gì Hoặc tốt hơn để nói vượt qua nó để mới hơn?
Mohammad Reza Rezwani

5
Có lẽ bạn sẽ cần một tập lệnh để làm điều đó: tập lệnh sẽ lấy làm đối số lệnh của bạn sau đó sẽ mở một tập lệnh mới gnome-terminalvà phát hiện tty (sử dụng ttylệnh) của thiết bị đầu cuối mới và cuối cùng gửi đầu ra cho nó.
Radu Rădeanu

8

Một cái gì đó như thế này cho bạn $HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

Điều này sẽ chạy một lệnh và hiển thị kết quả trên một cửa sổ đầu cuối mới.

Ví dụ:

ng ls -l
ng echo foo

Chỉnh sửa: Để xem xét các bí danh từ việc $HOME/.bashrcsử dụng này thay thế:

ng() { gnome-terminal -x bash -ic "$*; bash"; }

sau đó đầu ra lsphải được tô màu (nhờ Radu Rădeanu cho gợi ý này ).


Điều này sẽ chạy lệnh trực tiếp trong thiết bị đầu cuối mới.
Radu Rădeanu

Có nhưng lợi thế để chạy nó đầu tiên trong thiết bị đầu cuối cũ là gì?
TuKsn

Không có lợi thế ... nhưng thực tế câu trả lời này cho nhận xét này .
Radu Rădeanu

4
Bạn sẽ hiểu nếu bạn sẽ chạy type lsvà sau đó ng type ls:)
Radu Rădeanu

1
nếu hàm ghi trong một dòng trong bashrc, có thể cần một dấu chấm phẩy để kết thúc nó, hoặc bạn sẽ gặp lỗi "kết thúc không mong muốn của tệp". vì vậy ng() { gnome-terminal -x sh -c "$*; bash" ;}nên tốt hơn Và nếu bạn đang sử dụng xfce (xfce4-terminal làm trình giả lập mặc định): ng() { xfce4-terminal -x sh -c "$*; bash" ;}hoặc bạn có thể chỉ cần chạy bởi bất kỳ trình giả lập mặc định nàong() { x-terminal-emulator -x sh -c "$*; bash";}
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.