J'utilise script-command
pour enregistrer la sortie du terminal dans un fichier.
mais, il donne des caractères supplémentaires tels que square-like
caractères et d'autres caractères chiffrés en texte.
La commande man script
indique, en utilisant -q
flag/option, qu'elle donne une sortie, sans écrire les messages de début et de fin dans la sortie standard, mais elle ne supprime pas les caractères supplémentaires.
comment puis-je obtenir ce qui suit:
1) rendre le fichier de sortie exactement identique à celui de la sortie du terminal, en supprimant les caractères supplémentaires.
2) Dans le fichier généré, à cause du texte brut - sans couleur (contrairement au terminal), je ne peux pas comprendre directement input commands
, car la sortie et la commande que j'ai entrées apparaissent avec la même police,
puis-je rendre la commande aussi audacieuse ou facilement reconnaissable que la sortie restante?
Si vous passez à la caisse:
man script | grep -i bugs -A 2
Tu peux voir ça:
le script place tout dans le fichier journal, y compris les sauts de ligne et les backspaces. Ce n'est pas ce que l'utilisateur naïf attend.
Ce que je propose est une combinaison de tr
et sed
pour obtenir ce que nous voulons.
La plupart de ces caractères indiquent des couleurs. Pour en supprimer la plupart, nous pouvons utiliser cette commande sed
de ici :
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
Cependant, cela ne suffit toujours pas ... car, comme nous l'avons vu dans le script man
, il existe d'autres caractères non imprimables dont nous devrions nous débarrasser. Pour supprimer ceux que nous pouvons simplement utiliser:
tr -dc '[[:print:]]\n'
Maintenant que nous y sommes presque, l’autre problème de mon test est que Prompt est répété deux fois. Il faut donc supprimer le début script
avec dump
et la valeur de TERM
TERM=dump
.
Résultat final:
Pour capturer des commandes:
TERM=dump script my_output
Pour supprimer les caractères inutiles:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" my_output | tr -dc '[[:print:]]\n' > new_output
Pour la deuxième partie de votre question, le fichier de sortie est simplement un fichier texte. Nous ne pouvons donc pas changer la police ni la taille de lignes spécifiques. Toutefois, votre sortie contient votre invite de manière à ce que vous sachiez quelle ligne est la commande et laquelle. est la sortie.