Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/08/2013, à 11:24

omnimax

zshrc fonction spéciale cp et mkdir

Bonjour,

j'aimerai coder cette fonction dans mon zshrc, car lorsque je copie des fichiers vers un dossier, il faut d'abord créer le dossier et ensuite copier les fichers dedans

mkdir dossier && cp /home/$USER/*.JPG /home/$USER/dossier/ 

Hors moi j'aimerai faire ceci dans le dossier /home/$USER/

mkp *.JPG dossier
mkp() 
{
mkdir "$PWD"/$2" && cp $1  "$PWD"/"$2"
}

Mais malheureusement ma fonction ne marche pas...un petit coup de main serait bien sympa smile


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#2 Le 26/08/2013, à 11:32

omnimax

Re : zshrc fonction spéciale cp et mkdir

boulette ! j'avais mis un espace en trop
maitenant cela marche cool

mkp() 
{
mkdir "$PWD"/$2" && cp $1 "$PWD"/"$2"
}

14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#3 Le 26/08/2013, à 11:45

Watael

Re : zshrc fonction spéciale cp et mkdir

salut,

mets toutes les variables entre guillemets

mkp() 
{
mkdir "$PWD/$2" && cp "$1" "$PWD/$2"
}

un jour tu voudras peut-être faire

mkp "mon fichier" "ma destination"

alors, ça n'échouera pas smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 26/08/2013, à 12:48

pingouinux

Re : zshrc fonction spéciale cp et mkdir

Bonjour,
Quelques remarques qui s'ajoutent à celles de Watael :

omnimax #1 a écrit :

mkp *.JPG dossier

  • S'il y a plusieurs fichiers *.JPG, $1 contiendra le premier fichier, et $2 le deuxième. Si tu veux pouvoir traiter plusieurs fichiers, tu as intérêt à inverser l'ordre des arguments de mkp.

  • Si le répertoire existe déjà, mkdir s'arrêtera en erreur, et le cp ne s'exécutera pas. Utilise plutôt mkdir -p

mkp()
{
   mon_dir="$1"; shift
   mkdir -p "$PWD"/"$mon_dir" && cp "$@" "$PWD"/"$mon_dir"
}

à appeler ainsi

mkp dossier *.JPG

Hors ligne

#5 Le 27/08/2013, à 06:50

omnimax

Re : zshrc fonction spéciale cp et mkdir

Watael,

Merci "$" smile


pingouinux,

Je ne comprends pas ton utilisation de shift ?

"shift permet de décaler les paramètresLa valeur du 1er paramètre ($1) est remplacée par la valeur du 2nd paramètre ($2), celle du 2nd paramètre ($2) par celle du 3ème paramètre ($3), etc... "


en gros cela équivaut-il à dire $1 devient mon_dir et la valeur de mon_dir se décale en reprenant la valeur $1.

Ai-je bien compris?

Dernière modification par omnimax (Le 27/08/2013, à 06:56)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#6 Le 27/08/2013, à 07:11

pingouinux

Re : zshrc fonction spéciale cp et mkdir

omnimax #5 a écrit :

"shift permet de décaler les paramètresLa valeur du 1er paramètre ($1) est remplacée par la valeur du 2nd paramètre ($2), celle du 2nd paramètre ($2) par celle du 3ème paramètre ($3), etc... "

Oui.

en gros cela équivaut-il à dire $1 devient mon_dir et la valeur de mon_dir se décale en reprenant la valeur $1.

Non.
mon_dir prend la valeur $1, puis après le shift, $1 contient le nom de la première image.
"$@" contient alors le nom de toutes les images.

Hors ligne

#7 Le 27/08/2013, à 09:15

omnimax

Re : zshrc fonction spéciale cp et mkdir

je comprends pas trop...:( pourquoi ne pas faire plus simplement :

mkp()
{
mkdir -p "$1" && cp "$2" "$1"
}

en étant par exemple dans /home/$USER/images/

mkp /home/$USER/nouveaurepertoire *.jpg

Dernière modification par omnimax (Le 27/08/2013, à 09:16)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#8 Le 27/08/2013, à 09:29

pingouinux

Re : zshrc fonction spéciale cp et mkdir

Si tu as plus d'un fichier *.jpg, par exemple photo1.jpg et photo2.jpg, $1 contiendra bien /home/$USER/nouveaurepertoire, mais $2 ne contiendra que photo1.jpg. L'autre image ne sera pas copiée.

Hors ligne

#9 Le 27/08/2013, à 09:32

omnimax

Re : zshrc fonction spéciale cp et mkdir

alors pourquoi ne peux on pas mettre ?

mkp()
{
mkdir -p "$1" && cp "$@" "$1"
}

Dernière modification par omnimax (Le 27/08/2013, à 09:32)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#10 Le 27/08/2013, à 09:39

pingouinux

Re : zshrc fonction spéciale cp et mkdir

Avec mon exemple en #8, on obtiendrait ceci :

mkdir -p "/home/$USER/nouveaurepertoire" && cp "/home/$USER/nouveaurepertoire" "photo1.jpg" "photo2.jpg" "/home/$USER/nouveaurepertoire"

Le shift permet d'éliminer le répertoire qui apparaît en tête des paramètres.

Hors ligne

#11 Le 27/08/2013, à 09:46

omnimax

Re : zshrc fonction spéciale cp et mkdir

merci pingouinux, avec tes explications cela a fait tilt !

mon_dir > devient le répertoire ($1)

$1 redevient par exemple fichier1.jpg avec shift

donc $@ égal tous les fichiers.jpg (fichier1.jpg, fichier2.jpg, ...)

maintenant je comprends le décalage du shift


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne