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 27/10/2010, à 10:37

Sofiane1284

bash

Bonjour,

Tout débutant sous Linux j'ai besoin de votre aide et je vais essayer d'etre le plus clair possible !
Alors voila je suis en entreprise , j'ai créer un batch qui permet de faire un robocopy quotidien du Home de tout les utilisateur de l'entreprise. Or mon tuteur souhaite que je fasse un bash sous cygwin qui permet de savoir quel jour de la semaine on est ( Lundi, Mardi.... ) et de faire en sorte que mon batch éxécute ce bash afin de savoir le jour et ensuite de faire le robocopy dans le dossier existant Lundi ou Mardi....... !

J'éspère avoir été clair et merci d'avance pour votre futur aide !

Dernière modification par Sofiane1284 (Le 27/10/2010, à 19:42)

Hors ligne

#2 Le 27/10/2010, à 10:58

Totor

Re : bash

Bonjour,

Je pense qu'il est préférable de te laisser regarder le man de l'instruction date plutôt que de te donner l'instruction toute faite.

Dernière modification par Totor (Le 27/10/2010, à 10:58)


-- Lucid Lynx --

Hors ligne

#3 Le 27/10/2010, à 10:58

Grünt

Re : bash

Essaie avec ça:

man date

Pour quitter le man, c'est la touche "q".

date +%u

Dernière modification par ǤƦƯƝƬ (Le 27/10/2010, à 10:59)


Red flashing lights. I bet they mean something.

Hors ligne

#4 Le 27/10/2010, à 11:16

Sofiane1284

Re : bash

Non Totor je ne demande pas à avoir l'instruction toute faite , je demadne juste de l'aide , je commence ma formation et je débute sous Linux et donc pour moi cygwin reste encore très floue ! Je n'ai pas eu trop de mal à créer mon batch mais la ça ce complique et comme j'ai envie de réussir , j'aimerai bien résussir à faire ce qu'on me demande sans faire appel constamment à mon tuteur ! Et crois moi j'ai bcp cherché avant de faire ce post

Merci pour ces infos GRUNT

Hors ligne

#5 Le 27/10/2010, à 11:52

Totor

Re : bash

Loin de moi ces idées d'assistanat te concernant, désolé d'avoir paru agressif, ce n'était pas mon intention.


-- Lucid Lynx --

Hors ligne

#6 Le 27/10/2010, à 14:35

Grünt

Re : bash

@Sofiane1284:

N'hésite pas à t'installer un Linux chez toi histoire de te faire la main.

Si ton problème est résolu, tu peux éditer ton premier post et ajouter [RESOLU] dans le titre? Merci smile


Red flashing lights. I bet they mean something.

Hors ligne

#7 Le 27/10/2010, à 14:45

Sofiane1284

Re : bash

C'est ce que je fais GRUNT ? Je boot sur un cd Ubunto 9.10 et j'essaye d'apprendre les commandes et avec le temps ça va rentrer tongue !
Pour le moment mon problème n'est pas résolu , une fois que j'aurai le script et que ca fonctionnaire je metterai RESOLU.

Hors ligne

#8 Le 27/10/2010, à 14:56

Grünt

Re : bash

Si tu veux qu'on t'aide pour le script tu peux en poser des morceaux ici, hein. On va pas l'écrire à ta place mais on peut t'expliquer.


Red flashing lights. I bet they mean something.

Hors ligne

#9 Le 27/10/2010, à 15:25

Totor

Re : bash

