25 novembre 2012

Debian: Utilisation des alias dans un script Shell

Les alias en Shell sont des raccourcis clavier qui évitent d'entrer des commandes trop longues lorsque celles-cis sont utilisées trop fréquemment.

Dans ce post on s'intéressera aux alias définis avec bash.

Par exemple, on a souvent l'habitude d'entrer:
ls -l
 pour lister les fichier d'un répertoire. On crée alors souvent l'alias:
alias ll='ls -l'
Pour éviter de supprimer des fichiers par erreur, on crée souvent un alias pour la commande rm:
alias rm='rm -i'
Généralement, les alias de bash sont créés dans le fichier ~/.bashrc ; éventuellement dans un fichier spécifique ~/.bash_aliases.

Cela étant, si on appelle la commande ll dans un script shell (ou directement comme suit), on obtient l'erreur suivante:
bash -c "ll"
 bash: ll : commande introuvable
En effet, les alias ne sont plus accessibles dans ce contexte. Afin de pouvoir utiliser des alias dans un script Shell, il faut procéder comme suit
#!/bin/bash
shopt -s expand_aliases # Must set this option, else script will not expand aliases. 
alias ll='ls -lr' 
echo "Testing ll"
ll 

Mais attention, la comande shopt -s expand_aliases permet d'utiliser les alias définis dans le script shell mais pas ceux qui l'ont été dans .bashrc.

Et shopt est une commande interne de bash et non de sh.

Libellés : , , , , , , , , , , , , ,

0 commentaires:

Enregistrer un commentaire

Abonnement Publier les commentaires [Atom]

<< Accueil

30 septembre 2012

Debian: Effacer l'historique de bash

L'historique du shell bash est mis à jour dans le fichier .bash_history du répertoire HOME de l'utilisateur lorsque la commande bash se termine.

Plus précisément, c'est la variable HISTFILE qui définit le fichier d'historique à utiliser, par défaut cette variable contient ~/.bash_history.


# set| grep HIST
HISTCONTROL=ignoreboth
HISTFILE=/home/myuser/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000


Pour effacer l'historique de bash, il faut donc supprimer ce fichier .bash_history pour que les nouveaux shell n'aient pas d'historique mais aussi effacer l'historique du shell courant avec la commande interne "history" de bash comme suit:

# history -c

Libellés : , , , , , , , , , , ,

0 commentaires:

Enregistrer un commentaire

Abonnement Publier les commentaires [Atom]

<< Accueil

15 août 2012

Un script Shell pour monter les clés USB au boot

Dans un post antérieur, j'expliquais une façon de monter les clés USB sous Linux sur le même point de montage à chaque fois.

En effet, deux problèmes sont rencontrés avec les clés USB sous Linux (Debian ici):
  • Le device utilisé au mount n'est pas prévisible,
  • Le point de montage s'appelle toujours KINGSTON, en fait le nom du filesystem
Maintenant que l'on a renommé les filesystem dos comme expliqué dans le post cité plus haut, on va monter les clés (cela s'applique évidemment aussi aux disques durs amovibles branchés en USB)  automatiquement au démarrage du système Debian, et ce sans passer par la configuration de Gnome ou de XFCE.

Pour cela, on utilise le script Shell suivant:

$ cat usb-mount.sh

#!/bin/sh
#
# usb-mount.sh
#
# Mount USB keys to /media/LABEL
# where LABEL is the output of the dosfslabel
# command on the corresponding device.
#
MOUNT_OPTS="uid=1000,gid=1000,errors=remount-ro"
for letter in a b c d e f g; do
dev="/dev/sd${letter}1"
if grep "${dev} " /etc/mtab > /dev/null 2>&1; then
echo "${dev} is already mounted"
continue
fi
if ! dosfslabel ${dev} > /dev/null 2>&1; then
echo "${dev} is probably not an USB key"
continue
fi
label=`dosfslabel ${dev}`
dir="/media/${label}"
if ! -d ${dir}; then
mkdir ${dir}
fi
mount -t vfat -o $MOUNT_OPTS ${dev} ${dir}
done
Il ne reste plus qu'à l'appeler au démarrage du système, par exemple en ajoutant la ligne suivante dans le fichier /etc/crontab:

@reboot root usb-mount.sh

On aura pris soin au préalable de placer le script usb-mount.sh dans le répertoire /usr/local/sbin ou /usr/local/bin afin qu'il soit trouvé par cron.

De cette façon, mes disques et clés USB sont montées automatiquement au démarrage, toujours sur le même point de montage, ce qui me permet d'avoir des commandes périodiques de backup ou d''archivage d'un disque/clé sur l'autre.

Libellés : , , , , , , , , , , , , , , , ,

0 commentaires:

Enregistrer un commentaire

Abonnement Publier les commentaires [Atom]

<< Accueil