GNU/Linux >> Tutoriels Linux >  >> Linux

Comment nettoyer la sortie de la commande Linux 'script'

Si vous souhaitez afficher le fichier, vous pouvez envoyer la sortie via col -bp; ceci interprète les caractères de contrôle. Ensuite, vous pouvez passer moins de temps, si vous le souhaitez.

col -bp typescript | less -R

Sur certains systèmes col n'accepterait pas d'argument de nom de fichier, utilisez plutôt cette syntaxe :

col -bp <typescript | less -R

cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed

voici une interprétation de la chaîne saisie dans perl :

  • s/pattern//g signifie faire une substitution sur l'ensemble (le g l'option signifie faire tout au lieu de s'arrêter au premier substitut) chaîne d'entrée

voici une interprétation du modèle regex :

  • \e correspond au caractère de contrôle spécial "escape" (ASCII 0x1A)
  • ( et ) sont le début et la fin d'un groupe
  • | signifie que le groupe peut correspondre à l'un des N motifs. où les N motifs sont
    • [^\[\]] ou
    • \[.*?[a-zA-Z] ou
    • \].*?\a
  • [^\[\]] signifie
    • faire correspondre un ensemble de caractères NOT où les caractères not sont [ et ]
  • \[.*?[a-zA-Z] signifie
    • faire correspondre une chaîne commençant par [ puis faire un .*? non gourmand jusqu'au premier caractère alpha
  • \].*?\a signifie
    • faire correspondre une chaîne qui commence par ] puis faire un .*? non gourmand jusqu'à ce que vous appuyiez sur le caractère de contrôle spécial appelé "le caractère d'alerte (cloche)"

Pour une grande quantité de script sortie, je piraterais un script perl ensemble de manière itérative. Sinon, modifiez à la main avec un bon éditeur.

Il est peu probable qu'il existe une méthode automatisée existante pour supprimer les caractères de contrôle de script sortie d'une manière qui reproduit ce qui était affiché à l'écran à certains moments importants (comme lorsque l'hôte attendait ce premier caractère d'une entrée utilisateur).

Par exemple, l'écran peut être vide sauf pour Andrew $ , si vous avez ensuite tapé rm /* et appuyé douze fois sur retour arrière (beaucoup plus que nécessaire), ce qui s'affiche à la fin dépend du shell en cours d'exécution, de votre stty actuel sont les paramètres (que vous pouvez modifier au cours d'une session) et probablement d'autres facteurs également.

Ce qui précède s'applique à toute méthode automatisée de capture continue d'entrée et de sortie. La principale alternative est de prendre des "captures d'écran" ou de couper et coller l'écran à des moments appropriés pendant la session (ce que je fais pour les guides de l'utilisateur, les notes pour un journal de bord, etc.).


Linux
  1. Comment affecter la sortie d'une commande Linux à une variable

  2. Comment créer un script d'une commande Linux

  3. Comment capturer les sessions de terminal et la sortie avec la commande de script Linux

  4. Comment sérialiser l'exécution des commandes sous Linux ?

  5. Comment lire la colonne IDLE dans la sortie de la commande Linux 'w' ?

Comment supprimer un répertoire sous Linux

Comment utiliser la commande Linux nohup

Comment activer l'horodatage dans la sortie de la commande d'historique Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment enregistrer la sortie de la commande Linux dans une image ou un fichier texte

Comment stocker une commande Linux en tant que variable dans un script shell