vendredi, août 08, 2008

Le Terminal sous os X

Comment fait on pour customiser son Terminal sous Linux ?

On répond a cette question dans de nombreux forums et autres sites mais pour Mac Os le problème peu parfois rester tout entier.


Mac Os étant basé sur un Kernel 4.4 BSD, cet os dispose de toute la compatibilité UNIX et donc d’un terminal compatible SH, CSH, BASH pour ne citer qu’eux.


Par exemple dans un système Linux les paramètres relatifs à vos préférences au niveau du Shell sont enregistrés dans un fichier .bashrc a la racine de votre dossier /home. (Le nom du fichier commençant par un point il s’agit donc d’un fichier caché pour Unix). Le Type de shell est quant a lui déterminé dans le fichier
/etc/passwd.

A chaque lancement d’un terminal, le script contenus dans .bashrc charge vos raccourcis, vos variables … bref tout ce que vous y avez mis. Sous Mac vous pouvez toujours lancer un ls –al sur votre /User/*votreLogin* il n’y auras pas la moindre trace de .bashrc. En revanche il y a un fichier bashrc qui est chargé à chaque lancement de Terminal.app – ! Pour chaque utilisateur de votre mac ! - .
Celui-ci est présent dans
/etc. Vous pouvez l’éditer en tapant la commande suivante dans le Terminal :
Sudo nano /etc/bashrc

Nano est un éditeur bien connu dans le monde de linux et préinstallé avec mac Os, et sudo vous permet d’avoir les droits root pour l’exécution de cette commande car le fichier n’est éditable que par l’autorité root.
Maintenant voyons par exemple ce que vous pouvez faire avec ce fichier :

1) Des « alias »

2) Colorer votre Terminal
3) Bien plus encore


1) Les Alias

Un alias est un raccourci de commande. Par exemple, « ls –al » peut être, et est directement disponible sous certaines distrib de tux sous la forme « ll »
Le code permettant de faire cella est :
alias ll='ls –al'

Voilà pour ce qui est des bases, après on peut faire des choses bien plus amusantes comme par exemple résumer la ligne de commande d’une attaque Ipod en 3 lettres suivies de l’adresse Ip de destination.
En clair, une attaque Ipod est en fête une attaque Ping Of Death (ou ping de la mort) mais comme nous sommes sous mac Os ^^ …

On exécute un maximum de ping d’une taille maximale sur une ip pour surcharger la machine. Cette technique date de la dernière guerre mais c’est toujours utile pour faire laguer le réseau pendant un Tp ou une Lan (à titre amical bien sur ^^)
Sous mac Os il faut taper :
sudo ping -s 65507 –f @ipDestination

Mais en ajoutant ceci a votre bashrc :
alias atk='sudo ping -s 65507 -f'

Il vous suffit dorénavant de taper « atk +votre@IpIci » puis de taper votre mdp et c’est partit.

Une utilisation plus « pro » est pour ma part d’accéder en ssh à mes machines virtuelles en 3 lettres. Bien qu’il soit déconseillé d’utiliser SSH en root c’est tout de même pratique pour un étudiant, mais par à effectuer pour un serveur en production.

Ici le raccourci utile est de la forme :
alias vm1='ssh -l root 192.168.73.4'

Bien sur sous réserve que votre machine soit en ip fixe…

Enfin plus rapide que le clear d’unix le cls de Windows est pratique :

alias cls='clear'

« one more thing’ » comme aurais dit dieu Steve Jobs
VAR1=`hostname`
VAR2=`uname -s`
VAR3=`uname -r`
VAR4=`uname -p`

VAR5=`machine`
alias wtf='echo Hi I am $VAR1 with my Kernel $VAR2 $VAR3 under a $VAR5 architecture'


Je vous fais confiance pour trouver encore d’autres applications.

2)

Il faut savoir que la décoration du prompt est régit par une variable PS1 que l’on initialise a chaque démarrage du terminal.
On vas donc inscrire cette variable dans notre fichier bashrc pur charger celle-ci a chaque lancement.

Cette variable régît à un code particulier pour les couleurs et vous avez la possibilité d’utiliser des variables d’environnement pour afficher différents noms …

Pour ce qui est de colorer le prompt de votre terminal je vous fais confiance pour trouver toute l’aide nécessaire sur les différents forums Linux relatifs à ce sujet.


Voici par exemple la ligne de conf de mon prompt
PS1='\[\033[1;32m\][\[\033[0;m\]\u@\h\[\033[1;32m\]]\[\033[0;m\] \[\033[0;35m\] \w \[\033[1;37m\] \$ '

Et ce qu’il en découle ...


terminal osX

3)

Bien plus encore …


Je recommande L'aide en ligne édite par Apple concernant le shell Scripting ici, anci que toute l’aide en ligne relative concernant bash, que vous trouverez la plus part du temps sur des forums Linux.


A noter que si vous souhaitez avoir les retours de 'ls' de façon coloré, cella est possible via entre autre :
export LS_OPTIONS='--color=auto'

A ajouter bien sur quelque part dans votre fichier bashrc.

Enfin les annotations doivent êtres précédé de # comme pour tout script bash qui ce respecte.