web-dev-qa-db-fra.com

Quand utiliser une barre oblique précédente dans les noms de chemins? (par exemple pour la commande 'cd')

Je suis un utilisateur novice et j'essaie d'installer Oracle Java. Le processus m'appelle pour accéder à /usr/local/Java, mais voici le problème. Je vais aussi loin que /usr/local, alors voici le message que je reçois:

leonard@leonard-MT6452:/usr/local$ dir
bin  etc  games  include  Java  lib  man  sbin  share  src

leonard@leonard-MT6452:/usr/local$ cd /Java/
bash: cd: /Java/: No such file or directory

leonard@leonard-MT6452:/usr/local$ rm -r ~/Java
rm: cannot remove ‘/home/leonard/Java’: No such file or directory

Aidez-moi?

3
Len Cilliers

Un chemin peut être spécifié de deux manières.

Chemins absolus

Les chemins absolus commencent toujours par un /. Cela signifie que le point de départ de la spécification du chemin est fixe. Peu importe où se trouve votre actuel emplacement, un chemin absolu indiquera toujours le même emplacement. La seule exception est lorsque vous utilisez un raccourci Shell, tel que ~, au début, où il remplacera ~ par ce qui est généralement le chemin absol de votre domicile. annuaire. Même s'il ne ressemble pas à ~/bin commence par un /, lorsque le shell présente sa forme finale, il est précédé d'un /.

Chemins relatifs

Les chemins relatifs ne commencent jamais par /. Leur point de départ est le répertoire en cours, donc l'endroit où vous vous retrouvez dépend du point de départ. Ils peuvent commencer par n’importe quel sous-répertoire. En outre:

  • Vous pouvez utiliser . et .. pour faire référence au répertoire actuel et au répertoire parent. Vous pouvez également utiliser ces dans chemins absolus absolus, mais pas au début (/foo/../bar est identique à /bar et les deux sont des chemins absolus, mais ../foo est pas absolu).
  • Vous pouvez utiliser un paramètre (variable d'environnement) appelé CDPATH (généralement non défini), spécifiquement pour la commande cd. Si vous ajoutez un répertoire à CDPATH, vous pouvez utiliser un chemin relatif (ne commençant pas par . ou ..) de n'importe où avec cd.

Résumer:

  • cd /usr/local/Java vous emmènera toujours au même endroit, tout comme cd /usr/local/./Java.
  • cd Java vous mènera à différents endroits en fonction de l'endroit où vous vous trouvez et de ce que CDPATH contient. (Notez que seules cd devraient être affectées par CDPATH - pour les autres commandes, ./Java et Java devraient signifier la même chose.)
  • cd ./Java vous mènera au répertoire nommé Java dans le répertoire actuel.
  • cd ../Java vous mènera au répertoire nommé Java dans le répertoire parent.
  • cd ~/Java vous mènera toujours au répertoire nommé Java dans votre répertoire personnel. Dans ce cas, le chemin est absolu, mais étant donné que le shell développe le ~ avant que cd ne l'utilise, différents utilisateurs se retrouveront à des emplacements différents.
3
muru

Vous n'avez pas besoin du / initial lorsque vous êtes à /usr/local/ pour aller à /usr/local/Java. La commande correcte en utilisant le chemin relatif:

leonard@leonard-MT6452:/usr/local$ cd Java/
leonard@leonard-MT6452:/usr/local/Java$ pwd
/usr/local/Java    

Vous pouvez également prendre l’aide de bash_completion en tapant simplement cd j (à condition qu’aucun autre répertoire ne commence par j), puis appuyez sur Tab, cd Java/ sera imprimé.

De plus, vous pouvez utiliser le chemin absolu de n'importe où:

cd /usr/local/Java

Le / au début d'un chemin de fichier fait toujours référence au répertoire racine du hiérarchie du système de fichiers . Comme il n’existe aucun fichier nommé /Java, vous obtenez un message d’erreur /Java/: No such file or directory.

2
heemayl