Как открыть новый терминал, выполните процесс в том терминале и канале к процессу?

Что я хотел бы сделать, в основном версия нового окна less. Давно был названный инструмент gless который сделал точно это. Например,

cat my_very_long_file | gless

открыл бы новое окно и выполнил бы a less- как пейджер, показывающий мой очень длинный файл; терминал, от которого я запускаю команду, остался бы чистым.

gless не доступно в более новых системах. Самая близкая альтернатива, которую я нашел, gview - (практически gvim в режиме только для чтения, читая стандартный вход), но это не точная вещь; это читает в целом stdin прежде, чем отобразить что-либо, так не хорошо для больших исходных данных.

Я думал о выполнении нового терминала (xterm, konsole или что-либо) с less как начальная команда. Но это не прокладывает себе путь, я хочу; я хотел бы сделать что-то как

cat my_very_long_file | xterm -e less

Но xterm и все другие терминалы, кажется, не передают их вход стандарта процессу, который они выполняют - новое окно открывается, но сразу исчезает.

(Я знаю, что могу запустить команду в новом терминале; но это не то, что я хочу. Я действительно хочу выполнить команду в текущей оболочке и перенаправление к новому процессу. cat просто пример.)

Как тест любого предложенного метода, рассмотрите это как тестовый сценарий:

od -a /dev/random | <whatever-solution>

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

(Последнее дополнение) я ищу простое решение, которое сохранит дух передачи по каналу к пейджеру. Многоступенчатые решения могут работать, но являются неестественными. Существует единственная командная строка, которая также работает: xterm -e 'whatever | less', Я иногда использую его, но это неестественно для меня.

2
задан 6 June 2017 в 10:02

2 ответа

Как насчет именованного канала?

mkfifo /tmp/test.fifo
od -a /dev/urandom > /tmp/test.fifo

И в новом окне:

cat /tmp/test.fifo | less

Или:

gnome-terminal -e "bash -c 'cat /tmp/test.fifo | less'"
2
ответ дан 2 December 2019 в 03:41

Попытайтесь добавить этот funcation к своему ~/.bashrc:

gless() { gnome-terminal -e "less $*" & }

Это запускает терминал в фоновом режиме, освобождая Вашу консоль. Также это передает все аргументы меньшему количеству команды (например, gless-S test.txt)

0
ответ дан 2 December 2019 в 03:41

Другие вопросы по тегам:

Похожие вопросы: