Как я запускаю редактора из сценария оболочки?

Я полагаю, что необходимо Ограничить или Найти для получения повторяющихся назначений, иначе Outlook не развернет их. Кроме того, необходимо Отсортировать по Запуску прежде установка IncludeRecurrences.

18
задан matpie 6 November 2009 в 22:44
поделиться

5 ответов

Я ответил на свой вопрос! Вам нужно перенаправить ввод и вывод терминала:

#!/bin/tcsh
vi my_file < `tty` > `tty`
17
ответ дан 30 November 2019 в 06:50
поделиться

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что когда вы запускаете оболочку в своей среде, она запускается в подоболочке, в которой STDIN и STDOUT не подключены к TTY - вероятно, потому, что это в что-то вроде трубопровода. Когда вы перенаправляете, вы открываете новое соединение напрямую с устройством. Так, например, ваша командная строка превращает

$ vi < `tty` > `tty`

в

$ vi < /dev/ttys000 > /dev/ttys000

. Таким образом, вы на самом деле не используете свой старый STDIN / STDOUT, вы создаете два новых файла и сопоставляете их с STDIN вашего процесса vi. /STDOUT.

Теперь расскажите нам, что вы делаете с этим, и мы расскажем, как избежать этой путаницы.

11
ответ дан 30 November 2019 в 06:50
поделиться

Установите в терминале tty переменную, а затем перенаправьте ввод-вывод редактора через эту переменную.

В вашем сценарии:

#!/bin/sh

ls | while read a; do vi $a < $MYTTY >$MYTTY; done

И затем выполните команду скрипт с:

$ MYTTY=`tty` ./myscript >/tmp/log
3
ответ дан 30 November 2019 в 06:50
поделиться

Мне удалось добиться желаемого поведения с помощью bash + Cygwin + Terminator :

#!/bin/bash
vim foo

Запускаем скрипт, vim загружается, сообщений об ошибках нет, ведет себя как обычно. Однако, несомненно, существуют десятки вариаций между нашими настройками, поэтому я не могу рискнуть предположить, в чем разница. Мне любопытно, что это, но у вас это работает, а это важная часть.

2
ответ дан 30 November 2019 в 06:50
поделиться

Совершенно верно. : -)

Напишите свой сценарий и попросите его вызвать переменную среды EDITOR, для которой вы установите значение «emacsclient». Затем запустите Emacs, выполните Mx server-start , переключитесь на буфер оболочки ( Mx shell ) и выполните свой сценарий. Emacsclient отобразит то, что нужно отредактировать, и Cx # будет действовать как команда «готово» и вернет вас к вашему сценарию с внесенными или прерванными изменениями по вашему выбору.

Наслаждайтесь.

Edit: Я хотел добавить, что в наши дни Emacs ЯВЛЯЕТСЯ моей терминальной программой. У меня есть десятки буферов оболочки, и мне не нужно беспокоиться о потере вывода, и я могу использовать всю мощь Emacs для управления и анализа вывода терминала. И пусть сценарии Emacs генерируют ввод в оболочки. На самом деле круто. Например, очень удобно наблюдать за тем, как вывод Tomcat прокручивается в буфере оболочки при редактировании источников, обработке почты или выполнении почти любых действий с Emacs. Когда появляется трассировка стека Tomcat, я могу быстро на нее отреагировать.

2
ответ дан 30 November 2019 в 06:50
поделиться
Другие вопросы по тегам:

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