Quelle est la différence entre les commandes «cd \» et «cd /» dans le terminal ubuntu?

10

En donnant cd \, j'obtiens le >symbole tout en cd /changeant le ~signe dans mon répertoire en /.

La lscommande me montre également les répertoires comme dev, root, usrdans le cas de cd /.

ShailyGarg
la source

Réponses:

15

Dans Bash, votre shell, la \(barre oblique inverse) indique un caractère d'échappement. Cela doit être utilisé dans les cas où vous souhaitez échapper des caractères tels que des espaces, des guillemets et d'autres caractères significatifs pour la syntaxe du shell, mais que vous souhaitez qu'il se propage en tant que données à la commande que vous exécutez. En ayant ceci comme dernier caractère sur la ligne, vous échappez à la nouvelle ligne et Bash attend une entrée supplémentaire (plusieurs lignes).

/est juste une barre oblique (qui signifie séparateur de répertoire ). Avec juste /cela signifie la racine, donc par exemple ls /répertorie le contenu de la racine. En changeant le répertoire de travail en /, l'indicateur dans votre shell passe également de ~(abréviation de home directory, par exemple /home/gert/) au répertoire dans lequel vous vous trouvez ( /).


Démo

$ touch a filename with spaces
$ ls -l
total 0
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 a
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 filename
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 spaces
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 with

Oh non, c'était mon intention de créer un fichier avec le nom a filename with spaces. Donc, ici, nous utilisons le \pour échapper aux espaces. Cela empêche le shell de fournir quatre arguments touchmais en fournit un seul avec les espaces inclus.

touch a\ filename\ with\ spaces

$ touch a\ filename\ with\ spaces
$ ls -al
total 24
drwxrwxr-x  2 gert gert  4096 Jul  1 02:35 .
drwxrwxr-x 55 gert gert 20480 Jul  1 02:33 ..
-rw-rw-r--  1 gert gert     0 Jul  1 02:35 a filename with spaces

Bien sûr, en utilisant des guillemets ( touch "a filename with spaces"), on peut obtenir la même chose.

Il est également utilisé pour déclarer des caractères spéciaux comme les sauts de ligne:

$ echo -e "bla\nnewline" # \n means a newline character
bla
newline

Nous avons besoin de l' -eoption ici pour echo, parce que le manpage a dit: -e enable interpretation of backslash escapes.

gertvdijk
la source
Pour plus de précisions: dans l'exemple de l'OP, cd \ échappe la fin de ligne (la touche Retour). Cela signifie que le terminal attend toujours le reste de la commande. L'invite >indique qu'elle attend. L'invite habituelle affiche le répertoire actuel, c'est pourquoi il s'affiche /après utilisation cd /. C'est un ~raccourci pour votre répertoire personnel, c'est pourquoi il apparaît à la ~place de /home/user.
Paddy Landau
1

Si vous entrez une barre oblique inverse, vous pouvez entrer votre commande sur plusieurs lignes. C'est ce que signifie le préfixe '>'.

alwe
la source
1

Le >signe signifie que l'invite attend que vous en saisissiez davantage, car la commande précédente était incomplète. Vous pouvez reproduire cela avec n'importe quoi, pas seulement cd. Tapez simplement whateveryouwant\et vous obtiendrez >.

La partie où vous voyez le ~désigne le répertoire de travail actuel. Pour modifier le répertoire de travail, vous utilisez la commande cd, ce qui signifie changer de répertoire (dossier). Donc, si vous le faites cd /, il change le répertoire en /. Si vous le faites cd /usr/bin, il deviendra /usr/bin, et ainsi de suite.

lsest une commande pour répertorier le contenu du répertoire / dossier actuel. Donc, si vous le faites cd /(c'est-à-dire que vous avez changé le répertoire /), lslisteriez tous les fichiers et dossiers qu'il contient. Si vous le faites cd /etc/et ensuite ls, il répertorie tous les fichiers et dossiers qui s'y trouvent /etc/, etc.

Alaa Ali
la source
MERCI BEAUCOUP :-) pour cette aide immédiate amis ...
ShailyGarg