Экран GNU: как возобновить мою экранную сессию надежно?

Можно использовать nl пронумеровать строки (это - цель программы :). Но необходимо извлечь первую неделю в месяце из где-нибудь. Это может быть сделано от ncal самостоятельно:

$ ncal -w 2 2012 | tail -1 | awk '{print $1}'
5

Мы вставляем это в качестве параметра в nlопция -v (начинающий номер строки), и говорят это только числовым осям с числами или пробелами.

$ cal 2 2012 | nl -bp'^[0-9 ]\+$' -w2 -s'  ' -v$(ncal -w 2 2012 | tail -1 | awk '{print $1}')
       February 2012
    Su Mo Tu We Th Fr Sa
 5            1  2  3  4
 6   5  6  7  8  9 10 11
 7  12 13 14 15 16 17 18
 8  19 20 21 22 23 24 25
 9  26 27 28 29

Это все ужасно хрупко все же. Так или иначе, если Вы не испытываете необходимость calбольше расширенных настроек, это будет работать. Можно поместить его в файл и замену "$@" куда я поместил 2 2012.


Править: Но это НЕПРАВИЛЬНО! Я просто заметил, что первая неделя в январе может иметь номер 52 или 53! Таким образом, мы просто или должны сделать исключение на январь или просто извлечь всю неделю числа из ncal и примените их к выводу cal.

Это - решение, я думал первоначально, но я думал (ошибочно), что я упрощу его использование nl. Это использует paste, который объединяет файлы бок о бок. С тех пор нет никакого файла, мы должны использовать bashism <(...); это - то, чего я старался избегать.

Наш первый "файл" будет списком недельных чисел с двумя пустыми строками вначале:

$ printf '   \n   \n' && printf '%2d \n' $(ncal -w 1 2011 | tail -1)


52
 1
 2
 3
 4
 5

Второй, просто вывод cal. Все вместе, как параметры к paste:

$ paste -d' ' <(printf '   \n   \n' && printf '%2d \n' $(ncal -w 1 2011 | tail -1)) <(cal 1 2011)
        January 2011
    Su Mo Tu We Th Fr Sa
52                     1
 1   2  3  4  5  6  7  8
 2   9 10 11 12 13 14 15
 3  16 17 18 19 20 21 22
 4  23 24 25 26 27 28 29
 5  30 31

Намного более грязный и несовместимый, что другой. Пластина En...

4
10.12.2012, 17:08
1 ответ

Из экранной страницы справочника:

screen -D -R
Attach here and now. In detail this means: If a session is running, then reattach.
If necessary detach and logout remotely first. If it was not running create it
and notify the user.

Как упомянуто для опций -D -RR, если Вы не знаете состояния своей сессии (сессий), необходимо проверить его с screen -list.

9
27.01.2020, 20:49

Теги

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