Como gravar comandos do terminal Linux com “roteiro”

Conteúdo

Ilustração mostrando uma tela de terminal Linux

a script comando permite que você grave e reproduza a atividade em seu terminal. Isso é útil quando você deseja criar uma referência das etapas executadas ou está criando um tutorial para outros seguirem..

script gera texto digitado de todos os comandos que você executou. Funciona colocando você em um sub-shell que registra tudo o que você executa. Sua sessão será salva como texto simples quando você sair do shell. Isto faz script mais confiável do que fluxos de entrada redirecionados.

Uso básico

a script O comando pode ser executado sem nenhum argumento:

roteiro

Uma nova sessão de captura começará. Sua sessão de terminal será salva em ./typescript em seu diretório de trabalho. Você pode especificar um arquivo diferente, dando script um argumento:

script example_session

Use seu shell para executar o script que deseja gravar. Quando você terminar, pressione Ctrl+D Ou escreva exit para sair do sub-shell. Você retornará à sua sessão shell principal.

Agora você pode inspecionar o log da sessão que foi criado:

exemplo_sessão de gato

Você verá o resultado do seu script sessão intercalada com anotações entre colchetes. Essas anotações são usadas por script para registrar detalhes sobre o próprio terminal e os eventos que ocorrem dentro dele.

Uma vez que os arquivos de log são texto simples, você pode manipulá-los livremente em seu editor favorito. Apenas corte as linhas que você não deseja reter ou que outras pessoas não deveriam ver.

Isso é útil se sua sessão gerar inadvertidamente informações potencialmente confidenciais ou se você quiser excluir caracteres estranhos do registro.. script registra tudo o que acontece em seu terminal, incluindo teclas de retrocesso, novas linhas e personagens de controle, alguns dos quais podem não ser necessários no texto datilografado final.

script mostra o nome do arquivo que você está escrevendo no início e no final da sua sessão. Você pode desativar esta saída adicionando o -q sinalizar para ativar o modo silencioso.

a SHELL A variável de ambiente é lida ao determinar o shell para ramificar para o procedimento interno. Quando a variável não está definida, script padrão para sh.

Adicionar a um arquivo existente

É possível adicionar novos comandos a um texto datilografado existente. Isso permite que você “pausa” e “retomar” la grabación saliendo de su sub-shell e iniciando una nueva sesión.

Adicione o -a sinalize para adicionar seus comandos ao arquivo especificado. script irá sobrescrever o conteúdo do arquivo quando o sinalizador não for fornecido.

script -a example_session

Adicionar dados de tempo

A digitação básica é ideal quando você simplesmente deseja gravar seus passos para ler ou compartilhar mais tarde. script você também pode economizar dados de tempo junto com seu registro de texto. Esta informação pode ser usada para reproduzir toda a sua sessão de terminal com atrasos apropriados entre os comandos.

Para correr script com ele -t marque para especificar um caminho para escrever tempos. Os arquivos de hora têm um formato de duas colunas. Cada entrada contém o tempo decorrido desde o último registro na primeira coluna. A segunda coluna registra o número de caracteres que foram digitados, permitindo repetições com velocidade de digitação precisa.

script -q -t example_session_timings example_session

Sessões de jogo

a scriptreplay comando lê datilografado e arquivos de tempo criados por script. Jogue sua saída em seu terminal. Os dados de tempo serão usados ​​para combinar o comprimento de cada caractere digitado com seu comprimento em seu script original.

scriptreplay -t example_session_timings example_session

Algunos scripts pueden contener retrasos no deseados o ejecutarse a una velocidad incómodamente lenta. Use o -d bandera para acelerar la salida. Todos los tiempos registrados se dividirán por el número que pase.

# Corre 4 times faster
scriptreplay -d 4 -t timings typescript

Você também pode usar o -m marca para limitar el retraso máximo entre actualizaciones individuales. Esto le posibilita especificar la pausa más larga permitida en segundos antes scriptreplay pasará al siguiente comando, inclusive si el texto mecanografiado especifica un retraso mayor.

# Maximum delay of 2 seconds
scriptreplay -m 2 -t timings typescript

Uso con comandos interactivos

No se recomienda utilizar script con comandos muy interactivos. Es probable que los editores de texto de terminal, las aplicaciones sustentadas en maldiciones y los mensajes de diálogo inserten caracteres basura contaminantes en su texto mecanografiado. script se centra en capturar la salida típica basada en texto, no en comandos que manipulan su terminal para producir una interfaz gráfica.

script não é adequado para uso com shells não interativos, pois seu shell interno é sempre interativo por natureza. O comando não deveria ser espera-se que funcione com entrada canalizada.

Outras opções

a -c sinalizar um script permite que você especifique um comando. Ao usar este modo, script execute o comando e capture sua saída, em vez de bifurcar um novo shell interativo. Isso pode ser mais eficaz na captura da saída de alguns processos que se comportam de maneira diferente quando não estão diretamente conectados a um TTY..

a -f bandeira instrui script para escrever diretamente no log da sessão após cada evento. Isso melhora a segurança, garantindo que a saída seja capturada imediatamente.

a script página man sugere este sinalizador também pode ser usado para monitorar o terminal de um usuário em tempo real, como em um cenário de professor e aluno. O aluno iria correr script -f, mais tarde, o mestre usaria SSH para conectar e transmitir o texto datilografado ao vivo.

script geralmente não aceita um link simbólico como um caminho digitado. a --force flag ativa este comportamento, instruindo script para resolver hard links e soft links para seu destino.

Resumo

script permite que você grave suas sessões de terminal em arquivos de texto simples com dados de tempo precisos. Pode inspecionar, compartilhar e imprimir os scripts digitados manualmente ou reproduzi-los em seu terminal usando scriptreplay.

Os comandos estão incluídos nas distribuições Linux mais populares. Eles funcionam com todos os tipos de terminais, mas scripts individuais podem não tocar corretamente em um terminal diferente daquele usado para gravação. Para melhores resultados, corre scriptreplay no mesmo tipo de terminal que você usou com script.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.