Eu amo less
, que eu posso usar para seguir registros com a +F
bandeira (ou a ShiftFtecla de atalho), procurar para frente e para trás e, geralmente, mover-me livremente pelo documento.
Mas há uma coisa que falta less
: geralmente estou no final do arquivo e quero ver coisas novas acontecendo. Em tail -f
apenas atingi entervárias vezes, e as novas linhas de log apareceriam claramente separadas das linhas antigas.
É possível adicionar isso a less
? Quão?
Respostas:
Este não é realmente
tail
o comportamento - é o terminal. O Tail está apenas enviando um fluxo de saída para o stdout, que vai para o seu terminal, e você está inserindo linhas em branco no meio dessa saída pressionando enter. A cauda em si não está realmente aceitando informações de você. Você pode digitar o que quiser e isso também será exibido.less
, no entanto, é um aplicativo de console e recebe entrada e processa-o. Ele está gerenciando o console usando sequências de controle de terminal, e é assim que você pode rolar. Permitir que você insira caracteres arbitrários no fluxo atrapalharia a exibição e, de qualquer forma, menos usa sua entrada para controlar o programa.Infelizmente, não parece haver uma maneira de marcar a posição atual visualmente. Isso não é um pedido de recurso terrível, porém, e menos não ainda obter novos recursos ao longo do tempo.
fonte
Encontrei sua pergunta enquanto procurava a mesma resposta para mim.
Desapontado com a resposta aceita, eu vim com uma solução alternativa. É menos que o ideal, mas me permite marcar minha posição no log que estou seguindo
less
, que é o ponto principal.Criei um pequeno script executável (o chamei
marklog
) com o seguinte conteúdo e o coloquei no meu caminho:Obviamente, isso só funcionará se você tiver acesso de gravação ao arquivo de log - o que poderia ser um fator decisivo em muitas situações. Também criei esta versão que uso para gravar em arquivos de log que não possuo (mas aos quais tenho acesso sudo):
Esses scripts fornecem exatamente o tipo de interrupção visual que eu estava procurando. Existem pelo menos três maneiras de usá-las:
No ponto em que você normalmente pressionaria enter algumas vezes ao usar
tail -f
, em vez disso, execute amarklog
partir de outro terminal (fornecendo o caminho para o arquivo de log como argumento).Use CtrlZpara suspender
less
para que você possa executar o script na mesma janela do terminal, mas quando você voltar ao primeiro planoless
(usandofg
, é claro), ele não estará mais no modo 'seguir', portanto, será necessário pressionar ShiftFnovamente ...Por fim - e essa pode ser a maneira mais conveniente, porque você não precisa digitar o caminho para o arquivo de log: Execute
marklog
diretamenteless
digitando!marklog %
.Less
substituirá o nome do arquivo atual por%
. No entanto,less
não responderá ao! enquanto estiver no modo 'seguir', será necessário pressionar CtrlCprimeiro para sair do modo de seguir, executar!marklog %
e ShiftFnovamente.Com o método 3, você também recebe o bônus adicional do histórico de comandos de Less: Basta pressionar o botão
!
e usar a seta para cima para selecionar o comando mais recente (para mim, é sempremarklog
).Espero que isso ajude alguém tanto quanto já me ajudou.
fonte
Pressione Shift+ Fno final do arquivo e menos começará a funcionar como
tail -f
.fonte
tail -f
. Especificamente, ele não aceita enter como novas linhas, que é o único ponto da minha pergunta. Além disso, já mencionadoShift+F
na pergunta (com um pequeno erro, devo dizer)Eu não acho que você pode fazer isso. Eu usei
m
e'
para marcar locais de interesse e depois ir para eles novamente, mas isso não dá a você a separação que você pede. Talvez algo como multitail faça o que você deseja.fonte
A resposta do Lambart me leva à minha solução favorita. Thx para Lambart!
Basta inserir o modo de seguir ctrlce entrar
!printf "\n\n---$(date)---\n\n" >> %
. Depois disso, você deve pressionar entermais uma vez e pressionar shiftfpara iniciar novamente após o arquivo.fonte