1

Я хочу открыть новый терминал, когда я ввожу пользовательскую команду в Linux. Означает пример, когда я набираю команду tcpdump в терминале, и это откроет новый сеансовый терминал для tcpdump.

Итак, во вновь открытом терминале для захвата пакета я должен написать только -i eth0 а не tcpdump -i eth0 . Новый терминал внутренне примет команду tcpdump .

Так будет ли это возможно?

3 ответа3

4

Я собираюсь предположить, что вы хотите запустить команду в новом окне терминала на вашем рабочем столе (Linux). Большинство эмуляторов терминала, кажется, имеют опцию -e для запуска команд, поэтому вы можете сделать что-то вроде этого:

urxvt -e $SHELL -c 'read -p "Options: " OPTS; tcpdump $OPTS' &

Замените urxvt на aterm , xterm , Konsole или любым другим эмулятором терминала, который вы используете.

Если вы хотите, чтобы окно оставалось открытым после завершения команды, вам нужно предпринять дополнительные шаги (для этого у urxvt есть опция -hold , но другие эмуляторы терминала этого не делают).

0

Вы можете получить хороший интерфейс интерпретатора, используя rlwrap (который вы, вероятно, можете установить через менеджер пакетов вашего дистрибутива).

while rlwrap -o -P "tcpdump " -C tcpdump sh; do :; done

Это даст вам оболочку, в командной строке которой уже есть "tcpdump" в начале. Он также будет хранить историю команд, которые вы ранее выполняли, используя команду.

Запустите exit 1 чтобы выйти из оболочки.

Вы можете использовать метод Ansgar Wiechers для запуска команды в новом окне терминала.

0

Вы можете попробовать терминатор, затем разделить окна на команду или изменить какой-то скрипт, который я написал для ssh на сервер, чтобы разделить на команду, потребовалась бы некоторая работа для этого, но все возможные https://github.com/vahidhedayati/termssh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .