#1 Le 14/01/2008, à 23:03
- kooma
Démarrer un script à l'entrée dans un dossier
Bonjour à tous !
Alors voila, j'ai fait un petit script sh pour les connexions à curlftpfs.
C'est organisé ainsi :
/home/fred/monftp1
/home/fred/monftp2
et le script marche ainsi :
connectftp monftp1
*Connexion à monftp1....
Le truc, c'est que j'aimerai que ce script se lance lorsque on entre dans un dossier.
Genre :
cd /home/fred/monftp1
*Connexion à monftp1...
Est ce possible ?
Hors ligne
#2 Le 15/01/2008, à 00:52
- Link31
Re : Démarrer un script à l'entrée dans un dossier
Tu peux mettre quelque chose comme ça dans ton ~/.bashrc :
while (true); do if [[ "$(ls -l /proc/$(ps | grep $(basename $0) | head -n1 | awk '{print $1}')/cwd | awk -F "-> " '{print $NF}')" == "/home/fred/monftp1" ]]; then connectftp monftp1; exit; fi; sleep 1; done &
Hors ligne
#3 Le 16/01/2008, à 03:58
- kaworu
Re : Démarrer un script à l'entrée dans un dossier
@links31
Heu. à chaques sessions bash de son user, t'aura un processus lancé
Avec zsh c'est plutà´t simple (fichier $HOME/.zshrc)
function precmd {
case "$PWD" in
$HOME/monftp[0-9]) connectftp $(basename "$PWD")
esac
}
à chaques fois que ton prompt apparait, ce code est exécuté. A toi de gérer dans ton script conectftp de ne pas ouvrir de connection sur ftp1 s'il y'en a déjà une par exemple.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#4 Le 16/01/2008, à 04:12
- benjou
Re : Démarrer un script à l'entrée dans un dossier
pourquoi pas faire l' inverse: un script qui, d' abord te monte tes partages ftp avec curlftpfs, puis t' ouvre nautilus ou la console ou ce que tu veux dans ce partage.
Donc tu ne clicke plus, ni ne cd dans ton dir, mais tu lance le script qui te fait de toute facon atterir dans ton dir a la fin...
en exemple, voila un script qui est sur mon bureau: ilo me permet de monter et d' ouvrir mon partage reseau (si il n' est pas deja monté) et le démonter (si il est déja monté). J'utilise sshfs mais le principe est le meme...
#!/bin/bash
if ! cat /etc/mtab|grep buffalo
then
sshfs login@ipserveur:/mnt/disk1 /media/buffalo
nautilus /media/buffalo
else
fusermount -u /media/buffalo
fi
Dernière modification par benjou (Le 16/01/2008, à 04:15)
écrasons l'infâme
Hors ligne
#5 Le 16/01/2008, à 11:11
- kaworu
Re : Démarrer un script à l'entrée dans un dossier
@benjou Un chat mort !
cat $fichier | grep $pattern => grep $pattern $fichier
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#6 Le 16/01/2008, à 15:46
- Link31
Re : Démarrer un script à l'entrée dans un dossier
@links31
Heu. à chaques sessions bash de son user, t'aura un processus lancé
à€ chaque session interactive, oui, mais c'était bien le but il me semble.
Quant aux sessions non-interactives, chez moi j'ai ça au début de mon .bashrc, j'imagine que c'est pareil sous Ubuntu :
if [[ $- != *i* ]] ; then
return
fi
Sinon, c'est toujours possible de lancer la commande seulement quand elle est nécessaire, ou dans le prompt, évidemment.
Dernière modification par Link31 (Le 16/01/2008, à 15:47)
Hors ligne
#7 Le 17/01/2008, à 04:01
- benjou
Re : Démarrer un script à l'entrée dans un dossier
@kaworu
effectivement, pov' matou!
écrasons l'infâme
Hors ligne
#8 Le 23/01/2008, à 15:27
- kooma
Re : Démarrer un script à l'entrée dans un dossier
@links31
Heu. à chaques sessions bash de son user, t'aura un processus lancéAvec zsh c'est plutà´t simple (fichier $HOME/.zshrc)
function precmd { case "$PWD" in $HOME/monftp[0-9]) connectftp $(basename "$PWD") esac }
à chaques fois que ton prompt apparait, ce code est exécuté. A toi de gérer dans ton script conectftp de ne pas ouvrir de connection sur ftp1 s'il y'en a déjà une par exemple.
Nickel, je vais essayer et régler ce script alors !
J'aurais bien essayé le script bash mais j'ai mis zsh par défaut sur ma machine.... Tellement plus pratique !
J'en profite pour poser trois questions au sujet de zsh :
-J'ai un bug étrange: quand je remonte dans l'historique avec la touche UP, le curseur ne se met pas en fin de ligne, mais en début de ligne, ce qui m'embête un poil. Y'a-t-il un moyen d'éviter ca ?
-De même, j'ai regardé vite fait pour mettre les couleurs sur le prompt, mais ca ne marche pas : il m'écrit la couleur directement (par ex, il m'imprime direct dans le prompt "%{$fg[yellow]%}")).
-Enfin, y'a-t-il un petit mémo des raccourcis dispos pour zsh sur le net ?
Merci de votre aide.
Hors ligne