OVH Cloud OVH Cloud

[débutant] écrire une commande ?

6 réponses
Avatar
Christophe CLEMENT
Bonjour,

Quand j'ouvre mon terminal, j'aimerais que quand je tape :
abcd

ça execute simplement la commande :
perl /un/treees/long/chemin/abcd.pl

merci

Christophe

6 réponses

Avatar
Marc Lasson
Christophe CLEMENT a écrit:
Bonjour,

Quand j'ouvre mon terminal, j'aimerais que quand je tape :
abcd

ça execute simplement la commande :
perl /un/treees/long/chemin/abcd.pl


Je vois deux solutions:

1° solution)
Tu peux creer avec ton editeur favori un fichier "abcd" :
--- debut du fichier ---
#!/bin/sh
perl /un/treees/long/chemin/abcd.pl
--- fin du fichier ---
Ensuite tu lui donnes les droits d'execution :
chmod +x abcd
Pour le lancer, tu dois taper si il est dans le meme repertoire
que toi:
./abcd
Si tu veux pouvoir le lancer depuis n'importe il faut le mettre
dans un repertoire "PATH", tu peux obtenir la liste de tes repertoires
PATH en tapant:
echo $PATH
Pour le copier dans un de ces répertoires, tu dois utiliser la commande
cpn, par exemple pour copier abcd dans /usr/bin:
cp abcd /usr/bin/
Maintenant tu peux le lancer juste en tapant:
abcd

2° solution)

tu ouvres avec ton éditeur de texte favori le fichier ~/.bashrc et tu
rajoutes ça à la fin :
function abcd() {
perl /un/treees/long/chemin/abcd.pl
}

Maintenant tu peux le lancer en tapant :
abcd

merci
derien ;)


--
Marc.

Avatar
Thomas Nemeth
Le mer 27 aoû 2003 à 18:01, Marc Lasson a tapoté :
| Christophe CLEMENT a écrit:
| > Bonjour,
| >
| > Quand j'ouvre mon terminal, j'aimerais que quand je tape :
| > abcd
| >
| > ça execute simplement la commande :
| > perl /un/treees/long/chemin/abcd.pl
|
| Je vois deux solutions:

Il y en a au moins 2 autres...


| 1° solution)
| Tu peux creer avec ton editeur favori un fichier "abcd" :
| --- debut du fichier ---
| #!/bin/sh
| perl /un/treees/long/chemin/abcd.pl
| --- fin du fichier ---
| 2° solution)
| function abcd() {

3°)
Créer un alias :
alias abcd="perl /un/treees/long/chemin/abcd.pl"

4°)
Éditer le fichier perl pour que la 1ère ligne soit :
#!/usr/bin/perl
puis faire un chmod +x /un/treees/long/chemin/abcd.pl
et un ln -s /un/treees/long/chemin/abcd.pl ~/bin/abcd


Thomas
--
BOFH excuse #87:
Password is too complex to decrypt
Avatar
Pascal Bourguignon
"Christophe CLEMENT" writes:
Bonjour,

Quand j'ouvre mon terminal, j'aimerais que quand je tape :
abcd

ça execute simplement la commande :
perl /un/treees/long/chemin/abcd.pl


Deux possibilités:
- faire un alias,
- faire un script.

(Il faudrait préciser avec quel shell vous travaillez! Vous pouvez le
savoir avec la commande:

echo $SHELL
)


Pour les alias:

Sous sh/bash/ksh:

alias abcd='perl /un/treees/long/chemin/abcd.pl'

À mettre par exemple dans le fichier ~/.profile ou ~/.bash_login ou
~/.bashrc, ou ~/.kshrc, ou parfois ~/.alias, selon comment on a
configuré ses fichiers d'initialisation et son shell (voir la page man
du shell utilisé qui indique lesquels de ces fichiers sont chargés et
quand).


Sous csh/tcsh, je ne me rappelle plus la syntaxe; ce serait à mettre
dans le fichier ~/.login ou ~/.cshrc


Pour faire un script, il suffit de mettre dans un fichier nommé abcd:

#!/bin/sh
perl /un/treees/long/chemin/abcd.pl

de lui donner les droits d'accès "exécutable", et de le placer dans un
répertoire du PATH (ou d'ajouter à la variable d'environnement PATH
l'endroit où il est placé).

Par exemple:

mkdir $HOME/bin

cat > $HOME/bin/abcd <<EOF
#!/bin/sh
perl /un/treees/long/chemin/abcd.pl
EOF
chmod 755 $HOME/bin/abcd

PATH="$HOME/bin:$PATH" # Ces deux lignes sont à mettre dans ~/.profile
export PATH # ou ~/.bashrc, ou ~/.kshrc selon, cf au dessus.





--
__Pascal_Bourguignon__ http://www.informatimago.com/
----------------------------------------------------------------------
Do not adjust your mind, there is a fault in reality.

Avatar
Christophe CLEMENT
Bonjour Marc Lasson,

Je vois deux solutions:

1° solution)
[..]

Ça ressemble beaucoup à ce que je pensais utiliser, et ça marche impec !!!


Merci !

Quand à la deuxième solution, je n'ai pas de fichier ~/.bashrc :-)

--
Christophe CLEMENT
http://www.75018.org

Avatar
Christophe CLEMENT
Bonjour Thomas Nemeth,

3°)
Créer un alias :
alias abcd="perl /un/treees/long/chemin/abcd.pl"


J'y avais pensé ! Mais à chaque fois que je quittais le terminal fallais
refaire l'alias :-

4°)
Éditer le fichier perl pour que la 1ère ligne soit :
#!/usr/bin/perl
puis faire un chmod +x /un/treees/long/chemin/abcd.pl
et un ln -s /un/treees/long/chemin/abcd.pl ~/bin/abcd


Ha oui, tout simplement :-)


--
Christophe CLEMENT
http://www.75018.org

Avatar
Stephane CHAZELAS
Le Wed, 27 Aug 2003 18:44:39 -0400, Daniel Déchelotte
écrivait :
[...]
Plus precisement, est-il possible d'avoir le comportement suivant :
- si la commande tapee est un executable present dans le PATH, on le lance.
- sinon, de deux choses l'une : si /un/trees/long/chemin/$0.pl existe,
on lance le script en question, sinon on affiche "$0: command not found".
[...]


En première approximation, en zsh, tu peux faire:

preexec() {
eval local cmd=${${(z)3}[1]}
type $cmd >& /dev/null ||
[[ ! -r /un/trees/long/chemin/${cmd}.pl ]] ||
eval "${(q)cmd}(){
perl /un/trees/long/chemin/${(q)cmd}.pl $*
}"
}

Ça ne marche que s'il n'y a qu'une commande par ligne de
commande et que le nom de la commande est au début.

--
Stéphane