Page 1 sur 1
[bash] fonction swap (résolu)
Publié : mar. 12 janv. 2016, 12:48
par Piczel
Bonjour tout le monde, suite à une multitude de fois où j'ai interverti le nom de deux fichiers, j'me suis dit que j'allais faire une fonction SWAP que voilà :
Code : Tout sélectionner
function SWAP(){
local TMPFILE=tmp.$$
cp "$1" $TEMPFILE
mv "$2" "$1"
mv $TEMPFILE "$2"
}
(j'ai aucune notion de bash, excusez mon erreur)
mais cette fonction ne marche pas.. (c'est dans mon .zshrc)
prenons un exemple : deux fichiers ABC avec abc dedans, et DEF, avec def
SWAP ABC DEF, après je me retrouve juste avec def dans ABC.. une idée ?..
J'avais pensé à faire tout ça avec cat, mais ça me semblait juste plus lourd, plus long, et moins pratique
Qu'en pensez vous ?
Merci, bonen journée !
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:02
par Moviuro
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:03
par Piczel
merci!
ça change quoi set -x et set +x ?
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:09
par Moviuro
ça va faire cracher plein de choses à ton terminal, entre autres ce qui se passe réellement lorsque tu lances ta fonction. ça ressemblera à un truc (plus court) comme
ça
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:13
par Piczel
okep merci, tiens voilà le résultat :
Code : Tout sélectionner
+-zsh:5> SWAP ABC DEF
+SWAP:1> local TMPFILE=tmp.1716
+SWAP:2> cp ABC
cp: opérande de fichier cible manquant après << ABC >>
Saisissez << cp --help >> pour plus d'informations.
+SWAP:3> mv DEF ABC
mv: impossible d'évaluer << DEF >>: Aucun fichier ou dossier de ce type
+SWAP:4> mv DEF
mv: opérande de fichier cible manquant après << DEF >>
Saisissez << mv --help >> pour plus d'informations.
ok, le problème est dans la 2e ligne du truc, avec le $TMPFILE
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:15
par Piczel
le con !!! regarde, j'appelle $TMPFILE, et mon truc s'appelle TEMPFILE..
EDIT : même en changeant, ça marche pas.. toujours la même erreur
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:45
par Moviuro
Tu as fais une typo, je te laisse résoudre
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:53
par Piczel
Ben.. ça bloque toujours à
Code : Tout sélectionner
+SWAP:4> mv DEF
mv: opérande de fichier cible manquant après << DEF >>
alors que le local, cp, et le premier mv marche très bien ..
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 13:58
par Moviuro
typo, bis repetitas
Re: [bash] fonction swap
Publié : mar. 12 janv. 2016, 14:07
par Piczel
effectivement, manquait juste des guillemets, merci mon ami !
voici le SWAP final :
Code : Tout sélectionner
function SWAP(){
local TMPFILE=tmp.$$
cp "$1" "$TMPFILE"
mv "$2" "$1"
mv "$TMPFILE" "$2"
}
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 14:24
par Moviuro
Au passage, tu devrais utiliser :
cp --reflink=auto --
au lieu de
cp
et
mv --
au lieu de
mv
pour ne pas planter sur des fichiers au nom exotique
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 14:30
par Piczel
Je regarde ça plus tard suis occupé là, merci à toi !
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 18:02
par Piczel
Bon j'ai regardé, je vois pas ce que c'est mv -- et cp --, les -- c'est pas pour ajouter des options normalement ?
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 18:04
par benjarobin
Non au contraire les "--" c'est pour indiquer que tout ce qui suit ne sont pas des options, mais des fichiers.
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 18:41
par Piczel
du coup.. cp -- fichier1 fichier2
fait exactement pareil que cp fichier1 fichier2
, mais on le rajoute par précaution, au cas où le nom est trop compliqué c'est ça ?
Re: [bash] fonction swap (solved)
Publié : mar. 12 janv. 2016, 18:43
par benjarobin
oui
Re: [bash] fonction swap (résolu)
Publié : mar. 12 janv. 2016, 20:56
par Piczel
super merci !