Qual é a diferença entre os comandos "cd \" e "cd /" no terminal ubuntu?

10

Ao dar cd \, recebo o >símbolo enquanto cd /altera o ~sinal no meu diretório para /.

Também o lscomando me mostra diretórios como dev, root, usrno caso de cd /.

ShailyGarg
fonte

Respostas:

15

No Bash, seu shell, o \(barra invertida) denota um caractere de escape. Isso deve ser usado nos casos em que você deseja escapar de caracteres como espaços, aspas e outros caracteres significativos para a sintaxe do shell, mas deseja que ele se propague como dados para o comando que está sendo executado. Tendo isso como o último caractere na linha, você está escapando da nova linha e o Bash está aguardando por mais informações (várias linhas).

/é apenas uma barra (significando separador de diretório ). Com apenas /isso significa a raiz, por exemplo, ls /lista o conteúdo da raiz. Alterando o diretório de trabalho para /, o indicador em seu shell também muda de ~(abreviação de diretório inicial, por exemplo /home/gert/) para o diretório em que você está ( /).


Demo

$ 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 não, era minha intenção criar um arquivo com o nome a filename with spaces. Então, aqui usamos o \para escapar dos espaços. Isso impede que o shell forneça quatro argumentos touch, mas forneça um único com os espaços incluídos.

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

Obviamente, usando aspas ( touch "a filename with spaces"), é possível obter a mesma coisa.

Também é usado para declarar caracteres especiais como novas linhas:

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

Precisamos da -eopção aqui para echo, porque, como a página de manual colocá-lo: -e enable interpretation of backslash escapes.

gertvdijk
fonte
Para esclarecimentos adicionais: No exemplo do OP, cd \ escapa o final da linha (a tecla Return). Isso significa que o terminal ainda está aguardando o restante do comando. O prompt >mostra que está aguardando. O prompt usual mostra o diretório atual, e é por isso que é exibido /após o uso cd /. O ~é uma abreviação para o seu diretório pessoal, e é por isso que ele é exibido em ~vez de /home/user.
Paddy Landau
1

Se você inserir uma barra invertida, poderá inserir seu comando em várias linhas. É isso que o prefixo '>' significa.

ame
fonte
1

O >sinal significa que o prompt está esperando que você insira mais, porque o comando anterior estava incompleto. Você pode reproduzir isso com qualquer coisa, não apenas cd. Basta digitar whateveryouwant\e você receberá >.

A parte em que você vê o ~denota o diretório de trabalho atual. Para alterar o diretório de trabalho, use o comando cd, o que significa alterar o diretório (pasta). Portanto, se o fizer cd /, ele altera o diretório para /. Se o fizer cd /usr/bin, ele será alterado para /usr/bine assim por diante.

lsé um comando para listar o que está no diretório / pasta atual. Então, se você fizer cd /(o que significa que mudou o diretório para /), lsliste os arquivos e pastas existentes. Se você faz cd /etc/e depois ls, ele iria listar quaisquer arquivos e pastas que estão na /etc/, e assim por diante.

Alaa Ali
fonte
MUITO OBRIGADO :-) por essa ajuda imediata, amigos ...
ShailyGarg