Terminus icon indicating copy to clipboard operation
Terminus copied to clipboard

Cat au lieu de less ?

Open axelsimon opened this issue 7 years ago • 5 comments

cat (concaténer) est une commande qui certes existe partout mais est nettement moins fonctionnelle que `less.

Y a-t-il une raison d'avoir remplacé cat par less, au-delà de son universalité ?

axelsimon avatar Nov 21 '17 12:11 axelsimon

Maintenant que j'y pense peut être que la commande more (plus) est la plus interressante pour faire le job. J'avais fait la substitution dans un but sémantique et pratique :

  • cat ne comporte que 3 lettres
  • la commande cat affiche directement tout le texte (cela correspond à la manière dont cat et less sont implémentés)
  • la commande cat ne nécessite aucune compétence autre que le shell, tandis que less (moins) s'utilise avec des commandes spécifiques qui ressemble à celle de vi (il faut utiliser 'q' pour quitter et il est possible de faire des recherches avec '/')
  • (au moment de faire cette modification je voulais personnifier les commandes, comme avec grep, il aurait s'agit d'un genre d'invocation en terme vidéo ludique... cat peut être personnifier en chat, less c'est plus compliqué)

luffah avatar Nov 21 '17 16:11 luffah

cat me semble pertinent au vu de comment ça fonctionne actuellement dans le jeu, pour rester fidèle à un terminal. Par contre, sur l'idée de dialogue en multipliant les 'cat', je suis plus sceptique parceque justement, ça s'éloigne du fonctionnement normal d'un terminal, et aussi, que je m'en suis aperçu tard en jouant, parceque justement, ça ne me paraissait pas naturel que deux 'cat' d'affilés sur un fichier puissent donner deux résultats différents.

ludogre avatar Dec 30 '17 12:12 ludogre

Peut être faire un cat non interactif effectivement… juste du texte... et pour les interactions trouver une parade e.g. faire comme si on avait à faire à un programme ou ajouter des mots clefs de point'n'click.

L'idée est de faire un jeu pas un bac à sable.

luffah avatar Feb 01 '22 22:02 luffah

En y re-réfléchissant à cette occasion, on pourrait aussi imaginer que c'est à des fichiers de logs qu'on a à faire lorsqu'il s'agit d'"interactions". Si du nouveau contenu (mais ajouté à l'ancien) apparaît à chaque exécution de cat sur un fichier, on est bien dans la logique du fichier de logs. On pourrait imaginer qu'on puisse également interroger les fichiers avec tail, et que, quand il s'agit de fichiers de logs, la commande renvoie la suite de la conversation à chaque fois qu'elle est lancée.

ludogre avatar Feb 02 '22 07:02 ludogre

Ça peut le faire dans certains cas, par exemple si on met l'idée un envoi du courrier (un fichier est écrit -action ou pas-> un autre fichier est écrit).

# exemple sur le pont après l'avoir réparé
$ cat remerciements.log
> Merci d'avoir réparé le pont. Tiens voici mon adresse, je voudrais t'offrir un cadeau.

# exemple avec l'artiste très occupé
$ ./Artiste
> laisse moi tranquille, je suis occupé

$ cat Arstiste.log
> Une note a été laissée : "J'ai besoin 5 rouages, quelqu'un utilisant 'touch' devrait s'en sortir"

$ touch rouages{1,2,3,4,5}

$ cat Artiste.log
> Une note a été laissée : "À la personne qui m'a fait ces 5 rouages : je t'autorise à ouvrir le clapet de ma sculpture-horloge."

$ ./Horloge
> ('date' est maintenant utilisable) 
>  Il est 13h30 !

Je n'ai pas trop envie de généraliser ça au risque de perdre le coté 'interface avec le monde' que sont les êtres qui peuple l'univers virtuel. L'idée de programme me semble assez pertinent dans certain cas.

# exemple dans le marché

$ ./Marchand
> (interface de choix des trucs échangeable)
> (pas de monnaie)

$ ls
Marchand
SacÀdos.zip
SacÀdos.log

$ cat SacÀdos.log
(Indice pour utiliser la commande 'unzip' présente depuis le début)

$ unzip SacÀdos.zip
$ ./Marchand
> (choix des trucs échangeables)

# exemple dans la bibliotheque
$ ./Grep
> … bla bla …
> Grep s'est auto-installé dans le système en tant que 'grep'

$./Grep -h
> grep motif fichier

luffah avatar Feb 02 '22 12:02 luffah