5 votes

Différence entre la commande script et la copie manuelle du terminal vers un fichier externe ?

J'étais simplement curieux de savoir s'il y avait une différence dans le fait de conserver l'enregistrement des commandes du terminal en utilisant script filename et le copier manuellement depuis le terminal. Je vous prie de me dire s'il y a une différence. Ce que je sais, c'est que l'utilisation de la commande script entraîne des frappes inutiles dans le fichier.

6voto

TellMeWhy Points 16004

En script crée un script contenant toutes vos interactions avec le terminal pour la session en cours. Il s'agit en fait de créer un vidage d'écran en direct et d'en coller le contenu dans un fichier.
Il comprend toutes les entrées et sorties visibles dans le terminal.

En history vous donne toutes les commandes entrées dans le terminal depuis la première fois que vous l'avez utilisé.
Il n'affiche que les entrées, soit pour la session en cours, soit pour toutes les sessions.

4voto

Tim Points 30349

Il y a une différence, mais pas comme on pourrait le penser.

Le terminal peut prendre en charge les caractères ASCII - 0 à 127. Il s'agit de l'alphabet latin occidental, y compris certains accents comme l'accent grave ` et la ponctuation comme { et ~.

Ainsi, lorsque vous faites un copier-coller à partir d'un émulateur de terminal, vous copiez des caractères ASCII dans un fichier UTF-8 (très probablement). Bien entendu, UTF-8 et ASCII sont compatibles. Les caractères 0 à 127 de l'UTF-8 sont les mêmes que ceux de l'ASCII.

Lorsque vous produisez un fichier, il sera ASCII par défaut, mais cela peut être modifié .

Alors pourquoi utiliser la redirection vers un fichier si l'encodage est moins bon ? Automatisation ou incompatibilité.

Le terminal que vous utilisez (probablement Gnome Terminal ou X-Term) est un émulateur de terminal - un terminal à l'intérieur d'une fenêtre graphique.

Mais certains terminaux ne sont pas comme ça - ils sont complètement non graphiques, uniquement CLI - comme les terminaux TTY, auxquels on accède avec Ctrl + Alt + FX wobei X est un nombre de 1 à 6. Par exemple, pour accéder à TTY2, utilisez Ctrl + Alt + F2 .

Ces terminaux n'ont pas de souris - vous ne pouvez donc pas copier la sortie, ni même la faire défiler.

Si vous exécutez une commande avec beaucoup de données de sortie, vous pouvez soit les transférer dans un fichier et utiliser la fonction nano o vi pour l'afficher, ou vous pouvez utiliser la fonction less afin de permettre le défilement à l'aide d'une touche fléchée.

Et si j'ai un code pour surveiller mes terribles vitesses d'accès à l'internet afin d'obtenir une réduction sur le coût de l'internet, je pourrais vouloir enregistrer automatiquement la vitesse dans un fichier - par exemple rediriger la sortie de wget dans un fichier.

C'est le principal cas d'utilisation - un ordinateur peut le faire sans aucune intervention humaine et sans interface graphique. Dans ce cas, l'absence de caractères tels que et n'est pas un problème majeur, car il s'agit simplement d'enregistrer des nombres.

Si vous souhaitez partager le résultat, pastebinit est une excellente commande. Il suffit de lancer yourcommand | pastebinit et il le téléchargera sur paste.ubuntu.com et vous donner le lien.

1voto

Sergiy Kolodyazhnyy Points 97292

En bref, script La commande capture plus qu'un simple texte, et à un niveau différent.

Par exemple ls commande. Pour produire une sortie colorée, ls ajoute des caractères spéciaux à chaque entrée( Pour en savoir plus, cliquez ici ). Si vous appelez ls alors que script capture la sortie, ces caractères spéciaux seront capturés. Il capturera également les caractères d'échappement que vous avez pu appuyer sur le clavier.

script capture également tout ce qui se passe à ce niveau invisible, inférieur, du système.

Avec la sélection manuelle du texte et la copie, vous faites quoi ? Sélectionner du texte à l'intérieur du serveur graphique X, n'est-ce pas ? D'où vient et où va le texte ? Il arrive déjà rendu, déjà post-traité, colorisé, donc il ne contient pas nécessairement les caractères spéciaux. Il va également dans le presse-papier (qui est d'ailleurs l'un des 3 dans le système de serveur X), puis lorsque vous collez, il est libéré du presse-papier.

script est utile lorsque vous souhaitez enregistrer une longue session et la transmettre à quelqu'un. Les caractères spéciaux ne posent pas de problème lorsque vous exécutez simplement les commandes par défaut, et non les commandes colorisées (par défaut, ls est aliasé à ls --color=auto ). Vous pouvez donc utiliser l'antislash pour échapper aux alias \ls ou utiliser este solution du site stackoverflow.

Quant à la méthode du copier-coller, elle convient pour les textes courts que l'on veut simplement transmettre et oublier.

Additions

J'ai également remarqué que vous vous intéressez davantage à history vs script pour recoder la liste des commandes que vous entrez dans le terminal. La différence entre les deux est que l'historique ne conserve que les enregistrements de ce que vous demandez au terminal d'exécuter. script est comme l'enregistrement de votre terminal, où tout est capturé.

Ils stockent également les données différemment. Alors que pour bash, l'élément .bash_history c'est du texte, d'autres Shell peuvent choisir un fichier de données. Par exemple, voici une comparaison de mes mksh fichier historique, vs .bash_history , vs typescript

xieerqi@eagle:~$ file MKSHHISTFILE 
MKSHHISTFILE: data
xieerqi@eagle:~$ file .bash_history
.bash_history: UTF-8 Unicode text
xieerqi@eagle:~$ file typescript
typescript: ASCII text, with CRLF, LF line terminators

Avec history Il est différent de Shell à Shell. bash conserve par défaut tout ce qui se trouve dans .bash_history tandis qu'avec des coquilles comme ksh o mksh y dash Le fichier historique doit être défini par l'utilisateur. script ,par défaut, stocke tout dans typescript mais l'utilisateur peut également spécifier un autre fichier.

Enfin, l'historique est l'un des éléments intégrés à un Shell, qui sera toujours présent, mais qui n'a pas forcément besoin d'être configuré. script est un utilitaire, qui peut être présent ou non, mais qui n'a pas besoin d'être configuré.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X