« Trucs et astuces pour la console » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 209 : Ligne 209 :
=== Noms commençant par - ===
=== Noms commençant par - ===
Les fichiers commençants par le caractère "-" (moins) peuvent être gênant à gérer en ligne de commande, car ils sont reconnus comme des options du programme. La solution pour les utiliser consiste à ajouter <code>--</code> entre les options du programme et les fichiers que vous souhaitez passer en paramètre.<br/>
Les fichiers commençants par le caractère "-" (moins) peuvent être gênant à gérer en ligne de commande, car ils sont reconnus comme des options du programme. La solution pour les utiliser consiste à ajouter <code>--</code> entre les options du programme et les fichiers que vous souhaitez passer en paramètre.<br/>
Une deuxième possibilité consiste à faire précéder ce nom de fichier par son chemin relatif ou absolu:<br/>
Si vous vouliez supprimer sans demande de confirmation (option "-f") le fichier "-aeffacer" situé dans votre dossier personnel, vous seriez tenté de formuler votre ligne de commande comme cela :  
Si, depuis le dossier contenant le fichier "-a_effacer", je voulais supprimer ce même fichier, je serais tenter de formuler ma commande de cette façon :  
  votrelogin@votremachine:~$ rm -f -aeffacer
  rm -aeffacer
rm : option non valide -- a
Mais en tentant d'interpréter ce nom de fichier comme un paramètre de la commande "rm", le shell renverrai le message suivant :
Saisissez « rm --help » pour plus d'informations.
touch /home/monlogin/-aeffacer
On constate ici que le shell a bien interprété la chaîne de caractère "-f" comme une option de la commande "rm", mais étant donné que le premier caractère de la chaîne suivante est le caractère "-", il a cherché s'il existait une option de la commande "rm" qui correspondrait à la première lettre suivant le "-" de "-aeffacer" : la lettre "a".<br/>
ls -l ./-aeffacer
N'ayant pas trouvé d'option "-a" dans la liste des options possibles de la commande "rm", il renvoie un message d'erreur nous informant que cette option est "non valide".<br/>
-rw-r--r-- 1 monlogin monlogin 0 mai  14 22:51 ./-aeffacer
====Séparer les options des paramètres avec "--"====
  rm -aeffacer
Afin d'éviter ce type de confusion à l'interpréteur de commandes, il est possible de lui indiquer par deux caractères moins "--" l'endroit où finissent les options, et donc commencent les paramètres.<br/>
rm : option non valide -- a
On peut donc utiliser ce nom de fichier comme paramètre en insérerant les deux caractères moins "--" dès que la liste des options est terminée, le shell comprendra que ce qui suit ne peut pas être une option.<br/><br/>
Essayez « rm ./-aeffacer » pour supprimer le fichier « -aeffacer ».
Pour supprimer le fichier "-aeffacer" sans demander de confirmation (option "-f"), il faudrait alors entrer la commande:
Saisissez « rm --help » pour plus d'informations.
  monlogin@mamachine:~$ rm -f -- -aeffacer
On constate ici que le shell nous a proposé de faire précéder le nom de fichier par son chemin relatif, et de cette façon, le shell ne pourra plus interpréter ce paramètre comme une option, puisque le paramètre donné ne débute plus par le caractère "-".<br/>
====Autre solution : Cacher le caractère "-" en début paramètre.====
Dans cet exemple, étant donné que le dossier actif est le dossier de l'utilisateur, il aurait aussi bien pu nous proposer de formuler notre commande de cette façon,
Cette deuxième solution consiste à faire en sorte que le premier caractère de la chaîne ne soit plus un "-", afin que le shell ne l'interprète pas comme une option de programme.<br/>
  rm ~/-aeffacer
Pour ce faire, on peut faire précéder ce nom de fichier par son chemin relatif ou absolu.<br/><br/>
ou bien celle utilisant le chemin absolu du fichier :
Si la commande est exécuté depuis le dossier dans lequel se trouve le fichier, le chemin courant peut être représenté par un caractère point ".".<br/>
  rm /home/monlogin/-aeffacer
Dans ce cas, la chaîne de caractère correspondant à ce nom de fichier avec son chemin relatif sera donc "./-aeffacer"
Le premier caractère de cette chaîne n'étant plus le caractère "-", le shell ne pourra donc pas être induit en erreur et la prendre pour une chaîne d'options.<br/>
Dans ce cas la ligne de commande pourrait être :<br/>
  monlogin@mamachine:~$ rm ./-aeffacer
Ou bien, avec le chemin absolu:
  monlogin@mamachine:~$ rm /home/monlogin/-aeffacer


=== Accolades ===
=== Accolades ===
editor
621

modifications

Menu de navigation