16.1. Noms de Fichiers

La plupart des commandes Emacs qui opérent sur un fichier vous demandent de spécifier un nom de fichier. (La sauvegarde et le retour sont des exceptions ; le tampon connaît le nom de fichier à utiliser pour celles-ci.) Vous entrez le nom de fichier en utilisant le mini-tampon (Chapter 8). La complétion est disponible, pour rendre plus facile la saisie de longs noms de fichiers. Section 8.3.

Pour la plupart des opérations, un nom de fichier par défaut existe qui peut être utilisé si vous tapez seulement RET pour entrer un argument vide. Normalement, le nom de fichier par défaut est le nom du fichier visité dans le tampon courant ; ceci rend plus facile d'opérer avec ce fichier avec toute commande de fichiers d'Emacs.

Chaque tampon a un répertoire par défaut, normalement celui contenant le fichier visité dans ce tampon. Lorsque vous entrez un nom de fichier dans répertoire, le répertoire par défaut est utilisé. Si vous spécifiez un répertoire relatif, avec un nom ne commençant pas par une barre oblique, il est interprété en respect avec le répertoire par défaut. Le répertoire par défaut est gardé dans la variable default-directory, qui a une valeur différente dans chaque tampon.

Par exemple, si le nom de fichier par défaut est /u/rms/gnu/gnu.tasks alors le répertoire par défaut est /u/rms/gnu/. Si vous tapez seulement foo, qui ne spécifie pas de répertoire, c'est un raccourci pour /u/rms/gnu/foo. ../.login correspond à /u/rms/.login. new/foo correspond au nom de fichier /u/rms/gnu/new/foo.

La commande M-x pwd affiche le répertoire par défaut du tampon courant, et la commande M-x cd change celui-ci (à une valeur lue en utilisant le mini-tampon). Le réperoire par défaut d'un tampon change seulement lorsque la commande cd est utilisée. Le répertoire par défaut d'un tampon visitant un fichier est initialisé avec le réperoire contenant le fichier visité par ce tampon. Si vous créez un tampon avec C-x b, son répertoire par défaut est copié sur celui du tampon qui était courant à ce moment.

Le répertoire par défaut apparaît dans le mini-tampon lorsque ce dernier devient actif pour lire un nom de fichier. Ceci permet deux choses : il vous montre quel est le répertoire par défaut, pour que vous puissiez taper un nom de fichier relatif tout en sachant exactement ce qu'il représente, et il vous permet d'éditer le répertoire par défaut pour en spécifier une valeur différente. Cette insertion du répertoire par défaut est annulée si vous mettez la variable insert-default-directory à nil.

Notez qu'il est légitime de taper un nom de fichier absolu après être entré dans le mini-tampon, ignorant la présence du nom du répertoire par défaut. Le mini-tampon final peut paraître invalide, mais ce n'est pas le cas. Par exemple, si le mini-tampon commence avec /usr/tmp/ et que vous ajoutez /x1/rms/foo, vous obtenez /usr/tmp//x1/rms/foo ; mais Emacs ignore tout depuis la première barre oblique jusqu'aux doubles barres obliques ; le résultat est /x1/rms/foo. Section 8.1.

$ dans un nom de fichier est utilisé pour substituer des variables d'environnement. Par exemple, si vous avez utilisé la commande shell export FOO=rms/hacks pour définir une variable d'environnement FOO, vous pouvez alors utiliser /u/$FOO/test.c ou /u/${FOO}/test.c comme abréviation pour /u/rms/hacks/test.c. Le nom de la variable d'environnement est constitué de tous les caractères alphanumériques suivant $ ; alternativement, il peut être entre accolades après $. Notez que les commandes shell définissant des variables d'environnement affectent Emacs seulement si elles sont utilisées avant le démarrage d'Emacs.

Vous pouvez utiliser ~/ dans un nom de fichier pour représenter votre répertoire personnel, ou ~user-id/ pour représenter le répertoire personnel de l'utilisateur dont le login est user-id. (Sur les systèmes DOS et Windows, où les utilisateurs n'ont pas de répertoire personnel, Emacs substitue ~/ avec la valeur de la variable d'environnement HOME; voir Section B.5.1.)

Pour accéder à un fichier avec $ dans son nom, tapez $$. Cette paire est convertie en un unique $ en même temps que la substitution de variable est faite pour de simples $. Alternativement, quotez le nom de fichier entier avec /: (Section 16.13). Les noms de fichiers commençant avec un ~ litéral doivent aussi être quotés avec /:.

La fonction Lisp qui effectue les substitutions est appelée substitute-in-file-name. La substitution est effectuée seulement sur les noms de fichiers lus à partir du mini-tampon.

Vous pouvez inclure des caractères non ASCII dans les noms de fichier si vous mettez la variable file-name-coding-system à une valeur non nil. Section 20.8.