Comment puis-je effacer un écran de terminal après que mon utilisateur a sélectionné une option dans le menu de mon application?
Comment puis-je effacer un écran de terminal après que mon utilisateur a sélectionné une option dans le menu de mon application?
Réponses:
:! exécutez la commande shell
:! cls sous Windows
: clair sous Linux et OS X
:! cls
est amplement suffisant pour mon cas d'utilisation mais ne fonctionne pas pour le cas du demandeur car celui-ci n'utilise pas GHCi.
Voici ce que vous recherchez peut-être:
ansi-terminal: prise en charge simple du terminal ANSI, avec compatibilité Windows
Vous pouvez le trouver dans Hackage et l'installer en utilisantcabal install ansi-terminal
. Il a spécifiquement des fonctions pour effacer l'écran, afficher les couleurs, déplacer le curseur, etc.L'utiliser pour effacer l'écran est facile: (c'est avec GHCI)
import System.Console.ANSI
clearScreen
Sur un terminal qui comprend les séquences d'échappement ANSI (je crois que tous les termes des systèmes Unix / Linux), vous pouvez le faire simplement avec:
clear = putStr "\ESC[2J"
Le 2
efface tout l'écran. Vous pouvez utiliser respectivement 0
ou 1
si vous souhaitez effacer du curseur à la fin de l'écran ou du curseur au début de l'écran.
Cependant, je ne pense pas que cela fonctionne dans le shell Windows.
Appuyez simplement sur Ctrl + L (fonctionne sous Windows)
Sur les systèmes Unix, vous pouvez faire System.system "clear"
ce qui appelle simplement l'utilitaire de ligne de commande clear. Pour une solution qui ne dépend pas d'outils externes, vous auriez besoin d'une bibliothèque qui résume sur différents types de terminaux comme par exemple ansi-terminal .
Un moyen rapide sur Windows serait de
import System.Process
clear :: IO ()
clear = system "cls"
system "clear
.
Sous Windows, utilisez Ctrl + L pour le terminal d'invite de commande Haskell. Et, pour utiliser l' interface graphique Ctrl + S .
Sous Linux (Ubuntu au moins), c'est le code que j'utilise pour effacer le terminal:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()