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 02/11/2015, à 12:49

Compte supprimé

Petit bogue de complétion en console sur Ubuntu 14.04.3

Bonjour,

Bogue apparent de complétion sur Ubuntu 14.04.3.

Prenons le dossier Téléchargement avec une extension téléchargées deux fois :

$ ls -l
total 7136
-rw-rw-r-- 1 ludo ludo 3650997 nov.   2 11:20 Grammalecte-v0.4.10.3(1).oxt
-rw-rw-r-- 1 ludo ludo 3650997 sept. 30 12:16 Grammalecte-v0.4.10.3.oxt

Supprimons le fichier Grammalecte-v0.4.10.3(1).oxt avec un rm suivi de la touche G puis tabulation :

$ rm Grammalecte-v0.4.10.3

il faut compléter, alors j'ajoute la parenthèse ( :

$ rm Grammalecte-v0.4.10.3(

puis j'appuie sur tabulation pour finir la ligne de commande et là, problème, je m'attends à la complétion par ).oxt, mais c'est toute le nom qui reprend du début  :

$ rm Grammalecte-v0.4.10.3(Grammalecte-v0.4.10.3

Alors copié-collé en manuel :

$ rm Grammalecte-v0.4.10.3(1).oxt
bash: Erreur de syntaxe près du symbole inattendu « ( »
$ ls -l
total 7136
-rw-rw-r-- 1 ludo ludo 3650997 nov.   2 11:20 Grammalecte-v0.4.10.3(1).oxt
-rw-rw-r-- 1 ludo ludo 3650997 sept. 30 12:16 Grammalecte-v0.4.10.3.oxt

Heureusement, j'arrive à supprimer le fichier en ajoutant les guillemets :

$ rm "Grammalecte-v0.4.10.3(1).oxt"
$ ls -l
total 3568
-rw-rw-r-- 1 ludo ludo 3650997 sept. 30 12:16 Grammalecte-v0.4.10.3.oxt

Voilà, je ne crois pas que ce soit normal.

Informations de la version Ubuntu Unity passée en Gnome :

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.3 LTS
Release:	14.04
Codename:	trusty

$ uname -r
3.19.0-25-generic

Les sommes SHA256 et MD5 du DVD pour l'installation sont bonnes :

#devrait être Clé SHA256 ubuntu-14.04.3-desktop-amd64.iso
#756a42474bc437f614caa09dbbc0808038d1a586d172894c113bb1c22b75d580
$ sha256sum /dev/cdrom 
756a42474bc437f614caa09dbbc0808038d1a586d172894c113bb1c22b75d580  /dev/cdrom
# OK

#devrait être Clé MD5 ubuntu-14.04.3-desktop-amd64.iso
#cab6dd5ee6d649ed1b24e807c877c0ae
$ md5sum /dev/cdrom 
cab6dd5ee6d649ed1b24e807c877c0ae  /dev/cdrom
# OK

#2 Le 02/11/2015, à 13:52

serged

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

"Normal". La parenthèse est un élément syntaxique du shell.

Soit :

rm Grammalecte-v0.4.10.3

et taper \(<tab>
Soit mettre entre guillemets :

rm "Grammalecte-v0.4.10.3

et taper (<tab>


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

#3 Le 02/11/2015, à 14:51

Compte supprimé

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

Merci serged, pour l'explication de cette subtilité.

C'est donc Firefox qui nomme mal les fichiers en cas de doublons, n-uplons en ajoutant des parenthèses qui peuvent entrer en conflit avec le noyau Linux…

Si je mets résolu, ce serait inexact : on connaît la cause par ton explication), mais je pense que ce n'est pas normal que le nommage des fichiers par Firefox en cas de doublons entre en difficultés avec le shell, non ?

#4 Le 02/11/2015, à 16:57

Postmortem

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

Salut,

On a tout à fait le droit de mettre des parenthèses dans un nom de fichier.
Ce n'est pas un conflit avec le noyau LINUX.
Les parenthèse sont spéciales pour le SHELL (sh, bash...), il faut donc les échapper quand on utilise le SHELL pour qu'elles ne soient pas interprétées par ce dernier. Pour les espaces par exemple, c'est pareil.

Dernière modification par Postmortem (Le 02/11/2015, à 16:58)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#5 Le 03/11/2015, à 22:13

Compte supprimé

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

Oui. Effectivement, on m'a expliqué ce matin que ce n'est pas le noyau puisqu'on est très libre dans la nomination des fichiers, mais que ce sont bien des limites du Shell.

L'ami parisien a écrit (ce matin avec une autre mise en forme) la même chose qu'à très bien formulée serged (hier midi) dans son message.

C.D. a écrit :

Les parenthèses ont un sens particulier pour le shell, elles indiquent
un "subshell".

Il faut rajouter un " devant le G :

1) rm "G
2) TAB
3) Là, tu peux rajouter la parenthèse

