O que significa ./ significa? [duplicado]

0

Estou com dificuldades para conseguir o que o ./ faz.

Nos livros do Linux Essentials, ele me pede em um exercício para excluir um arquivo chamado -file . Depois do googling, descobri que preciso fazer rm ./-file , mas não entendi por quê!

    
por alemur 26.05.2013 / 02:13

3 respostas

7

O diretório . é o diretório atual. O diretório .. é o nível superior desse diretório

$ pwd
/home/user

$ cd docs; pwd   # change to directory 'docs'
/home/user/docs

$ cd .  ; pwd     # we change to the '.' directory, therefore we'll stay. No change
/home/user/docs

$ cd .. ; pwd     # back to up level
/home/user

No Linux, as opções de comandos são introduzidas pelo sinal - , ou seja, ls -l , portanto, se você quiser fazer qualquer referência a um arquivo que comece com - , como -file , o comando pensaria está tentando especificar uma opção. Por exemplo, se você quiser removê-lo:

rm -file

irá reclamar porque está tentando usar a opção file do comando rm . Nesse caso, você precisa indicar onde está o arquivo. Estando no diretório atual, assim, no diretório . , você precisa se referir a esse arquivo como ./-file , significando, no diretório . , o arquivo -file . Nesse caso, o comando rm não acha que é uma opção.

rm ./-file

Isso pode ser feito também usando -- .

De man rm :

To remove a file whose name starts with a '-', for example '-foo', use one of these commands:

rm -- -foo
rm ./-foo
    
por 26.05.2013 / 02:27
0

é o diretório atual. Então, por exemplo, ls e ls . são sinônimos. Se você estiver em /etc , os comandos cat /etc/fstab/ , cat ./fstab e cat fstab farão o mesmo.

rm ./-file é usado porque rm analisa tudo que começa com - como opções de linha de comando e não com nomes de arquivos. Por exemplo, ls -l não tenta mostrar o arquivo chamado -l , mas ls ./-l e ls /some/directory/-l do.

    
por 26.05.2013 / 02:40
0

Se você digitar rm -file , estará passando uma opção de linha de comando para rm e não o nome -file .

Para excluir -file pass rm o nome entre aspas rm "-file" ou escape do - . %código%. Em bash ou zsh, se você não tiver certeza de que um comando está obtendo o nome de arquivo apropriado, use a conclusão da tabulação. Exemplos: rm \-file TAB se a tela não imprime type rm -fi você sabe que fez algo errado e deve consertá-lo antes de retornar o retorno, outro exemplo rm -file TAB deve impressão rm "-fi .

Quanto a rm "-file" , ./ é apenas o separador entre diretórios e nomes de arquivos. "" significa diretório atual. ".." significa o diretório um. Portanto, para excluir o arquivo / no diretório atual, digite foo ( rm ./foo também está OK) para excluir o arquivo de um diretório do tipo rm foo para excluir o arquivo no diretório rm ../foo , que está contido no diretório diretório acima do tipo bar .

Nesse caso, rm ../bar/foo é colocado na frente de ./ , de modo que o caractere -file não seja a primeira coisa que - vê, pois isso faria com que você achasse que estava usando alguma opção.

Se você conhece um pouco do DOS, rm corresponderia a rm -file no DOS.

    
por 26.05.2013 / 02:31

Tags