9

У меня есть следующий скрипт

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands

если я сначала не прикреплю экран, кажется, что эффект от чего-то не поможет? Почему это так и как я могу изменить этот скрипт, чтобы мне не нужно было прикреплять экран?

2 ответа2

14

Когда вы запускаете сеанс Screen в отдельном режиме (screen -d -m), окно не выбирается, поэтому вход, отправленный позже с screen -X stuff просто теряется. Вам необходимо явно указать, что вы хотите отправить нажатия клавиш в окно 0 (-p 0). В любом случае, это хорошая идея, если вы по какой-либо причине создадите другие окна в этом сеансе экрана.

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"

(printf \\r для строгой эмуляции клавиши Return ; многие, но не все программы принимают новую строку (\n).)

2

Это недавно появилось при попытке ответить на вопрос на unix.stackexchange.com.

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

Лично я рекомендую перейти на tmux . Вот как вы могли бы перенести ваши экранные команды для работы в tmux:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"

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