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.
Réponses
Trop de publicités?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.
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.
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é.