mercredi 13 août 2008

Comment ouvrir rapidement un nouveau TTY ?

Salut,

Bon rapidement une petite astuce pour ouvrir un autre TTY sur son système Linux...

Utilisez juste la commande... open, ou alors openvt, si open est déjà assigné !

Attention, la commande doit etre exécutée à partir d'une console Linux, donc d'un TTY.

Vous pouvez spécifier la commande à exécuter, par défaut openvt ouvre votre shell, pour plus d'informations, man open ^^

pistache

Argh, une petite erreur

Salut,

Désolé pour tout ceux sans compte Google qui ont eu envie de poster des commentaires...

Je viens de découvrir que les commentaires étaient autorisés uniquement pour les possesseurs de compte Google... Shame on me

Désolé à tous ^^

Petite info

Comme je viens de terminer quelque posts (Personnalisation des shells, de Bash, et les niveaux d'éxecutions) je vais me lancer dans mon projet de l'été, que j'avais en tête depuis pas mal de temps.

Le sujet sera assez proche de la MAO, et bien sur sous Linux, mais une petite partie .NET aussi.

Je vous dit pas tout de suite le sujet exact je laisse la surprise ^^.

Les niveaux d'éxecutions de Linux

Vous avez déjà probablement entendu parlé des niveaux d'éxecutions. Mais qu'est-ce que c'est au juste ?

En fait le niveau d'éxecution correspond à un stade du fonctionnement de l'OS.

Il en existe plusieurs, que vous pouvez en fait personnaliser, mais là n'est pas le but de ce post.

  • 0 pour l'arrêt du système
  • 1 pour l'arrêt du système en mode mono-utilisateur
  • S qui permet le passage en mono-utilisateur. Celui-ci n'est pas directement utilisé, il est appelé lors du passage en niveau 1
  • 6 pour le redémarrage du système

Généralement le niveau 2 est utilisé pour l'interface graphique.

Le mode mono-utilisateur est un mode qui ouvre une seule console (/dev/console), connectée en root tout de suite. Quand on démarre en "Recovery Mode", on démarre tout en restant en mode 1 (mono-utilisateur), il faut donc bien protéger le Recovery Mode (le mot de passe sur le recovery mode dans grub est une bonne solution).

Pour changer de mode, il faut utiliser la commande init. En fait quand init est lancé par un utilisateur et non par le kernel, il redirige la commande vers telinit.

En fait init, c'est le processus lancé au début par le kernel, et qui lance touts les autres (dont les ttys, l'interface graphique, les services init.d) en lisant son fichier de configuration :

/etc/inittab

Avec ce fichier on peut rajouter des TTY sur Ctrl+Alt+F8 par exemple, ou encore une deuxième interface graphique, même si c'est plus compliqué.

Si jamais vous voulez passer du mode Multi-Utilisateur au mode Mono-Utilisateur, utilisez juste la commande init (ou telinit) avec comme argument le numéro du niveau d'éxecution de votre choix... Attention, passer en mono-utilisateur ferme le serveurs X et vous perdez vos tâches en cours !

