# Xiki shell: Les bases {{INLINETOC}} Xsh (abréviation de Xiki Shell) possède de nombreuses fonctionnalités: * il transforme un terminal en un moteur de recherche * il rend les commandes shell interactives * il crée des interfaces utilisateur pour les commandes du shell et d’autres outils et bases de données # Usage basique ## Pour entrer dans xsh * ouvrir un terminal shell. * Taper `xsh` puis taper return. ``` $ xsh ``` ## Pour sorir de xsh. * Appuyer sur Ctrl + Q pour quitter. On est maintenant de retour à Bash. Xsh est destiné à compléter bash plutôt que de le remplacer. Ainsi, on peut rapidement sauter dans xsh puis en sortir. ## Raccourcis clavier à l'écran Xsh affiche les raccourcis clavier directement à l'écran! Donc, vous n'aver pas à les mémoriser comme dans des shell traditionnels. Les lettres soulignées indiquent les raccourcis Ctrl. * **Ctrl + O** pour Ouvrir. * **Ctrl + G** pour Go. * **Ctrl + Q** pour quitter, etc. En cliquant dessus, vous obtener une description (si le support de la souris est activé). Vous pouver taper ces raccourcis clavier même s’ils n’apparaissent pas à l’écran. ## Utilisation dans bash Toutes les clés sauf les 3 dernières peuvent être directement appellées depuis bash. **Dépannage:** Si la "configuration par défaut" n'a été pas sélectionnée lors de la configuration de xsh, il est possible que les raccourcis clavier bash ne soient pas activés. Exécuter `xsh --help` dans bash pour afficher les équivalents en ligne de commande de chaque raccourci clavier. Il suffit de taper des lettres pour filtrer la sortie de commande Par exemple dans bash : * Taper `cd /` et return pour revenir au répertoire racine. * Taper `ls` mais ne pas faire return. * Maintenant, appuyer sur `Ctrl + O`. Il ouvre xsh et exécute la commande. ## Utilisation des filtres rapides Dans xsh, il est facile de filtrer la sortie des commandes shell. Il suffit de taper quelques lettres après l'exécution de la commande! Dans les shells traditionnels, il faut utiliser grep, ce qui est lent et fastidieux Lorsque `Filtre AZ` apparait dans la barre inférieure, cela signifie que l'on peut taper des lettres à filtrer. Taper `bi` pour filtrer progressivement jusqu'à ne contenir que les lignes contenant `bi`. Lorsque `Filtre AZ` n'est pas affiché, les touches de lettre servent à la saisie, car tout est modifiable dans xsh. Appuyer sur échap pendant le filtrage pour recommencer. Ensuite, taper quelques lettres pour filtrer à nouveau. ## Utilisation intercative des commandes shell Xsh fait de la sortie de commande une interface interactive! Pour la commande `ls`, cela signifie que l'on peut naviguer de manière visible dans les répertoires et les fichiers. Au lieu d'avoir à taper un tas de commandes `ls` et `cd`. * Utiliser les touches fléchées pour ramener le curseur sur la ligne `$ ls`. * Appuyer sur Ctrl + O pour le réduire. * Appuyer à nouveau sur Ctrl + O pour l'ouvrir. La barre du bas affiche à nouveau `Filtre AZ`, on peut donc taper des lettres à filtrer. * Taper `etc` pour filtrer jusqu'à `etc`. * Appuyer sur Entrée pour ouvrir le répertoire `etc`. Si cela retourne une erreur «Aucune action shell n’est installée» créer le script ~/xiki/ls.xiki avec le contenu suivant. ``` > @xiki .Shell action for navigating files $ ls |:anything !.# ! # This shell action lets you expand the output of ! # the ls command, like this: ! # ! # $ ls ! # : etc/ ! # : home/ ! # : craig/ ! # : guest/ ! # ! ! # "$ ls", so change "|..." lines to ":..." lines... ! ! if args == [] ! return "|\n| This action lets you expand the output of the 'ls' shell command.\n|" if ! shell_output ! return shell_output.gsub(/^\|/, ':') ! end ! ! path = args.map{|o| o.sub(/^: /, '')}.join("/") ! ! # ": dir" line passed... ! ! if File.directory? path ! return Shell.command("ls -p '#{path}/'").quoted ! end ! ! View.open path ! "" # Blank string means we handled ! # Shell.command("cat '#{path}'").snippet ``` * Taper `ho` pour filtrer à nouveau. * Déplacer le curseur sur "hôtes". Nous verrons plus tard comment xsh rend toutes sortes de commandes shell interactives, pas seulement `ls`. Ctrl + O exécute des commandes et ouvre des choses. Alors que return insère généralement des sauts de ligne. Mais lorsque `Filtre AZ` est visible, le retour est similaire à Ctrl + O. Un double-clic agit également comme Ctrl + O (si le support de la souris est activé). ## Utiliser l'éditeur de texte Xsh s'intègre l'éditeur de texte par défaut. * Avec le curseur sur la ligne "hosts", appuyer sur Ctrl + O pour l'ouvrir. Cela permet de visualiser le contenu du fichier /etc/hosts, pour l'éditer: * Appuyer sur echap pour revenir à la dernière vue. * Appuyer sur Ctrl + G ("Go" dans la barre du bas). Cela ouvrira le fichier "hosts" dans l'éditeur par défaut. Xiki utilise l'éditeur spécifié dans la variable d'environnement bash "EDITOR". Si cela n'est pas encore fait, on peut configurer l'éditeur favori (puis recharger via `xsh --reload` dans bash après). Si ce n'est pas défini, xsh utilise par défaut "nano" sur linux ou "TextEdit" sur mac. Pour quitter l'éditeur de texte et retourner à bash. * Si xsh est toujours ouvert, appuyer sur Ctrl + Q (xsh reste ouvert dans le terminal pour les éditeurs graphiques). * Taper la commande nécessaire pour quitter votre éditeur de texte (Ctrl + X quitte nano). en cas de problèmes, essayer échap pour aller à la vue précédente ou Ctrl + Z pour annuler. ## Prise en charge optionnelle de la souris Il existe un support de souris optionnel. Ne soyer pas trop inquiet s'il n'est pas activé pour votre configuration de terminal ou xsh. C'est complètement optionnel. Les utilisateurs avancés de xsh l'utilisent rarement. * Appuyer sur Ctrl + G pour revenir à l’endroit où nous étions dans xsh. * Double-cliquer sur la ligne `$ ls` pour la réduire. * Double-cliquer dessus pour le réexécuter. (Un double-clic est semblable à Ctrl + O.) * Essayer de cliquer pour positionner le curseur. Cliquer sur les mots dans la barre inférieure pour afficher une description de ce que fait chaque touche. * Cliquer sur `Ouvrir` dans la barre du bas. * Cliquer sur `Go` dans la barre du bas. * Cliquer sur le `x` à droite de la barre inférieure pour fermer la vue. Si le support de la souris n'est pas activé, appuyer sur Ctrl + \ pour voir les descriptions. # Les notes La création de notes est aussi simple que de créer un fichier texte (ou d’ajouter des éléments à un fichier texte existant). ## Bloc-notes persistant pour les commandes et les notes En bash, pourrevenir au dernier endroit en xsh, appuyer simplement sur Ctrl + G à l’invite de bash vide. De cette façon, xsh agit comme un bloc-notes persistant, dans lequel on peut entrer et sortir. * En bash, appuyer sur Ctrl + G pour revenir au dernier endroit. * Déplacer le curseur dans le coin supérieur gauche. * Taper "Le fichier hosts", puis appuyer sur Entrée, juste comme une petite note. * Déplacer le curseur vers le bas et taper d'autres mots. En xsh, tout est éditable! on peut taper n'importe où. Dans les shells traditionnels, on ne peut taper qu'à l'invite la plus basse. Lorsqu'on quitte xsh, il enregistre automatiquement la vue actuelle (et mémorise le répertoire en cours). Ctrl + G fonctionne dans les deux sens. Lorsqu'on utilise une commande shell dans xsh, il accède à bash et exécute la commande. * Déplacer le curseur sur la ligne `$ ls` et appuyer sur Ctrl + G. * Appuyer sur Ctrl + G pour revenir à xsh, au dernier endroit. * Se déplacer sur la ligne `etc /` et appuyer sur Ctrl + G pour aller à bash et cd à ce répertoire. ## Notes interactives par sujet Xsh permet de créer des notes interactives! Les notes peuvent être ce qu'on veut. Elles peuvent être aussi simples qu'une commande shell ou deux et une description. Il peut même s'agir d'interfaces utilisateur légères et puissantes pour les commandes shell et autres API. Il est conseillé d'organiser les notes en sujets. * Appuyer sur Ctrl + Q pour revenir à bash. * Appuyer sur Ctrl + X pour lister les sujets Xiki. Chaque sujet est juste un fichier texte dans le répertoire `~/xiki/`. Ils contiennent les notes. Les sujets listés ont été créés lors de l’installation de xsh, pour aider à démarrer. Les sujets créés par la suite seront ajoutés en haut de cette liste. Les rubriques utilisent une syntaxe wiki-ish simple et peuvent être créées et modifiées avec n’importe quel éditeur de texte. * Taper `di` pour filtrer jusqu'à la rubrique "disque". * Appuyer sur Ctrl + G pour accéder au fichier de sujet (cette fois en xsh). Noter que la barre du bas indique qu'on se trouve dans le fichier `~/xiki/disk.xiki`. Les lignes avec un fond gris sont des en-têtes de notes. Ils séparent chaque note. Les titres ne sont que des lignes commençant par `>`. ## Accéder rapidement aux notes C'est un peu accablant de voir toutes les notes d'un sujet à la fois. Voir seulement les noms de notes serait plus facile. Surtout pour les sujets avec beaucoup de notes. Disons 100 ou plus. * Appuyer sur Ctrl + Q pour revenir à bash. * Appuyer sur Ctrl + X pour lister les sujets Xiki. * Taper `di` pour filtrer sur "disque". * Appuyer sur Retour pour répertorier les notes du sujet. * Appuyer sur Entrée pour ouvrir la note "Espace disponible". * Appuyer sur Entrée pour exécuter la commande. Ces trois retours auraient pu être Ctrl + O à la place. La seule différence est que return masque les autres éléments avant son ouverture. On aurait aussi pu taper "espace disque" puis Ctrl + X à une invite bash vide, puis appuyer deux fois sur la touche retour. Cela montrerait le sujet "disque" et filtrerait jusqu'aux notes contenant le mot "espace". ## Moteur de recherche dans le terminal Xsh transforme le terminal en moteur de recherche! Il suffit de taper un terme de recherche à l’invite bash et d’appuyer sur Ctrl + S. C'est plus rapide et moins gênant que de copier et coller des commandes à partir de recherches sur le Web. * Appuyer sur Ctrl + Q pour revenir à bash. * Taper "processus", mais ne pas faire return. * Appuyer sur Ctrl + S pour rechercher. Les résultats de la recherche sont des notes partagées par d'autres utilisateurs de xsh. * Taper `cp` pour filtrer les résultats de la recherche "Processus prenant cpu". * Appuyer sur Entrée pour l'ouvrir. * Appuyer sur Ctrl + O pour y exécuter la commande shell. On aurait aussi pu taper "process cpu" puis Ctrl + S à l'invite bash. Toutes les notes sont privées par défaut. Le partage est encore en version bêta privée, mais sera bientôt disponible pour tous les utilisateurs xsh. ## Création de notes Pour créer une note très simple: * Appuyer sur Ctrl + Q pour revenir à bash. * Taper `echo` à l'invite bash, mais ne pas appuyer sur la touche Entrée. * Appuyer sur Ctrl + G pour accéder au fichier de sujet. C'est vide car il n'existe pas encore. Noter le chemin du fichier dans la barre inférieure. * Taper le texte suivant. ``` > Nom d'utilisateur $ echo $ USER ``` * Appuyer sur Ctrl + Q pour revenir à bash (xsh enregistrera automatiquement). * Appuyer sur Ctrl + X pour répertorier les sujets. Vous pouver voir qu'un nouveau sujet est là, avec la note à l'intérieur. C'est en haut, puisqu'il s'agit du fichier le plus récemment mis à jour. On aurait pu accomplir la même chose en créant "~/ xiki/foo.xiki" avec n’importe quel éditeur de texte. # Utilisation avec Git xsh permet de naviguer facilement dans git! ## Créer référentiel Git La rubrique "git", fournit des exemples de notes avec xsh qui crée des référentiels. * Dans bash, taper `cd` et revenir au répertoire personnel. * Taper `git` dans bash, mais ne pas appuyer sur return. * Appuyer sur Ctrl + X pour lister les notes Xiki "git". la note "+ create example repository". Il y a "+" au début car c'est une action (une note spéciale qui exécute quelque chose lorsqu'on l'ouvre). Pour créer une action, il suffit de mettre un point au début de son nom (par exemple: "\> .Foo"). * Appuyer sur Entrée et l’action clonera un dépôt avec ses branches et cd. * Taper `git log` dans bash, puis sur Ctrl + O pour l'ouvrir dans xsh. Xsh le rend interactif. * Utiliser Ctrl + O pour ouvrir un ou plusieurs commits pour voir les diffs. ## Branches Git Pour changer de branche, taper `git` et filtrer jusqu'à "branche" (bien que l'on puisse taper "git branche" directement). * Appuyer sur Ctrl + Q, puis `git` et Ctrl + O pour l’ouvrir en xsh. * Taper `br` puis appuyer sur Entrée pour développer la ligne "branche ...". * Ouvrir la branche "master" (Ctrl + O) et ouvrir "* switch to". On peut observer d'u'on a changé de branche. * Déplacer le curseur vers le bas sur une ligne vide et appuyer sur Ctrl + R pour afficher les commandes récentes. * Taper `lo` pour réduire à `git log`, puis appuyer sur Retour. On verra qu'il y a des commits "master" dans cette branche. Vous pouver les ouvrir pour voir les diffs. # Navigateur web Ignorer cette section pour n'utiliser xsh qu'avec ssh ou docker (si on ne peut pas démarrer un navigateur Web à partir du shell). ## Exécuter le code HTML dans le navigateur Web * Dans bash, taper "html/" (y compris la barre oblique) et Ctrl + O. La barre oblique à la fin indique à xsh d’exécuter une action spéciale qui affiche des extraits de code HTML dans le navigateur. * Appuyer sur Ctrl + O pour exécuter le code HTML dans le navigateur. * Dans xsh, taper "Updated" après "Sample" et appuyer à nouveau sur Ctrl + O. Les changements seront directement affichés dans le navigateur. Par défaut, un nouvel onglet est ouvert à chaque fois. Cela peut être évité en installant une dépendance qui permet à xsh d’avoir le contrôle total du navigateur. ## Contrôle du navigateur Par exemple pour créer une note expliquant comment faire une div avec des coins arrondis en CSS. * Appuyer sur Ctrl + Q pour revenir à bash. * Taper "coins CSS" puis Ctrl + S pour rechercher les notes partagées par tous. * Appuyer sur Ctrl + O pour ouvrir "Coins arrondis (rayon de la bordure)". * Appuyer sur Ctrl + X pour exposer la note afin de pouvoir l'exécuter en local. (Sinon, on aurait pu appuyer sur Ctrl + O et accéder au fichier de sujet.) * Appuyer sur Ctrl + O pour l’ouvrir dans le navigateur. On peut modifier certaines valeurs et appuyer à nouveau sur Ctrl + O. On peut également essayer de rechercher "bootstrap", "d3", "threejs", "fontawesome" ou "react" pour donner quelques exemples. # Interaction avec SQLite ## Création de tables En utilisant une note qui a été installée par défaut pour aider à réaliser le didacticiel. (A l'avenir, utiliser Ctrl + S pour rechercher d'autres notes pour les utiliser et les installer pour qu'elles soient faciles d'accès.) * Dans bash, taper "sqlite3", puis Ctrl + X pour afficher les notes Xiki pour sqlite * * Appuyer sur Ctrl + O pour exécuter "créer des exemples de tables et d'enregistrements". * Descendre sur "tables" et appuyer sur Ctrl + O pour voir les tables. On aurait pu taper "sqlite3 / tables" et Ctrl + X en bash pour accéder directement à l'action "tables". Mais il existe un sujet "tables" pour le rendre encore plus rapide. * Dans bash, taper "tables/" (y compris la barre oblique) et Ctrl + X. La barre oblique à la fin signifie exécuter l'action pour le sujet. Les actions de barre oblique sont des notes spéciales qui permettent aux sujets de se comporter éventuellement comme des actions. * Appuyer sur Ctrl + O pour développer l’un des tableaux. * Taper quelques lettres à filtrer dans un enregistrement. * Modifier le nom de la personne et appuyer sur Ctrl + O pour sauvegarder dans la base de données. On peut également taper "sqlite3/" dans bash, puis sur Ctrl + X pour exécuter des instructions SQL.