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

10

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

O comando ls também mostra diretórios como dev, root, usr no caso de cd / .

    
por Aadya 30.06.2013 / 20:54

3 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 caracteres , como espaços, citações e outros caracteres significativos para a sintaxe do shell, mas deseja que ele seja propagado como dados para o comando que está sendo executado. Por ter este como o último caractere na linha, você está escapando da nova linha e o Bash está esperando por mais informações (várias linhas).

/ é apenas uma barra (ou seja, separador de diretório ). Com apenas / , isso significa a raiz, portanto, por exemplo, ls / lista o conteúdo da raiz. Ao alterar o diretório de trabalho para / , o indicador no seu shell também muda de ~ (abreviação de home directory, 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

Ah, não, foi minha intenção criar um arquivo com o nome a filename with spaces . Então, aqui nós usamos o \ para escapar dos espaços. Isso impede que o shell forneça quatro argumentos para 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

Claro que, usando aspas ( touch "a filename with spaces" ), pode-se conseguir a mesma coisa.

Ele também é usado para declarar caracteres especiais, como novas linhas:

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

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

    
por gertvdijk 30.06.2013 / 21:01
1

Se você inserir uma barra invertida, poderá inserir seu comando em várias linhas. Isto é o que o prefixo '>' apoia.

    
por alwe 30.06.2013 / 21:02
1

O sinal > significa que o prompt está aguardando 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 , que significa alterar o diretório (pasta). Portanto, se você fizer cd / , o diretório será alterado para / . Se você fizer cd /usr/bin , ele será alterado para /usr/bin e assim por diante.

ls é um comando para listar o que está no diretório / pasta atual. Portanto, se você usar cd / (significando que você alterou o diretório para / ), ls listaria os arquivos e pastas ali contidos. Se você fizer cd /etc/ e, em seguida, ls , ele listaria os arquivos e pastas que estão em /etc/ e assim por diante.

    
por Alaa Ali 30.06.2013 / 21:10