Dernière astuce, pour voir le runlevel (niveau d'execution chez Shakespeare ;) ), entre la commande... runlevel ! Facile, non ?

Personnaliser son bash avec des couleurs

Salut tout le monde,

petit mini-tutoriel sur la personnalisation du Shell de Linux (ou encore de Cygwin), plus précisément de... Bash. C'est le Shell (interface de ligne de commande) par défaut de Linux, donc c'est celui que vous utilisez probablement. De toute façon, les diférences sont minimes dans la plupart des cas. Ce que je vais vous apprendre à faire, c'est tout simplement changer votre "Prompt". Le prompt c'est quoi ?

Eh beh le prompt c'est tout simplement, la partie qui s'affiche à l'écran en permanence dans le shell, juste avant les commandes que vous entrez. Par exemple : pistache@pistache-laptop:~$.

Le prompt par défaut est souvent un peu tristounet, sans couleurs, mais nous allons changer ça. Alors déjà, comment modifier le prompt ? C'est tout simple, il est stocké dans la variable d'environnement PS1.
Essaiez d'entrer "echo $PS1" et vous verrez votre prompt. Le prompt est presque toujours dynamique. C'est à dire que le nom d'utilisateur n'est pas stocké en dur dans le prompt, on met plutot le code \*, ou * est remplacé par une lettre, ce qui formera un code qui sera remplacé par Bash pour mettre la valeur correspondante. Voilà un petit tableau récapitulatif des codes qu'on peut utiliser dans la Bash :

  • \a : an ASCII bell character (07)
  • \d : the date in "Weekday Month Date" format (e.g., "Tue May 26")
  • \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
  • \e : an ASCII escape character (033)
  • \h : the hostname up to the first '.'
  • \H : the hostname
  • \j : the number of jobs currently managed by the shell
  • \l : the basename of the shell’s terminal device name
  • \n : newline
  • \r : carriage return
  • \s : the name of the shell, the basename of $0 (the portion following the final slash)
  • \t : the current time in 24-hour HH:MM:SS format
  • \T : the current time in 12-hour HH:MM:SS format
  • \@ : the current time in 12-hour am/pm format
  • \A : the current time in 24-hour HH:MM format
  • \u : the username of the current user
  • \v : the version of bash (e.g., 2.00)
  • \V : the release of bash, version + patch level (e.g., 2.00.0)
  • \w : the current working directory, with $HOME abbreviated with a tilde
  • \W : the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! : the history number of this command
  • \# : the command number of this command
  • \$ : if the effective UID is 0, a #, otherwise a $
  • \nnn : the character corresponding to the octal number nnn
  • \\ : a backslash
  • \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
  • \] : end a sequence of non-printing characters

C'est en anglais mais ça devrait pas être dur à comprendre si ?

Le plus dur là dedans, c'est les "non-printing characters", les deux derniers de la liste. Ils sont très utiles (obligatoires en fait) et servent à entourer les autres codes. En fait Bash fait le compte des charactères du prompt en comptant les codes, il faut lui dire explicitement de pas le faire en entourant touts les codes avec \[ et \].

Par exemple un prompt très simple pourrait être : \[\u\]@\[\h\]$, qui donnerait : user@host$.

Pour tester votre prompt, écrivez :PS1="\[\u\]@\[\h\]$"

Et remplacez la valeur de PS1 par votre valeur.

Oui mais ça ne nous dit pas comment changer la couleur tout ça ? Eh bien c'est encore des autres codes :

Pour ouvrir la partie en couleurs :\e[x;ym Pour fermer : \e[m


Et vous remplacez X et Y par votre code de couleur, que vous prenez de ce tableau :
Color Code
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Le premier nombre, définit le format d'écriture de la couleur (souligné, gras, transparent, léger, couleur de fond, etc ,etc, essaiez les valeurs pour voir).

N'oubliez pas les non-printing characters (\[ et \]), c'est hyper important, le retour à la ligne ne marchera pas et votre bash sera vraiment foireux.

Après un peu de temps on peut obtenir un bash vraiment à son gout. Perso le mien est :

[ (compte de commandes) version de bash, périphérique, heure ]
utilisateur@hostname:repertoire$

\[\e[3;32m\][\[\e[m\] (\#) \[\e[4;31m\]\s \V\[\e[m\]\[\e[0;31m\] in device \l\[\e[m\]\[\e[3;32m\],\[\e[m\] \[\e[0;33m\]\t\[\e[m\] \[\e[3;32m\]]\[\e[m\]\n\[\e[1;32m\]\u\[\e[m\]\[\e[1;34m\]@\[\e[m\]\[\e[1;32m\]\H\[\e[m\]\[\e[0;36m\]:\[\e[m\]\[\e[1;34m\]\w\[\e[m\]\[\e[0;0m\]$\[\e[m\]

Vous pouvez vous en inspirer sans problème... On copyrighte pas les prompt à ce que je sache (pas encore ?)


Ce qui me donne :


Voilà... Merci à tous !


Sources :
PS: J'ai parlé de Matthieu Aubry et de PhpMyVisites au dernier post. Eh bien PhpMyVisites n'est plus, il a été remplacé par Piwik, beaucoup plus évolué. Son site : piwik.org
 
Pistaaaaaaaaaaaaaaache