Precisa de ajuda para estudar para Linux + Cert

2

Um usuário (Bob) acidentalmente faz um subdiretório (bobsdir) em seu diretório Home e tenta removê-lo, mas quando eles usam o comando "rmdir \ bobsfile" eles recebem "No Such Directory".

a resposta para a pergunta é: rmdir ~ Bob / \ bobsdir

Eu obtenho o "~" que é o mesmo que / home, mas não consigo encontrar em meus materiais de estudo o que são "\" e por que eles funcionam nessa instância. Eu sou uma pessoa que precisa saber o "porquê" das coisas, então qualquer ajuda seria muito apreciada.

    
por Karl Kreder 10.05.2013 / 19:58

3 respostas

2

link

Esta parece ser a pergunta exata, sem a barra extra na resposta.

No entanto, quando testado, funciona de qualquer forma ... por isso, olhei em volta um pouco mais e descobri que outra versão escolhe a resposta como barras invertidas duplas:

link

Eu diria que a pergunta pode ter passado pelos editores ou repositores em vários sites ou livros, mas estou interessado em ver se alguém mais tem uma opinião sobre o que as barras invertidas extras significam ou são capazes do.

Parece haver várias maneiras de fazer isso, mas não sei por que ... e uma não funciona (mas parece indicada em muitos lugares como o método "correto" - rmdir ~user/\userdir ).

    
por gravitymixes 10.05.2013 / 20:27
2

Acho que você traiu a questão, porque, como foi dito, a resposta e a resposta realmente não combinam.

A barra invertida - \ - é usada como uma chave "escape" na maioria dos shells Linux e em muitos idiomas. O que isso significa é que ele inicia um código especial ou anula um caractere especial.

Por exemplo, o caractere $ tem um significado especial, significando uma expansão de variável, no shell. Mas e se você quiser nomear um arquivo "$ money"? Você não pode simplesmente tocar em $ money porque o shell vai pensar que você quer expandir uma variável chamada "money". Então, em vez disso, você toca em \ $ money , e agora o shell escapará do $, tratando-o como um caractere literal em vez de um significante de variável.

root@banshee:/tmp# touch $money
touch: missing file operand
Try 'touch --help' for more information.
root@banshee:/tmp# touch $money
root@banshee:/tmp# ls -l | grep money
-rw-r--r-- 1 root    root       0 May 10 21:31 $money
root@banshee:/tmp# rm $money
rm: missing operand
Try 'rm --help' for more information.
root@banshee:/tmp# rm $money
root@banshee:/tmp# ls -l | grep money
root@banshee:/tmp# 

Você também pode usar o caractere de escape para "nerf" um espaço. Normalmente, se você tiver espaços em um argumento, o shell o interpretará como palavras-chave separadas, em vez de uma única palavra-chave com um espaço. Mas se você escapar do espaço, o shell irá interpretá-lo como uma única palavra-chave com um espaço. Assim:

root@banshee:/tmp# touch bobs money
root@banshee:/tmp# ls | egrep '(bob|money)'
bobs
money
root@banshee:/tmp# rm bobs ; rm money
root@banshee:/tmp# touch bobs\ money
root@banshee:/tmp# ls | egrep '(bob|money)'
bobs money

O caractere de escape também escapa em si . Então, se você quisesse criar um arquivo chamado "\ myfile", você precisaria fazer isso:

root@banshee:/tmp# touch \myfile
You have new mail in /var/mail/root
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:25 \myfile

E se você quiser remover \ myfile , você escapará novamente da barra invertida com uma segunda barra invertida, como fez quando a criou:

root@banshee:/tmp# rm \myfile
root@banshee:/tmp# ls -l | grep myfile
root@banshee:/tmp# 

Como alternativa, você pode incluir o nome do arquivo entre aspas simples. Aspas simples dizem ao shell que você não quer que ele processe espaços dentro das aspas como significando palavras-chave separadas, E que você não deseja que as expansões de variáveis ou curingas ocorram dentro das aspas:

root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:28 \myfile
root@banshee:/tmp# rm '\myfile'
root@banshee:/tmp# ls -l | grep myfile

Observe a implicação aqui: se você realmente deseja criar um nome de arquivo que inclua aspas simples envolvidas, será necessário usar o caractere de escape para escapar das aspas simples!

root@banshee:/tmp# touch 'myfile'
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:29 myfile
root@banshee:/tmp# rm myfile
root@banshee:/tmp# touch \'myfile\'
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:29 'myfile'

Espero que ajude a tornar isso mais claro.

    
por Jim Salter 11.05.2013 / 03:30
0

Explicação sobre por que usar ~Bob/

Normalmente, em seu próprio computador Linux, você usa ~/ em seu diretório pessoal. A razão para isso é que geralmente assumimos que você está logado como o usuário que você está usando, e digitando ~/ irá levá-lo para a casa do usuário que você está logado como.

Portanto, algumas situações usando ~/ ou apenas ~ não funcionarão.

  1. Conectado como root
  2. Conectado como outro usuário

Nesse caso, podemos usar ~Bob especificando a pasta inicial do usuário "Bob"

Isso explica por que usar essa forma de pasta pessoal

    
por Mateo 11.05.2013 / 04:07