Estou usando o script
comando para salvar toda a saída do terminal em um arquivo chamado typescript
. Ou script foo
para salvar no arquivo foo
.
Agora, digamos que eu estou digitando comando após comando e esqueço se estou digitando ou não um texto datilografado.
Como posso descobrir se estou dentro de um texto datilografado ou não?
typescript
Rob Avery IV
fonte
fonte
script
e tenha o tty aberto também causaria um falso positivo.script
iniciado).script
mas também outras situações, comosu -l
,ssh
console Linux e talvez outros, e forneça (através de outros argumentos deps
) muito mais informações.Problema interessante. Eu descobri que um pequeno script bash poderia fazer o trabalho com bastante segurança:
Eu acho que isso é um pouco diferente do proposto por Stephane Chazelas, na medida em que meu script cria a relação pai: filho que os processos Linux / Unix mantêm até encontrar o PID 1 ou encontrar "script" como o processo.
fonte
xterm
sessão de script, esse script exibirá o shell no xterm sendo executado sob script. Bem, é de certa forma, mas a saída não está indo para o texto datilografado. Minha abordagem verifica o terminal associado à sessão atual, para não ter esse problema.Se você tiver um diretório / bin pessoal em seu caminho (por exemplo, / home / user / bin, coloque um shell script com o nome 'script' (mesmo nome que o binário), com o seguinte conteúdo:
Agora, na execução do script, você pode testar a variável de ambiente SCRIPT_RUNNING e fazer o que quiser com base nela.
EDITAR:
Na verdade, há uma maneira muito mais fácil. O seguinte diz tudo, crie três arquivos, ~ / bin / script, ~ / bin / script-shell e ~ / .scriptrc:
Se o seu shell atual for bash, não se esqueça de executar
hash -r
depois de criar esses arquivos, para garantir que ~ / bin / script seja executado quando 'script' for inserido como um comando (verifique comwhich script
).Como antes, observe que você deve ter ~ / bin em seu PATH, precedendo o caminho padrão para que isso funcione.
fonte