ou avec l'antislash pour ne pas interpréter la parenthèse

1) rm G
2) TAB
3) \(

A+

--
Christian

#6 Le 04/11/2015, à 16:17

Postmortem

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

L_d_v_c@ a écrit :

Oui. Effectivement, on m'a expliqué ce matin que ce n'est pas le noyau puisqu'on est très libre dans la nomination des fichiers, mais que ce sont bien des limites du Shell

Non, ce ne sont pas les « limites » du SHELL.
Le SHELL a besoin de caractères spéciaux pour certaines choses. Si ce caractère spécial fait parti d'un nom de fichier, il faut juste dire au SHELL que dans le cas présent, il ne doit pas l'utiliser comme caractère spécial.
Pour cela, soit on met un « \ » devant, soit on met ce caractère entre guillemets ou simples quotes.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#7 Le 04/11/2015, à 16:40

Compte supprimé

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

D'accord, ce n'est pas une limite du Shell.

Firefox (multi-plateforme) nomme les doublons qui ne sont pas évidents à manier sous le Shell, (ou le Bash ? je suis perdu), quand on est débutant Bash/Shell, ou qu'on ne savait pas qu'il fallait apprendre les exceptions… (ces caractères interprétés).

C'est certain qu'à force je me suis dit que j'aurais gagné du temps à suivre une formations Linux avec un professeur, plutôt que de chercher dans mon coin, et perdre du temps parce que je ne raisonne pas avec les mêmes logiques. Les stages sont hors de prix, et souvent réservés professionnellement.

J'avoue avoir un tors : je ne consulte pas toujours l'aide des programmes : par exemple je n'avais jamais regardé l'aide sommaire de Terminal-Gnome.

Introduction
Premiers pas
Utilisation
Préférences

Peut-être faudrait-il ajouter un paragraphe à propos des caractères réservés (puisqu’interprétés) par le Shell dans la partie Utilisation ? Et en plus peut-être serait-il bien d'ajouter une fenêtre pop-up aux première utilisations du Terminal/Shell/Bash avec des trucs et astuces, et notamment les difficultés rencontrées par les débutants, et ces fameux caractères réservés par le Shell ?

En fait un minimum à savoir de trucs et astuces ? smile

Dernière modification par Compte supprimé (Le 04/11/2015, à 16:51)

#8 Le 04/11/2015, à 17:01

Postmortem

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

L_d_v_c@ a écrit :

Firefox (multi-plateforme) nomme les doublons qui ne sont pas évidents à manier sous le Shell, (ou le Bash ? je suis perdu), quand on est débutant Bash/Shell, ou qu'on ne savait pas qu'il fallait apprendre les exceptions… (ces caractères interprétés).

bash est un shell ; comme sh, ksh, zsh, csh et sans doute d'autres.

Un site très bien sur bash (et ça sert pour sh et ksh aussi car bcp de choses en commun) : http://abs.traduc.org/abs-fr

Concernant les caractères spéciaux, prenons par exemple l'espace qui est spécial pour les SHELL (bash, sh etc...) ; ce caractère sert à séparer les mots et permet donc au SHELL de distinguer, entres autres, le nom de commande du reste ; par exemple, si je créé un script se nommant « mon super script.sh » ; si je le lance, il faut bien que le SHELL arrive à déterminer où est le nom de la commande et où sont ses arguments.
Si je l'exécute ainsi :

mon super script.sh

Le SHELL va chercher un script se nommant « mon » ; et il voudra lancer ce script avec 2 arguments qui sont « super » et « script.sh » ; on obtient ce fonctionnement parce que l'espace est un caractère spécial. On va donc avoir le droit à une belle erreur car le script « mon » n'existe pas.
Il faut donc le lancer ainsi :

mon\ super\ script.sh

Comme ça, le SHELL ne considère pas les espaces comme spéciaux, il s'agit de simples caractères comme n'importe quelle autre lettre ; le SHELL va donc bien chercher à exécuter le script « mon super script.sh »

Autre manière d'empêcher les caractères spéciaux d'être interprétés :

"mon super script.sh"
'mon super script.sh'

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#9 Le 05/11/2015, à 17:48

Compte supprimé

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

Merci,
en effet je me souviens avoir rencontré les espaces très vite et l'avoir compris très facilement puisque c'était comme ça sous Unix-like (AmigaShell).

Les parenthèses sont un cran au dessus, mais maintenant que je sais, je penserai aux guillemets.

Merci.

#10 Le 09/11/2015, à 12:52

Compte supprimé

Re : Petit bogue de complétion en console sur Ubuntu 14.04.3

Bonjour,
J'ai envie d'ajouter que ce n'est pas un bogue technique du Shell, (la brique Shell fonctionne), ce n'est pas un bogue de Firefox non plus.

C'est plus un bogue au niveau de l'interconnexion des programmes (l'osmose de la distribution qui doit simplifier la vie de l'utilisateur).