Начиная с файла типа:
$ cat >file
not
like
this...
sed будет работать:
$ sed 's/$/\n/' file
not
like
this...
Так и будет:
$ awk 1 ORS='\n\n' file
not
like
this...
1
является загадочным сокращением awk для печати -строки -, а ORS='\n\n'
указывает awk разделять выходные строки не одним, а двумя символами новой строки.
Более короткая команда sed, предложенная steeldriver ,:
sed '$!G' file
Команда G
добавляет новую строку и пробел в конец пространства шаблона . Поскольку по умолчанию пространство для удержания пусто, это приводит к простому добавлению дополнительной новой строки в конце каждой строки.Префикс $!
говорит sed сделать это для всех строк , кроме последней.
Существует множество доступных инструментов, которые делают то же самое, что openvt
делает :открывает новый псевдо-терминал -и запускает назначенную команду со стандартным вводом-выводом, подключенным к этому псевдо-терминалу -..
ptyrun
иptybandage
ptyrun
и ptybandage
на утилитах набора инструментов nosh zpty
в оболочке Z % tty ; ptybandage tty /dev/pts/5 /dev/pts/6 %
Конечно, разница заключается в том, что в случае псевдотерминалов -необходимо, чтобы какой-то процесс был присоединен к главной стороне псевдотерминала -, чтобы фактически сделать что-то с ввод/вывод. В случае инструментов Бернштейна это программа ptyio
. ptyrun
и ptybandage
на самом деле являются сценариями, которые переходят в программы ptyget
, ptyio
и ptyspawn
. Аналогичная ситуация с моими инструментами, где программа pty-run
является внутренней рабочей лошадкой ввода-вывода в сочетании с pty-get-tty
и open-controlling-tty
.
Это означает, что если кто-то хочет более мелкой -детализированной операции, просто открывая главную сторону псевдо--терминала, а затем последовательно загружая что-то , чтобы сделать все остальное, можно вызвать pty-get-tty
или ptyget
напрямую.
В случае терминальных мультиплексоров tmux
и screen
, конечно, существуют механизмы (, которые являются частью этих программ )для запуска нового (внутреннего )терминала и запуска прикрепленная к нему команда. Подробнее см. документацию по этим программам.
Какие инструменты (ptyrun
, ptybandage
и др. )делать не делать это запускать команды, присоединяя их к существующим псевдо-терминалам -. Они всегда создают свежие.
Существует небольшая потребность в выполнении команд, подключенных к существующим псевдо-терминалам -. Но это может быть сделано. Например, это можно сделать с помощью моего набора инструментов.Просто установите переменную окружения TTY
на имя файла устройства подчиненной стороны существующего псевдо-терминала -и вызовите команду с помощью инструмента open-controlling-tty
.
TTY=/dev/pts/5 open-controlling-tty $SHELL
Это, конечно, создает конкуренцию за терминал среди различных несвязанных параллельных процессов, и заставляет с болью осознать, как много оболочки управления заданиями делают для одного. & #9786;
Также обратите внимание, что некоторые SSH-серверы и эмуляторы терминалов закроют главную сторону, если их ведомая -дочерняя сторона завершится.
Наконец, обратите внимание, что это не механизмы заполнения ввода -, для управления существующей интерактивной оболочкой на существующем псевдо-терминале -, посылая команды на его вход. Все они присоединяют новых процессов к (новым )псевдо-терминалам -.
Но ведь openvt
это тоже не то.
ptyrun
. djbwares . ptybandage
. djbwares . ptyio
. djbwares . ptyget
. djbwares . ptyrun
. Направляющая ноша . Программное обеспечение. ptybandage
. Направляющая ноша . Программное обеспечение. pty-run
. Направляющая ноша . Программное обеспечение. pty-get-tty
. Направляющая ноша . Программное обеспечение. open-controlling-tty
. Направляющая ноша . Программное обеспечение.