bon à savoir : le comportement sous cygwin peut être différent que sous linux (c'est pour cela que je déteste cygwin....)


-- Lucid Lynx --

Hors ligne

#10 Le 27/10/2010, à 17:10

Sofiane1284

Re : bash

@grunt , Tu veu que je poste mon script qua j'ai fais en batch pour robocopy ??
@totor, mon tuteur maitrise assez bien cygwin et ça a l'air assez pratique , mais pour mon sujet même lui n'y arrive pas smile

Hors ligne

#11 Le 28/10/2010, à 16:21

Sofiane1284

Re : bash

Alors voilà mon bash sera comme ça je pense

#! /bin/bash

date = 'date +%a'

echo $dd

$ if [[ $dd =="Mon" ]]; then echo "Lundi;
   elif [[ $dd =="Tue" ]]; then echo "Mardi"
   elif [[ $dd =="Wed" ]]; then echo "Mercredi"


et ainsi de suite , comment je peu faire pour qu'ensuite il lance mon batch et que donc il backup dans le dossier et que je souhaite qui porte le nom du jour ?

Merci

Hors ligne

#12 Le 28/10/2010, à 17:45

Grünt

Re : bash

Tu devrais plutôt utiliser "case/esac" pour ça.


Red flashing lights. I bet they mean something.

Hors ligne

#13 Le 28/10/2010, à 19:20

ehmicky

Re : bash

Je sais pas si c'est moi qui ait pas compris ta situation, mais j'ai l'impression que tu dis que :

Sofiane a écrit :

@totor, mon tuteur maitrise assez bien cygwin et ça a l'air assez pratique , mais pour mon sujet même lui n'y arrive pas smile

ton sujet, c'est bien faire une copie des home en fonction du jour de la semaine ? Si oui, ton tuteur "maîtrise" cygwin, mais ne sait pas faire ça, et te demande d'utiliser cygwin (que tu es juste en train d'apprendre), pour ensuite lancer un batch (?), tout ça pour assurer les sauvegardes de la boîte ? Je dois avoir louper quelque chose :-|

Dernière modification par ehmicky (Le 28/10/2010, à 19:36)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#14 Le 29/10/2010, à 09:26

serged

Re : bash

Sofiane1284 a écrit :

Alors voilà mon bash sera comme ça je pense

#! /bin/bash

date = 'date +%a'

echo $dd

$ if [[ $dd =="Mon" ]]; then echo "Lundi;
   elif [[ $dd =="Tue" ]]; then echo "Mardi"
   elif [[ $dd =="Wed" ]]; then echo "Mercredi"

et ainsi de suite , comment je peu faire pour qu'ensuite il lance mon batch et que donc il backup dans le dossier et que je souhaite qui porte le nom du jour ?

Merci

Plutôt :

date=`date "+%a"`
echo $date
if [[ $$date="Mon." ]]; then echo "Lundi"
#etc.

- Mettre la fonction entre ` ` (quotes inverses, AltGr-7 sur un clavier français)
- Mettre les paramètres entre " "
- Un point après le nom du jour
- Ne pas se tromper de variable :-)


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#15 Le 29/10/2010, à 09:48

credenhill

Re : bash

hello
autre méthode

$ s=(lundi mardi mercredi jeudi vendredi samedi dimanche)
$ j=${s[$(date +%u)-1]} ; echo $j
vendredi

Hors ligne

#16 Le 29/10/2010, à 21:13

tshirtman

Re : bash

ce serait pas mal d'expliciter un peu cette méthode… je suis assez aguerrie en bash, et elle m'apparait difficile à comprendre, à fortiori pour un débutant! (oui j'ai finis par comprendre les remplacement avec ${} plus l'execution avec $()… mais bon)

Dernière modification par tshirtman (Le 29/10/2010, à 21:14)

Hors ligne

#17 Le 30/10/2010, à 10:26

credenhill

Re : bash

on crée un tableau s de 7 éléments, indexé de 0 à 6
s=(lundi mardi mercredi jeudi vendredi samedi dimanche)
${s[X]} cette syntaxe retourne l'élément X du tableau s
$(date +%u) retourne le No du jour de la semaine avec lundi=1
${s[No du jour -1 ]} retourne le jour de la semaine

Hors ligne

#18 Le 30/10/2010, à 10:58

Totor

Re : bash

Bonjour,

2 astuces smile
Pour éviter de faire le -1, on peut procéder ainsi

s=([1]=lundi [2]=mardi [3]=mercredi [4]=jeudi [5]=vendredi [6]=samedi [7]=dimanche)
# ou encore
s=( "" lundi mardi mercredi jeudi vendredi samedi dimanche)

-- Lucid Lynx --

Hors ligne