Como inicio a tela com várias divisões diretamente da linha de comando?

12

Estou usando screendepois de fazer login no sshmeu servidor. A partir de agora, configurei as divisões na janela da tela manualmente e executei os comandos manualmente, conforme mostrado na captura de tela a seguir:

insira a descrição da imagem aqui

  • A parte superior deve correr tail -n 1 -f /home/server/log/access.log.
  • A parte inferior direita deve ser executada htop
  • O canto inferior esquerdo deve ser simplesmente um prompt de comando

Existe alguma maneira de fazer isso através de comandos / script, para que eu não precise refazê-lo todas as vezes à mão?

Videonauth
fonte
@muru Isso responde bastante para a parte de como iniciar as telas separadas, mas não a parte de como solicitá-las diretamente, como mostrado acima.
Videonauth 28/11
Tudo o que pode ser feito usando atalhos na tela pode ser feito usando comandos .screenrc. Para esse arranjo, temos o splitcomando .
Muru

Respostas:

15

Para o caso específico de acordos de janela, há um comando de tela para salvá-los em um arquivo: layout dump. De man screen:

layout dump [filename]

Write to a file the order of splits made in the current layout. This is
useful to recreate the order of  your  regions  used  in  your  current
layout.  Only  the  current  layout is recorded. While the order of the
regions are recorded, the sizes of  those  regions  and  which  windows
correspond  to  which regions are not. If no filename is specified, the
default is layout-dump, saved in the directory that the screen  process
was  started in. If the file already exists, layout dump will append to
that file. As an example:

           C-a : layout dump /home/user/.screenrc

will save or append the layout to the user's .screenrc file.

Assim, depois de fazer o arranjo manualmente, pressione Ctrla:e digite layout dump /path/to/some/file. O layout será salvo /path/to/some/filee você poderá restaurá-lo em uma nova sessão com:

screen -c /path/to/some/file
muru
fonte
+1 uma boa; O split -vparece indocumentado :) é por isso que eu estava lutando.
Videonauth 28/11/19
@Videonauth, na verdade, está documentado na seção de combinações de teclas padrão. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy
Sim, parece que só é mencionado na página de manual, ao lado C-a |, mas não nos docs GNU
Muru
Encontrou um comportamento estranho que você pode querer mencionar: Se você digitar, por exemplo, layout dump ~/layouto processo irá falhar, ela precisa caminho completo (ou seja /home/$USER/layout)
Videonauth
@Videonauth, uma vez que a expansão do til geralmente é feita pelo shell, não é surpreendente se um determinado comando não o suporta internamente. Alguns fazem, a maioria não.
Muru
10

Eu vim com o seguinte para criar a saída mostrada na minha pergunta e após a excelente resposta do @ muru . Usando layout dumpme deu o seguinte:

split
focus
split -v
focus

Nota: A ~expansão Tilde ( ) não funciona, layout dumpportanto, em vez de, ~/layout.dmppor exemplo, você precisaria usá-lo /home/<username>/layout.dmp.

A partir do qual eu criei o seguinte .screenrc

# create the top screen
chdir /home/server/log
screen -t "Apache Log" tail -n 1 -f access.log
# split the screen and focus onto the new created space
split
focus
#create the bash
chdir /home/server/log
screen
# split vertically and focus onto the new area
split -v
focus
# create the htop screen
screen -t "Htop" htop
# focus twice to end up with the bash area active
focus
focus

Agora só preciso digitar screene iniciar meu layout desejado. Deixo isso aqui como um exemplo para quem está se perguntando, mas não se esqueça de votar na resposta de @ muru, já que ele foi quem me ajudou a resolver isso.

Videonauth
fonte