Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 05/10/2009, à 17:34

Grew

Créer sa propre commande unix

Bonjour.

Savez vous comment créer une commande unix?

Par exemple:
J'ai un dossier dans lequel je stock tous mes fichiers de programmation (shellscript en l'occurrence).
Et ça me soule un peu de faire

"root@benux:/# cd /media/stock/progs_shell"

à chaque fois que je veux travailler.

Alors j'ai fait un petit script (progs_shell.sh):

#!/bin/sh

cd /media/stock/progs_shell

qui me placera directement dans mon dossier "progs_shell".

Maintenant j'aimerais bien que ce script puisse être exécuté comme une commande unix, par exemple si je tape progs_shell dans un terminal, il exécute mon script et je me retrouve dans mon dossier progs_shell smile.

J'ai essayé en mettant mon script dans /bin/ et ça ne marche pas:

ben@benux:/# progs_shell
bash: /bin/progs_shell: Permission non accordée

Idem si je le met dans /usr/bin/
Je dois surement utiliser une mauvaise technique. Pouvez-vous m'aider?

Merci! big_smile

Dernière modification par Grew (Le 05/10/2009, à 17:42)

Hors ligne

#2 Le 05/10/2009, à 17:41

obiwankennedy

Re : Créer sa propre commande unix

sudo chmod u+x progs_shell.sh

pour le rendre exécutable.


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#3 Le 05/10/2009, à 17:54

Grew

Re : Créer sa propre commande unix

Merci beaucoup, ça fonctionne. Seul petit problème, mon "cd" n'est pas pris en compte. L'exécution de la commande ne produit rien!  -.-'

Ce code ne produit rien:

#!/bin/sh

cd /media/stock/progs_shell

Par contre ici, le echo s'affiche:

#!/bin/sh

echo "cd /media/stock/progs_shell";

Dernière modification par Grew (Le 05/10/2009, à 18:09)

Hors ligne

#4 Le 05/10/2009, à 18:10

Michel38

Re : Créer sa propre commande unix

Bonjour,
Et un petit alias dans ton .bashrc ?
   

alias XXX='cd /media/stock/progs_shell'

Ne pas oublier un petit

source .bashrc

pour activer l'alias


Every day is a school day ... Your Ubuntu User number is # 572
Portable ASUS Dual Core T2130 de chez Iventive - 1.86 GHz - RAM:2 Go - DD 160 Go - Hardy Heron 8.04.4 LTS - Noyau 2.6.24.24 Generic - LiveBox Sagem 4 Mo
Mon Blog http://mdoucet.wordpress.com/

Hors ligne

#5 Le 05/10/2009, à 18:26

Grew

Re : Créer sa propre commande unix

Ah je ne savais pas qu'on pouvait faire ça, merci.
Et si je veux passer des paramètres a ma commande?

Hors ligne

#6 Le 05/10/2009, à 18:35

Grew

Re : Créer sa propre commande unix

Ha j'ai compris! Y'a qu'a mettre le script en alias! smile

Hors ligne

#7 Le 05/10/2009, à 19:06

Grew

Re : Créer sa propre commande unix

Mmmhh... petit probleme encore, j'ai bien mis mon alias dans .bashrc de mon /home/ben/ , j'ai rajouté l'alias

alias vazy='/home/ben/MesScripts/vazy'

et voici mon fichier vazy:

#!/bin/sh

if test $1 = "perl"
then		
	cd /media/stock/prog/perl
fi

if test $1 = "php"
then		
	cd /media/stock/prog/php
fi

if test $1 = "shell"
then		
	cd /media/stock/prog/shell
fi


echo "AAAAAA";

J'ai fait un petit:

source .bashrc

Là il reconnait ma fonction "vazy", mais il ne fait rien a part m'afficher le "AAAAAA"!

Dernière modification par Grew (Le 05/10/2009, à 19:23)

Hors ligne

#8 Le 05/10/2009, à 19:37

arieugon

Re : Créer sa propre commande unix

Si tu crées un répertoire /home/moncompte/bin et que tu mets tes shell-scripts dedans ils seront lancés dès que tu les taperas.
/home/MonComte/bin est dans la variable PATH. C'est fait exprès. Voilà.

Linuxement ;O)


portable ASUS K73E-TY202V :  Windows7  Ubuntu 12.04 64 bits
portable SAMSUNG R710       :   VISTA          Ubuntu 10.04 64 bits

Hors ligne

#9 Le 05/10/2009, à 19:40

Grew

Re : Créer sa propre commande unix

OK merci!
Mais apparemment il y a un problème avec le "cd", car n'importe quelle autre commande dans mon "vazy" fonctionne hmm !
Un "cd" ne fonctionnerais pas dans un script? (j'en doute!)

Hors ligne

#10 Le 05/10/2009, à 20:45

n3o51

Re : Créer sa propre commande unix

Le cd fonctionne !! big_smile Mais en faites tu veut que quant tu tape
nomdetonscript  shell allez dans le repertoire shell c'est ca ?

PS : Si c'est cela lance comme ça le script

. ./tonscript.sh  perl

Dernière modification par n3o51 (Le 05/10/2009, à 20:58)


Welcome to the real world
________________________________

Hors ligne

#11 Le 05/10/2009, à 20:58

Link31

Re : Créer sa propre commande unix

Grew a écrit :

OK merci!
Mais apparemment il y a un problème avec le "cd", car n'importe quelle autre commande dans mon "vazy" fonctionne hmm !
Un "cd" ne fonctionnerais pas dans un script? (j'en doute!)

"cd" fonctionne dans les scripts mais ne change pas le dossier courant du shell parent, sauf si tu lances ton script avec "source ton_script.sh".

Il y a d'autres solutions que tu pourrais essayer :

export CDPATH=.:/media/stock
cd progs_shell

Dernière modification par Link31 (Le 05/10/2009, à 21:00)

Hors ligne

#12 Le 05/10/2009, à 21:25

Grew

Re : Créer sa propre commande unix

Merci! Je crois que j'ai compris cette fois.

Link31 a écrit :

Il y a d'autres solutions que tu pourrais essayer :

export CDPATH=.:/media/stock
cd progs_shell

Peux tu m'expliquer comment fonctionne ce petit bout de code? (plus précisément la fonction export CDPATH.

Merci à vous tous pour votre si efficace aide! big_smile

Hors ligne

#13 Le 06/10/2009, à 19:29

n3o51

Re : Créer sa propre commande unix

ce petit bout sers simplement a export ou "ajouter" a cdpath un chemin d'acces car c'est lui qui es interroger lors d'un cd .


Welcome to the real world
________________________________

Hors ligne

Haut de page ↑