Với một trình khởi chạy cho một ứng dụng thiết bị đầu cuối, làm thế nào tôi có thể giữ thiết bị đầu cuối mở sau khi chương trình hoàn tất?


24

Tôi có một lệnh thiết bị đầu cuối tôi chạy từ một trình khởi chạy ứng dụng. Điều này hoạt động rất tốt, tuy nhiên đôi khi lệnh không thành công, vì vậy tôi muốn thiết bị đầu cuối mở để tôi có thể xem kết quả. Tôi có thể làm cái này như thế nào?

Câu trả lời:


23

Giả sử lệnh của bạn được gọi mycommand, tôi sẽ thay đổi trình khởi chạy của mình để chạy lệnh này:

gnome-terminal -e "mycommand|less"

Nếu bạn muốn một giải pháp lâu dài hơn, có lẽ sạch hơn, hãy mở gnome-terminal, đi đến Chỉnh sửa, Tùy chọn hồ sơ và nhấp vào tab Tiêu đề và Lệnh. Thay đổi tùy chọn "Khi lệnh thoát" thành "Giữ thiết bị đầu cuối mở".

Khi bạn thực thi các lệnh, nó sẽ để thiết bị đầu cuối mở khi có thứ gì đó chạy.

Chỉnh sửa: Nếu bạn không thực sự quan tâm đến thiết bị đầu cuối, bạn chỉ có thể sử dụng cờ giữ của xterm:

xterm -e "mycommand" hold

7
Để giữ cho thiết bị đầu cuối mặc định 'khi lệnh thoát', tôi khuyên bạn nên tạo một cấu hình thiết bị đầu cuối mới, đặt nó ở trạng thái mở sau khi thoát lệnh và chuyển --tab-with-profile=PROFILENAMEtùy chọn gnome-terminal . Bạn có thể có nhiều hồ sơ cho các bahaviours khác nhau theo cách này :-)
đảo ngược

1
xterm -hold -e mycommand

8

Trình khởi chạy của bạn đang chạy một kịch bản phải không?

Vào cuối tập lệnh của bạn thêm

read -p "Press any key to exit > " -n1 junk
echo 

Sau đó, kịch bản của bạn sẽ đợi cho đến khi bạn chọn kết thúc nó.


1
+1 và chỉ hiển thị lời nhắc nếu lệnh không thành công (trả về mã thoát không bằng 0) người ta có thể làmcommand || read -n1 -p "Command failed. Press any key to exit..."
Jukka Matilainen

8

Trong phím tắt .desktop của bạn, sử dụng cái này

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

Sau khi tập lệnh của bạn kết thúc, quy trình Bash sẽ tự thay thế bằng một lời gọi mới của chính nó.

Nếu bạn cần chuyển các đối số được trích dẫn vào tập lệnh của mình, bạn phải thoát các trích dẫn:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

Một cách tiếp cận hơi khác với các câu trả lời khác: chạy lệnh của bạn và nếu thất bại, sau đó sinh ra một vỏ. Bằng cách này, bạn không cần phải mở thiết bị đầu cuối (không phân biệt thành công hay thất bại của lệnh) và bạn có thể thấy lớp vỏ đó đặc biệt hữu ích khi thất bại. Để đóng nó, chỉ cần sử dụng Ctrl-D (EOF), "exit", Alt-F4 (hoặc bất cứ điều gì trình quản lý cửa sổ của bạn sử dụng để đóng các cửa sổ), v.v.

thành công hay vỏ

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Đặt tệp này ở đâu đó, chẳng hạn như ~ / bin, sau đó sử dụng "thành công hoặc trình bao lệnh ban đầu của bạn" trong trình khởi chạy của bạn.


0

Câu trả lời này cho câu trả lời tốt nhất mà tôi đã thấy cho đến nay để làm những gì bạn muốn. Họ khuyên bạn nên tạo một tập lệnh với các lệnh để thực thi và sử dụng nó với tham số --init-file (cụ thể là bash, nhưng bạn có thể làm tương tự cho csh / tcsh / zsh, v.v.):

#!/bin/bash --init-file
commands to run

... và thực hiện nó như:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

0

Sử dụng watchlệnh.

Định dạng: watch -n60 myCommandhoặcwatch -n60 "my command string"

  • các -nquy định số giây chờ giữa các lần gọi myCommand ; ví dụ: lệnh trên sẽ gọi myCommand cứ sau 60 giây, mãi mãi.
  • Nếu lệnh có nhiều từ, hãy đặt nó trong dấu ngoặc kép : "my command string".

Giả sử bạn muốn Trình khởi chạy hiển thị mức sử dụng đĩa và vẫn mở để người đọc xem. Tôi chỉ đơn giản là sử dụng lệnh này bên trong Trình khởi chạy :
watch -n60 "df -h", df -hgiờ sẽ gọi 60 giây một lần.

Tôi thích điều này hơn câu trả lời được chấp nhận gnome-terminal -e "mycommand|less"bởi vì tôi đang chạy Xubfox, sử dụng một thiết bị đầu cuối khác theo mặc định.


0

Hãy thử nhấp chuột phải vào trình khởi chạy và nhập thuộc tính.

Cần có một tùy chọn để giữ cho cửa sổ terminal mở nhập mô tả hình ảnh ở đây

Trong tệp .desktop, cần có mục X-KeepTerminal=true

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.