Что я хотел бы сделать, в основном версия нового окна 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'
, Я иногда использую его, но это неестественно для меня.
Как насчет именованного канала?
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'"
Попытайтесь добавить этот funcation к своему ~/.bashrc:
gless() { gnome-terminal -e "less $*" & }
Это запускает терминал в фоновом режиме, освобождая Вашу консоль. Также это передает все аргументы меньшему количеству команды (например, gless-S test.txt)