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".
nombre réponses : 25

#0 Re : -1 »  Un script pour renommer mes photos et pour apprendre. » Le 22/04/2015, à 01:26

Postmortem
Réponses : 11

Salut,
Pour l'année, j'ai pas de quoi tester mais voilà déjà pour le renommage en mettant par exemple "(1 sur 65)" pour chaque photo. Tu n'as plus qu'à ajouter ce qu'il faut pour l'année dans la boucle :

#!/bin/bash
cd "/chemin/vers/Anniversaire_De_Tonton_Maurice"
liste_fic=( "Anniversaire_De_Tonton_Maurice_"*.jpg )
nb_photos=${#liste_fic[@]}
for fic in "${liste_fic[@]}"
do
   nouveau_nom=$(sed "s/_\(([^)]*\)/ \1 sur $nb_photos/" <<<"$fic" )
   echo mv -i "$fic" "$nouveau_nom"
done

Si ça te semble ok, il faut enlever "echo" devant la commande "mv" pour faire le renommage.

Il est tard du coup j'ai un peu la flemme pour les explications mais si tu as des questions, je répondrai dès que possible. Ou je ne doute pas que quelqu'un d'autre se fera une joie de le faire !

#1 Re : -1 »  Un script pour renommer mes photos et pour apprendre. » Le 22/04/2015, à 09:28

Postmortem
Réponses : 11

Dans mon script, la ligne suivante dit de remplacer la 1ère occurence de "_(1" par exemple par " (1 sur 65". Si tes photos n'ont pas le même modèle dans le nom ça fait rien et "nouveau_nom" est égal à "fic" :

nouveau_nom=$(sed "s/_\(([^)]*\)/ \1 sur $nb_photos/" <<<"$fic" )

Je m'étais basé sur l'exemple que tu avais donné.
À la place, on pourrait essayer ça :

liste_fic=( *.jpg )
nb_photos=${#liste_fic[@]}
for fic in "${liste_fic[@]}"
do
   nouveau_nom=$(sed "s/\((\?[0-9]\+\)\()\?\.jpg\)$/\1 sur $nb_photos\2/" <<<"$fic" )
   echo mv -i "$fic" "$nouveau_nom"

done

#2 Re : -1 »  Un script pour renommer mes photos et pour apprendre. » Le 22/04/2015, à 22:07

Postmortem
Réponses : 11

Alors, la syntaxe variable=$(commande) permet d'affecter le résultat de la commande à la variable.
La syntaxe de sed (enfin, une des possibilités ! ) c'est s/expression rationnelle/remplacement/. Ça met donc remplacement à la place de la chaîne qui correspond à l'expression rationnelle.
Dans l'expression rationnelle \((\?[0-9]\+\)\()\?\.jpg\)$ :
\(...\) : permet de faire un regroupement qu'on peut rappeler dans le remplacement par \1 pour le premier regroupement, \2 pour le 2ème etc...
\? : veut dire 0 ou une fois le caractère précédent.
(\? : veut donc dire 0 ou une (
\+ : une ou plusieurs fois le caractère précédent
[0-9] : n'importe quel chiffre entre 0 et 9
[0-9]\+ : veut donc dire un ou plusieurs chiffres
. : ça veut dire n'importe quel caractère
\. : ça veut dire le caractère point (Le \ fait que . n'est pas considéré comme le caractère spécial comme vu juste au dessus)
$ : veut dire fin de la ligne (ou fin du tampon)
L'expression rationnelle \((\?[0-9]\+\)\()\?\.jpg\)$ cherche donc :
   - 0 ou une parenthèse ouvrante suivie d'un ou plusieurs chiffres : on rappellera ce qui est trouvé par \1
   - A la suite, on cherche 0 ou une parenthèse fermante suivie de la chaîne .jpg et cela doit se trouver à la fin de la chaîne qu'on analyse. On rappellera ce qui est trouvé par ce regroupement par \2.

#3 Re : -1 »  Un script pour renommer mes photos et pour apprendre. » Le 23/04/2015, à 08:44

Postmortem
Réponses : 11

Beaucoup de commandes, comme sed, travaillent sur des fichiers. Ces commandes, à la place de travailler sur un fichier, elles peuvent travailler sur l'entrée standard (qui en fait est un fichier car sur UNIX/Linux tout est fichier).
Quand t'es dans un terminal, l'entrée standard c'est ce que tu saisis au clavier.
En utilisant la syntaxe commande <<<"chaîne de caractères", l'entrée standard de la commande est cette chaîne de caractères, c'est comme si la commande travaillait sur un fichier ne contenant que cette chaîne de caractères.
Il me semble que c'est spécifique à bash, on trouve bcp plus souvent ce genre de syntaxe :

echo "chaîne de caractères" | commande

Lorsqu'on indique pas de fichier à une commande qui habituellement traite les données d'un fichier, le fait de ne pas mettre de nom de fichier fait que la commande va travailler sur son entrée standard et donc, ici, la sortie standard de echo "chaine de caractères" est envoyée sur l'entrée standard de la commande par l'intermédiaire de |.

Pour finir, <<< est en fait un raccourci de ceci :

commande <<FIN_ENTREE
Ici vont des données qui seront
passées sur l'entrée standard
de la commande.
FIN_ENTREE

Tu trouveras des explications sur tout ça dans la partie REDIRECTIONS de man bash

#4 Re : -1 »  [Résolu] Substitution inopérante dans "grep -e "^${variable}" » Le 27/04/2015, à 20:18

Postmortem
Réponses : 5

Salut,
sudo demande un mot de passe quand on l'execute et là, ça te dit qu'il n'y a rien pour rentrer le mot de passe.
Dans ton lanceur, tu peux mettre un truc du genre EXEC=gnome-terminal -e /tmp/script ainsi tu pourras rentrer le mot de passe.

Ou tu configures sudo pour qu'il ne demande pas de mot de passe pour la commande blkid.

Il y a aussi moyen de mettre le mot de passe dans le script en utilisant l'option -S de sudo mais c'est pas très sécure !

#5 Re : -1 »  impossible de sortir du terminal[resolu] » Le 23/04/2015, à 08:48

Postmortem
Réponses : 5

Salut,
Essaie les touches <Ctrl> <Alt> <F7> en même temps.
C'est sensé t'amener sur l'interface graphique... Sous réserve qu'elle fonctionne !

#6 Re : -1 »  impossible de sortir du terminal[resolu] » Le 24/04/2015, à 01:03

Postmortem
Réponses : 5

Jette un œil ici.
Enfin, attends peut-être d'autres avis, je n'ai jamais eu à faire ça.

#7 Re : -1 »  impossible de sortir du terminal[resolu] » Le 24/04/2015, à 08:50

Postmortem
Réponses : 5

Cool, t'as gagné le droit de mettre [Résolu] dans le titre de ton 1er message !

#8 Re : -1 »  AIDE sur le filtrage de données » Le 31/03/2015, à 00:41

Postmortem
Réponses : 53

Salut,
J'espère avoir bien compris...
Je recherche une ligne contenant « TOTO MIN REAL GOOD » et j'affiche les colonnes 1 et 3 à 5 quand la ligne commence par un chiffre.
J'arrête d'afficher à la première ligne vide qui suit au moins une ligne commençant par un chiffre.
Et j'ai posé que tes colonnes faisait 15 caractères.

$ cat /tmp/test.txt
Nlignes
TOTO MIN 1

Tot1    min1    max1    abs1    int1    
Tic1
1         2          3           4         5

Nlignes (non vides)

TOTO MIN 2 PLUS

Tip2    tec2    mec2    mon2    lyp2    
11       22       33         44         55


TOTO MIN REAL GOOD

T1                            T2                           T3                        T4                 T5
x1

103            203            303            403            503
104            204            304            404            504
153            253            353            453            505          

n’importe quoi
autre chose
….
Fin fichier
$ awk 'BEGIN{FIELDWIDTHS="15 15 15 15 15"}
/TOTO MIN REAL GOOD/ { i=1 }
i && /^[0-9]/ { j=1; print $1,$3,$4,$5 }
i && j && /^$/ {i=j=0}' /tmp/test.txt 
103             303             403             503
104             304             404             504
153             353             453             505

#9 Re : -1 »  AIDE sur le filtrage de données » Le 01/04/2015, à 01:28

Postmortem
Réponses : 53

Salut,

awk '/^[ \t]*MODAL EFFECTIVE MASS[ \t]*$/ { i=1 }
      i && $1 ~ /^[0-9]+$/ { j=1; print $1,$3,$4,$5 }
      i && j && $1 !~ /^[0-9]+$/ {i=j=0}' fichier

J'ai pas testé par contre.

#10 Re : -1 »  AIDE sur le filtrage de données » Le 02/04/2015, à 09:25

Postmortem
Réponses : 53

Salut,
/^[ \t]*MODAL EFFECTIVE MASS[ \t]*$/ { i=1 } : quand awk croise une ligne ne contenant que la chaîne "MODAL EFFECTIVE MASS", éventuellement entourée par des espaces et/ou des tabulations, on donne la valeur 1 à la variable i.

i && $1 ~ /^[0-9]+$/ { j=1; print $1,$3,$4,$5 } : si la variable i est non nulle et que le 1er champ de la ligne est composé d'au moins un chiffre (et que de chiffres), on donne la valeur 1 à j et on affiche les champs voulus.

i && j && $1 !~ /^[0-9]+$/ {i=j=0} : si les variables i et j sont non nulles et que le 1er champ de la ligne n'est pas composé que de chiffres, on donne la valeur 0 à i et j.

Pour mieux comprendre, voilà une autre façon d'écrire la commande awk :

awk '$0 ~ /^[ \t]*MODAL EFFECTIVE MASS[ \t]*$/ { i=1 }
(i != 0) && ($1 ~ /^[0-9]+$/) { j=1; print $1,$3,$4,$5 }
(i != 0) && (j != 0) && ($1 !~ /^[0-9]+$/) { i=0; j=0 }' fichier

Et je viens de m'apercevoir que pour le dernier pattern, il n'y a pas besoin de tester la valeur de i étant donné que j ne pourra valoir 1 que lorsque i vaut 1.
Ça donne donc :

awk '$0 ~ /^[ \t]*MODAL EFFECTIVE MASS[ \t]*$/ { i=1 }
(i != 0) && ($1 ~ /^[0-9]+$/) { j=1; print $1,$3,$4,$5 }
(j != 0) && ($1 !~ /^[0-9]+$/) { i=0; j=0 }' fichier

#11 Re : -1 »  [RESOLU = montage partitions ntfs] commande chmod sans effet » Le 05/04/2015, à 21:16

Postmortem
Réponses : 27

Salut,
Je dis ça à tout hazard car je ne peux pas tester mais dans ton fstab, mets le "umask=002" avant "defaults", ce qui donnerait par exemple :

UUID=5892B92192B90492 /media/win7     ntfs    umask=002,defaults,gid=46 0       0

Il me semble que l'ordre dans lequel on met les options de montage a une importance.
Ensuite tu redémarres et tu vois si c'est OK.
Je ne sais plus si pour le montage, c'est la 1ère option qui compte ou si c'est la dernière.

Autre piste, n'aurais tu pas mis en place une règle udev qui prendrait le pas sur ce qu'il y a dans fstab ?

#12 Re : -1 »  [RESOLU = montage partitions ntfs] commande chmod sans effet » Le 05/04/2015, à 22:20

Postmortem
Réponses : 27

Ça m'étonnerait que tu aies changé les règles udev involontairement, si tu ne sais pas ce que c'est, il est fort peu probable que ton souci vienne de là.

Édit :
Il est normal de ne pas pouvoir changer les permissions sur une partition ntfs avec chmod ou avec nautilus. Sur du ntfs, les droits ne fonctionnent pas comme sur des partitions ext, les droits sont "simulés" comme sur du ext par les options de montage. Tous les fichiers de la partition ntfs ont les mêmes droits.

#13 Re : -1 »  [RESOLU = montage partitions ntfs] commande chmod sans effet » Le 06/04/2015, à 01:38

Postmortem
Réponses : 27
navtex a écrit :

bonjour
est-ce que par hasard tes partitions ne seraient pas montées sur /media/user/xxx
alors

sudo chown user:user /media/user/

Perso, ça je pense que c'est une mauvaise idée.
Chez moi, sur 14.04 :

$ ls -ld /media/xxxxx/
drwxr-x---+ 2 root root 4096 févr. 26 22:46 /media/xxxxx/

Dans les droits, on peut voir le « + » à la fin qui indique qu'il y a utilisation des ACL sur ce répertoire, il vaut mieux laisser comme c'est.

@piccolosaxo : question un peu couillon mais bon, vu que dans ton 1er message tu dis « certains programme ne peuvent plus créer de fichier dans les dites partitions », le souci ne viendrait-il pas de ces certains programmes ? As-tu essayer de simplement créer un fichier sur une de ces partition, par exemple en faisant :

touch /media/doc-lin-w7/fichiertest

Et sinon, après avoir vérifié, « umask=002 » doit bien apparaître après « defaults » pour tes partitions ntfs dans fstab.

#14 Re : -1 »  [RESOLU = montage partitions ntfs] commande chmod sans effet » Le 06/04/2015, à 12:52

Postmortem
Réponses : 27

Salut,
C'est bien si ça fonctionne mais j'avoue ne pas piger !
L'intérêt de remplir le fstab, c'est de monter les partitions automatiquement au démarrage ou de ne pas avoir à taper toutes les options dans la commande mount pour les partitions étant dans fstab.
Pour moi, tes lignes d'origine étaient ok dans le fstab (la seule différence qu'il y avait avec ce que j'ai chez moi, c'est umask, chez moi c'est umask=007).
Pour voir si ce qu'on a mis dans fstab est ok, une fois l'avoir modifié, il suffit de démonter/remonter la partition comme ceci :

sudo umount /media/la-partition-en-ntfs
sudo mount /media/la-partition-en-ntfs

Enfin bon, le principal est que ton souci soit résolu.

#15 Re : -1 »  le manuel et la commande man "x" RESOLU » Le 02/04/2015, à 00:21

Postmortem
Réponses : 6

Salut,
Je peux pas essayer là mais il me semble que c'est :

man -s 7 signal

Édit : grillé !

#16 Re : -1 »  Script : If avec plusieurs éléments [RESOLU] » Le 02/04/2015, à 20:30

Postmortem
Réponses : 24

Salut,

Beuhlet_Reseau a écrit :

Oui voila en gros j'aurais même rajouter pour trier par rapport à l'interface réseau concerné à faire un sort k5 ( genre trie sur la 5ième colonne).

J'ai un souci au niveau du ping bizarrement quand je l'a passe dans la console cela fonctionne mais lorsque je le lance depuis un script :

verif=/script_romain/test_routesref_cat/result/verif
serveur=aus106

if [ ping -c 1 $serveur > /dev/null ]
then
        echo "$serveur est connectee" > $verif
else
        echo "$serveurest pas connectee"
fi

ou même sa

if [ rsh $serveur ping -c 1 $serveur > /dev/null ]
then
        echo "$serveur est connectee" > $verif
else
        echo "$serveurest pas connectee"
fi

Ton problème vient de la façon dont tu fais ton if ; la syntaxe de if en Shell, comme quelqu'un te l'a dit plus haut, est :

if commande1
then
commandes2
else
commandes3
fi

Si le code retour de commande1 est égal à 0, on exécute les commandes2 ; si le code retour de commande1 est différent de 0, on exécute commandes3.
Il faut donc écrire ton test comme ceci :

if ping -c 1 $serveur > /dev/null
then
        echo "$serveur est connectee" > $verif
else
        echo "$serveur est pas connectee"
fi

Les "[ ]" derrière un if ne sont qu'un raccourci de la commande "test", ceci :
if [ $toto -eq 1 ]
Équivaut à :
if test $toto -eq 1

#17 Re : -1 »  crontab et nohup » Le 23/01/2015, à 16:24

Postmortem
Réponses : 5

Salut,
Pour avoir les messages d'erreur de la copie dans le fichier /home/bobyiii/log.txt :

cp /home/bobyiii/test.txt /home/bobyiii/savetest.txt > /home/bobyiii/log.txt 2>&1

#18 Re : -1 »  Problème de définition de variable » Le 27/09/2014, à 13:33

Postmortem
Réponses : 7

$(commande) est remplacé par le résultat de la commande. L'affectation est ensuite faite.
Ça ne marche pas que pour les affectations, on peut par exemple faire :

echo "Voici la date : $(date)"

#19 Re : -1 »  [SED] Ajouter un bloc de texte après un match suivi d'un non match » Le 02/10/2014, à 16:18

Postmortem
Réponses : 3

Salut,

$ cat fic
   <connection-pool name="jdbc/pool01" max-connect-attempts="2" max-connections="10" min-connections="1" num-cached-statements="200">
      <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="user01" password="password01" url="jdbc:oracle:thin:@Oracle_SID_01" commit-record-table-name="">
         <connection-properties>
            <property name="implicitCachingEnabled" value="true"/>
            <property name="oracle.jdbc.FreeMemoryOnEnterImplicitCache" value="true"/>
            <property name="v$session.program" value="__VALUE__"/>
         </connection-properties>
      </connection-factory>
   </connection-pool>
   <connection-pool name="jdbc/pool02" max-connect-attempts="2" max-connections="10" min-connections="1" num-cached-statements="200">
      <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="user02" password="password02" url="jdbc:oracle:thin:@Oracle_SID_02" commit-record-table-name=""/>
   </connection-pool>
$ sed '/<connection-factory/ {N; /\n *<connection-properties/! s#\(\n.*\)#\n         <connection-properties>\n            <property name="implicitCachingEnabled" value="true"/>\n            <property name="oracle.jdbc.FreeMemoryOnEnterImplicitCache" value="true"/>\n            <property name="v$session.program" value="__VALUE_02__"/>\n         </connection-properties>\1#}' fic > fic2
$ cat fic2
   <connection-pool name="jdbc/pool01" max-connect-attempts="2" max-connections="10" min-connections="1" num-cached-statements="200">
      <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="user01" password="password01" url="jdbc:oracle:thin:@Oracle_SID_01" commit-record-table-name="">
         <connection-properties>
            <property name="implicitCachingEnabled" value="true"/>
            <property name="oracle.jdbc.FreeMemoryOnEnterImplicitCache" value="true"/>
            <property name="v$session.program" value="__VALUE__"/>
         </connection-properties>
      </connection-factory>
   </connection-pool>
   <connection-pool name="jdbc/pool02" max-connect-attempts="2" max-connections="10" min-connections="1" num-cached-statements="200">
      <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="user02" password="password02" url="jdbc:oracle:thin:@Oracle_SID_02" commit-record-table-name=""/>
         <connection-properties>
            <property name="implicitCachingEnabled" value="true"/>
            <property name="oracle.jdbc.FreeMemoryOnEnterImplicitCache" value="true"/>
            <property name="v$session.program" value="__VALUE_02__"/>
         </connection-properties>
   </connection-pool>

#20 Re : -1 »  piper le résultat d'avconf -i » Le 02/10/2014, à 20:40

Postmortem
Réponses : 2

Salut,
avconv semble sortir tout ce texte sur la sortie d'erreur.
Pour mettre la sortie d'erreur dans un fichier :

commande 2> fichier

Pour mettre la sortie d'erreur ET la sortie standard dans un fichier :

commande > fichier 2>&1

Pour envoyer la sortie d'erreur ET la sortie standard vers l'entrée d'une autre commande :

commande 2>&1 | commande

Ajout :
Et pour n'envoyer que la sortie d'erreur vers l'entrée d'une autre commande :

exec 3>&1
commande 2>&1 >&3 | commande
exec 3>&-

#21 Re : -1 »  [RÉSOLU]Problème de crontab » Le 30/09/2014, à 11:21

Postmortem
Réponses : 24

Salut,
Lorsque tu lances tes scripts manuellement, peux tu nous montrer les commandes exactes que tu tapes et avec quel user tu les lances ?
Peux tu nous dire aussi comment tu édites ta crontab ("crontab -e", "sudo crontab -e" ou directement dans un fichier) ?

#22 Re : -1 »  [RÉSOLU]Problème de crontab » Le 30/09/2014, à 14:16

Postmortem
Réponses : 24

Lorsque tu lances ton script depuis le navigateur, quel user est utilisé ?
Comme tu le fais dans cron, c'est root qui lance le script.
De plus, certainement que lorsque tu lances ton script depuis ton navigateur, un certain nombre de variables doivent être utilisées, genre le nom de la base. Chose que cron ne connaît pas.

#23 Re : -1 »  [Résolu] date fichier ne marche pas avec crontab » Le 30/09/2014, à 06:48

Postmortem
Réponses : 14

Salut,
Dans cron, les % dans le champ de commande sont vus comme des caractères spéciaux, tout ce qui suit le % est envoyé sur l'entrée standard de la commande. Il aurait donc fallu faire :

50 18 * * * cd ~/www/site/app; "Console/cake" delete > "date-`date +%Y-%m-%d-%H-%M`.log"

Voir peut-être même :

50 18 * * * cd ~/www/site/app; "Console/cake" delete > "date-`date +\%Y-\%m-\%d-\%H-\%M`.log"

#24 Re : -1 »  Lancer une application au démarrage (mais en arrière plan) » Le 28/09/2014, à 10:41

Postmortem
Réponses : 4

Salut,
Il faudrait que tu donnes la commande exacte que tu lances et comment tu la lances actuellement ? T'as du la mettre dans "applications au démarrage" ou un truc du genre je suppose ?