Екран GNU: Не вдається заповнити команди, якщо екран не додається?


10

У мене є наступний сценарій

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

якщо я не прикріплюю екран спочатку, здається, що афекти нічого не робитимуть? Чому це так, і як я можу змінити цей сценарій, щоб мені не потрібно вкладати екран?

Відповіді:


14

Коли ви запускаєте сеанс екрана у відірваному режимі ( screen -d -m), не вибирається вікно, тому вхід, надісланий пізніше screen -X stuff, просто втрачається. Вам потрібно чітко вказати, що ви хочете надіслати натискання клавіш у вікно 0 ( -p 0). У будь-якому випадку це гарна ідея, якщо ви хочете створити інші вікна під час сеансу екрана з будь-якої причини.

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

( printf \\rщоб строго імітувати Returnключ; багато, але не всі програми приймають новий рядок ( \n).)


Дякую! це працює ідеально. Вибачте всіх за те, що вийшли з теми
герцог

не працює для мене.
Tanner Strunk

2

Це нещодавно з’явилося під час спроби відповісти на запитання на unix.stackexchange.com .

Підсумок полягає в тому, що на екрані немає вибраного за замовчуванням вікна, якщо ви не вкладете файл, але Гілл показав нам, як можна змусити його бути вибраним , додавши аргумент -p 0у вашу команду екрана.

Особисто рекомендую перейти на tmux. Ось як ви перенесите команди екрана для роботи в tmux:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.