Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2006, 15h50   #1
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Par défaut Problème avec un alias

Bonjour,

Soit la commande:
Code :
cd /usr/ports && make search name=gaim
Elle permet de rechercher le port ayant comme nom Gaim.

Pour éviter de saisir cette commande pour mes recherches, je souhaite créer un alias comme celui-ci:
Code :
alias psearch='cd /usr/ports && make search name'
Lorsque j'exécute la commande:
Cela ne m'affiche rien

Avez-vous une idée ?

Merci
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 16h03   #2
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
Euh, je n'ai pas de Linux sous la main pour tester, mais pourquoi ne pas faire :
Code :
alias psearch='cd /usr/ports && make search name='
et ensuite de l'appeler par
?

Si tu ne mets pas d'espace entre le nom de l'alias et le "=", c'est considéré comme une affectation, non ?
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 16h12   #3
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Merci pour ta réponse

Cela va être difficile de tester à moins que tu utilises FreeBSD

Cependant lorsque j'exécute la commande:
Code :
alias psearch='cd /usr/ports && make search name='
J'obtiens le message suivant:
Code :
1
2
3
4
The search target requires a keyword parameter or name parameter,
e.g.: "make search key=somekeyword"
or "make search name=somekeyword"
make: don't know how to make gaim. Stop
Je ne comprends pas ce qui se passe, pourtant en console, la commande suivante:
Code :
cd /usr/ports && make search name=gaim
fonctionne
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 16h20   #4
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
Etrange !
Normalement, avec les simples cotes, la commande devrait être protégée. En fait, elle ne devrait même pas être analysée par le shell.

Mais c'est vrai que j'ai déjà eu des réactions bizarres avec les alias, du temps où j'en abusais
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 16h42   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avec tcsh sous FreeBSD :
Code :
1
2
 
alias s 'cd /usr/ports && make search name=\!*'
?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 17h08   #6
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Julp: je viens de tester avec ton alias et le faite de taper uniquement m'affiche tous les ports disponibles et normalement, je devrais saisir
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 17h38   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est une syntaxe valable pour les shells de type csh. Quel shell utilisez-vous ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 17h59   #8
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Normalement, j'utilise Zsh, maus aujourd'hui, je teste bash dernière version avec bash-completion
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 18h41   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Eventuellement, pour remplacer les arguments comme le fait (t)csh, il serait possible d'implémenter cela pour bash à l'aide d'une fonction (voir cette discussion). Mais vous auriez peut être voulu faire ça autrement (alias uniquement) ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 18h55   #10
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Je n'ai pas penser du tout à l'utilisation d'une fonction. J'ai pensé qu'un alias pouvait largement faire l'affaire. Je vais jetter un oeil sur le lien que tu viens de me donner

Merci
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 21h35   #11
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Bonjour,

julp: vu qu'avec un alias, cela ne fonctionne pas, j'ai écris une petite fonction. Je ne me suis pas fouler mais elle fonctionne. Voici le code:
Code :
1
2
3
4
5
6
7
8
9
10
 
function psearch ()
{
  if [ $# -eq 0 ]; then
      echo "psearch: No keyword entered."
      return 1
  else
      cd /usr/ports && make search name=${1}
      cd $HOME
  fi
Qu'en pensez-vous ? Le cd $HOME, ce n'est pas top donc si vous avez des idées à me proposer, je suis preneur

Merci
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 22h22   #12
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
bash n'empile pas les répertoires visités ?
J'ai un petit doute, là...

Si tu fais ça devrait te ramener dans le répertoire précédent.
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 22h34   #13
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Citation:
Envoyé par zooro
Si tu fais ça devrait te ramener dans le répertoire précédent.
Effectivement, cela me ramène dans le répertoire précédent mais en plus du résultat il m'affiche le chemin en question. Je pensais qu'il existait une commande pour faire cela proprement mais je ne sais plus

Merci quand même
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h33.


 
 
 
 
Partenaires

Hébergement Web