#!/bin/bash
if [ $# -ge 1 ]; then
for fichier in $*
do
mv $fichier "$fichier-old"
done
else
read -p 'enter le nom du dossier ou du fichier à renommer:' nom
while [ -z $nom ] || ![ -e $nom ] # voila la ligne 11
do
read -p 'enter le nom du dossier ou du fichier à renommer:' nom
done
if [ -d $nom ] || [ -f $nom ]; then
mv $nom "$nom-old"
else
read -p 'enter le nom du dossier ou du fichier à renommer:' nom
fi
fi
le probleme c'est qu'il me donne une message comme quoi j'ai commi une erreur :"commamd not found"
./variables.sh: line 11: ![: command not found
j'ai fait une petit recherche sur PATH mais jarrive pas a traiter le probleme de cette ![ ... Mercii
- Edité par IshakAl-Hazimi 14 janvier 2019 à 2:28:24
#!/bin/bash
# Déroulement du script : 1 on regarde s'il y a un paramètre, si oui on passe à l'étape 2 sinon on en met un qui sera faux et on passe à l'etape 2
# 2 On va vérifier si la saisie est bonne, si ls donne un code erreur c'est qu'il faut inviter l'utilisateur a saisir un nom correct, tant qu'ls donnera un code 2 on boucle, dès qu'ls indique que c'est bon on break la boucle
# 3 On est sur de la saisie, on liste les fichiers du répertoire courant et on renomme en ajoutant -old à la fin
#====================================================================================================================
#====================================ETAPE 2: Vérifier si ce fichier existe==========================================
#====================================================================================================================
verif() # Pour être appelé je dois la mettre en amont
{
while true
do
if ls $fichier 2>/dev/null
then
break
else
read -p "Merci de saisir le nom du fichier à rennommer:" fichier
fi
done
}
#====================================================================================================================
#======================================ETAPE 1: TRAITER LE $1 ========================================================
#====================================================================================================================
if [ -z $1 ]
then
fichier="azertyuiopoiuytrsxcfgh" # Je veux créer une erreur pour que la fonction verif me demande de sélectionner
verif # ETAPE 2: Vérifier si ce fichier existe
else
fichier=$1 # Un fichier en paramètre ou bien le joker
verif # ETAPE 2: Vérifier la saisie est bonne
fi
#====================================================================================================================
#========================================ETAPE 3: RENOMMER===========================================================
#====================================================================================================================
# A ce stade on est sûr que $nom est une valeur juste
for nom in $*
do
nomold=$(echo "$nom-old")
mv $nom $nomold
done
Je me suis permis d'en refaire un qui semble correspondre à ce que tu attends. Je me suis confronté à un problème identique à toi. Mais en relisant le cours, ou un autre, j'ai appris qu'en fait bash vérifie le signal de sortie. Du coup tu peux lancer une commande avec une redirection vers /dev/null pour la rendre muette mais te servir d'elle comme test. Exemple ls truc => si truc existe sortie standard 1 sinon sortie 2.
Par contre si quelqu'un connaît la solution pour résoudre ton souci je suis aussi preneur. Pour comprendre.
En attendant je t'en ai fait un "a ma sauce", commenté, mais si tu a besoin de plus d'infos n'hésite pas.
Petite remarque, tu fais beaucoup de répétitions. Je t'invite à jeter un œil aux fonctions. Très pratique pour ne pas se répéter et gagner en lisibilité.
En espérant t'avoir été utile, entre débutants faut s'entre-aider
- Edité par Sébastien B. 15 janvier 2019 à 11:56:20
le probleme c'est qu'il me donne une message comme quoi j'ai commis une erreur :"commamd not found"
S'il y a une erreur, alors il ne fonctionne pas
IshakAl-Hazimi a écrit:
./variables.sh: line 11: ![: command not found
L'erreur est assez explicit: ![ n'existe pas. Et Bash a raison!
Ce que tu souhaites faire est:
Tant que variable FOO est vide ou null OU variable FOO n'est pas un fichier
FAIRE bar
Fin Tant que
La négation d'une condition en Bash ce n'est pas !condition mais ! condition. C'est une histoire d'espace...
En fait [ TEST ] est un synonyme de la commande test TEST. while et if interprètent le résultat (le retour de la commande test): vraie (0) ou faux (1).
On peut également inclure la négation dans le test: [ ! TEST ]
PS:
On préférera "$@" à "$*" dans la plupart des cas. Sinon tu auras de drôles de surprises quand tu voudras modifier le nom de fichier contenant un espace par exemple.
C'est une question d'expansion, lit le manuel de Bash si tu es curieux.
J'ai terminé ce cours et j'ai fait le script demandé.
Malheureusement 2 /3 des classmates m'ont donné une mauvaise note et je ne peux avoir le certificat.
j'ai bien fait le script. il marche bien. le premier a commenté que j'ai fait des fautes d'orthographe dans les commentaire et a arrondi la note à 5/10. le deuxième a commenté que je n'ai pas rendu le script exécutable ( normalement je l'ai fait et c'est lui qui doit le faire sur son système pour pouvoir l'utiliser : son compte utilisateur pas le mien) et donc a arondi la note à 5/10. Le premier a donné une note de 8/10
Je trouve cela injuste. !! notant que ni les fautes d'orthographes ni le chmod +x n'est demandé dans le barème.
J'ai eu un souci similaire, un élève n'a pas été capable de le lancer, un autre a oublié de noter (ça met ? et ça compte 0 ^^), etc.
PAS DE PROBLÈME !!
Va dans tes mails, tu aura reçu une notification pour t'informer que tu a reçu tes notes. Tu y trouvera un lien pour demander à représenter ton travail.
Par contre, sans mauvaise pensée, retravaille le script, vérifie l’orthographe, abuse des commentaires... bref, fais comme si ton lecteur avait le QI d'une huître et qu'il ne puisse rien te reprocher... pour info j'ai eu 8/10 parce-que "c'est top mais lister le contenu du dossier avec ls *$1* c'est un peu trop je trouve"
Oui oui, en gros, j'en ai fait trop, j'aurais dû faire une simple fonction au lieux de m'amuser à faire plus. Je te rassure, je suis sur le html/css et c'est pareil. N'en tien pas compte, amuse-toi, no-limit et commente un max pour nos amies le huitres XD
si tu n'a pas de mail, envois ta demande ici: hello@openclassrooms.com
Bonne continuation
- Edité par Sébastien B. 19 janvier 2019 à 11:55:26
En 5 parties, ce cours comprend des activités et quiz au fur et à mesure de votre apprentissage. Le plus gros travail attendu est en 5ème partie avec l'activité qui consiste à réaliser des statistiques avec un script Bash.
En attendant, si vous avez des questions sur le cours, n'hésitez pas à les poser ici ! Profitez-en pour vous entraider si vous avez déjà un peu de connaissances en Linux.
Pour le secon paramètre je me suis amusé à faire un autre programme. Puis J'ai fait $1 = nom_fichier ou programme_1 ou programme_2. Sinon, avec l'exercice de base, pourquoi ne pas changer la longueur? ou un filtre? ou enregistrer le résultat? etc...
Pour avoir eu les trois corrigés sous la main je déplore le manque d’imagination qu'ils ont eu et l'absence totale d’interaction. Une erreur? pas de demande de saisie, le script s'arrête, et aucune flexibilité...
J'ai aussi fait une page de type man avec -h ou --help
Voila, je ne suis pas un expert, loin de là mais si j'ai un conseil a te donner: Amuse-toi ! Imagine ce que tu aimerais avoir et va sur google chercher les outils qui te manquent
"À partir de 17.04, sur les systèmes avec GDM (les variantes avec GNOME Shell donc), la session graphique (Xorg ou Wayland) se lance par dessus la 1ère console (et s'accède donc en faisant Ctrl+Alt+F1), et seules les consoles 2 à 6 restent accessibles, rien n'étant normalement présent à partir de Ctrl+Alt+F7.
Plusieurs sessions graphiques peuvent être lancées en parallèle, notamment si vous connectez 2 utilisateurs simultanément, donc n'hésitez pas à tester toutes les combinaisons jusqu'à Ctrl+Alt+F6 si besoin."
Du coup tu a tas réponse, avant Ctrl+Alt+F1permettait de lancer le "terminal 1 plein écran" et Ctrl+Alt+F7 de revenir en graphique. Maintenant Ctrl+Alt+F1 permet le retour en graphique donc tu ne vois rien si tu y est déjà !
Et pour les exemples de commande tout est dit, c'est juste un exemple, remplace commande par ls et paramètre par -a et tu a
ls -a
ls ou une autre on est bien d'accord
Si tu débutes sache qu'il y a souvent un partenariat GNU-Linux auprès de la FabLab la plus proche pour trouver d'autres motivés du libre.
Bonjour, je me lance dans le cours Linux . Je suis sous debian 9 ( auquel je ne comprends pas grand chose) et je me lance dans Ubuntu . Je télécharge l'iso avec mes données mobiles , mais il charge 1.5 Mo sur les 1.9 et donc échec du téléchargement.
Je viens de terminer et le cours et donc l'activité du comptage de lettres.
Est-ce que je suis le seul à avoir compris l'énoncé de travers ?
À savoir : "Mission n°1 : combien de fois est utilisée chaque lettre ?"
J'ai donc fait le compte de chaque lettre ( il peut y avoir 3 fois le A dans un mot : je le compte 3x ), et non comme le montre le corrigé compter le nombre de mots dans lequel apparaissent la lettre en question.
Exemple pour être plus claire :
- pour le mot "ABAISSA" : j'ai compté 3x A et non 1 fois comme le dit le corrigé
J'ai aussi fait mes 3 corrections et ils ont compris comme le correcteur, à voir la note qu'ils me donneront ... Dans tous les cas mon script est du coup plus long et compliqué.
J'ai installé linux sur mon PC alors que j'avais auparavant windows 8 mais maintenant je ne vois que linux alor que le GRUB s'affiche et j'ai pris une partition simple quand j'ai installé linux sur mon PC
Bonjour, je me lance dans le cours Linux . Je suis sous debian 9 ( auquel je ne comprends pas grand chose) et je me lance dans Ubuntu . Je télécharge l'iso avec mes données mobiles , mais il charge 1.5 Mo sur les 1.9 et donc échec du téléchargement.
Quelqu'un a-t-il une idée?
Merci
Bonjour @MichelGeorge1, je te conseille d'utiliser une connexion WiFi autrement tu risques d'être confronté à un seuil imposé par ton abonnement 4G (XXMo ou XXGo) ou à un paramètre mal configuré sur ton téléphone.
A prendre en compte si tu utilises ton téléphone comme point d'accès mobile, autrement j'ai mal compris ta question. Bien à toi
- Edité par BugHunt3r 10 août 2019 à 14:55:04
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.
J'ai essayé d'installer Ubuntu sur ma nouvelle machine virtuelle mais j'ai ce message d'erreur qui apparaît :
Je suis tout à fait novice en informatique. Dois-je télécharger une autre version d'Ubuntu?!
A la configuration, VirtualBox m'a forcé de décocher VT-x/AMD-V (Sysytème --> Accélération), sans quoi je ne pouvais pas valider ma configuration de la lecture du disque optique...
Voici les caractéristiques de mon pc (portable donc)
Il y a des extensions dans les CPU récents (enfin, ça existe depuis un paquet d'années quand même) pour accélérer la virtualisation. Normalement ton CPU en est équipé, mais c'est peut-être désactivé dans le BIOS. Si oui il faut aller dans le BIOS et les réactiver.
Quant à moi, je ne me rappelle plus ce qu'il y avait dans le cours mais je n'utilise pas la machine virtuelle Oracle mais VMWare: je l'utilisait en entreprise et j'ai plus d'affinités avec ce produit.
J'espère que tu trouveras une solution à ton problème. Bien à toi
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.
Je ne trouve pas de doc sous Ubuntu sur " update.rc " mais peut-être que tu cherches " update-rc.d ".
Je suis familier avec les systèmes BSD, SYSV... et Linux. Je ne sais pas exactement ce que tu veux faire mais je te conseille de regarder " telinit " et " runlevel ".
Les pages du manuel me semblent claires (toujours faire un " man -a " pour avoir toutes les occurrences).
Tu peux trouver le " runlevel " courant avec la commande " who -r ".
Ce qui me choque sur ma distrib Ubuntu, c'est que les liens dans "rc[0-x].d" sont symboliques alors que sur les OS System V nous avions des " liens hard " (même inode utilisée avec différents noms) mais pourquoi pas.
Peut-être que je me fourvoie complètement et que je n'ai pas compris ta question.
J'espère t'avoir donné un fil d’Ariane pour trouver des réponses. N'hésites pas à me poser des questions. Bien à toi.
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.
Blond, bouclé, toujours le sourire aux lèvres...
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.
Pensez a mettre +1 aux messages qui vous ont aidé et mettre résolu quand cela l'est.