Passe '.' o símbolo do diretório atual como um argumento

0

Eu leio Windows - o que são "." e ".." em um diretório? - Superusuário

Explica:

The single dot . is also used if you want to pass the current directory as an argument to a command.

Estou muito confuso. Alguém pode dar um exemplo?

    
por JawSaw 10.11.2017 / 06:56

2 respostas

1

A pergunta é sobre o Windows, mas você marcou linux então minha resposta se aplica para o Linux.

Toda vez que você invoca um comando, há algum diretório de trabalho no qual você está no momento; . denota esse diretório. pwd é um comando geral para saber o que é esse diretório. Ao trabalhar em um shell como bash , você pode "ir" para outro diretório com cd /another/directory/path .

Alguns comandos (como cd acima) aceitam diretórios (ou seja, seus caminhos) como argumento (s). Agora estou com vontade de falar sobre fundamentos óbvios; mas sua pergunta parece ser básica, então aqui vamos nós. A sintaxe geral para passar um argumento para some_command é como:

some_command argument

ou até mesmo número arbitrário de argumentos (quatro neste exemplo):

some_command argument1 argument2 "argument3 with spaces" argument4

Você pode usar . como um argumento em vez do caminho retornado por pwd . Se o comando o interpretar como um caminho para o diretório, ele deve ser entendido como o diretório de trabalho atual. Embora cd . tenha pouco sentido porque faz com que seu shell "vá" para o mesmo diretório em que ele já está, a sintaxe é perfeitamente válida. Exemplo útil é

df .

Ele informa o uso de espaço em disco do sistema de arquivos em que seu diretório de trabalho atual reside.

Existem comandos que operam no diretório de trabalho atual por padrão: ls é equivalente a ls . , du é equivalente a du . . Observe que nem sempre é o caso: df imprime todos os sistemas de arquivos disponíveis, enquanto df . imprime apenas um deles.

Eu escrevi " se o comando o interpreta como um caminho para o diretório" porque alguns comandos não. Por exemplo. em bash o comando

tr . , <<< foo.bar

imprimirá foo,bar ( tr substitui . por , na string foo.bar fornecida). Isso ocorre porque tr interpreta . como uma string de caractere único.

Isso mostra que . não é convertido para o caminho do diretório atual pelo shell. Compare isso com ~ , que é convertido para o valor de $HOME (tente echo ~ in bash ). A interpretação de . como um determinado caminho fica no projeto da árvore de diretórios no Linux (broader: no UNIX).

Assim, cada comando pode interpretar . sozinho. Mas quando se trata de um caminho de diretório, a convenção é que ele deve ser o diretório de trabalho atual. O Linux entende isso e fornece ferramentas para suportar essa "conversão".

Observe também que ls -a quase sempre imprime . entre o conteúdo do diretório "real". Fica interessante quando seu diretório de trabalho atual é excluído. Nesse caso, ls -a não imprime nada, mas ls . ou df . ainda funcionam, como se . estivesse lá.

    
por 10.11.2017 / 08:16
1

Um exemplo do Windows ligeiramente artificial: você pode usar . para definir os atributos do diretório atual:

C:\Path\to\Some\Directory> md sub1 sub2

C:\Path\to\Some\Directory> attrib * /s /d
             C:\Path\to\Some\Directory\sub1
             C:\Path\to\Some\Directory\sub2

C:\Path\to\Some\Directory> cd sub2

C:\Path\to\Some\Directory\sub2> attrib +r .

C:\Path\to\Some\Directory\sub2> cd ..

C:\Path\to\Some\Directory> attrib * /s /d
             C:\Path\to\Some\Directory\sub1
     R       C:\Path\to\Some\Directory\sub2

Aqui, definimos o atributo somente leitura no diretório sub2 enquanto estamos nisso. attrib +r . é mais curto e mais fácil de digitar que attrib +r ..\sub2 ou attrib +r C:\Path\to\Some\Directory \sub2 .

    
por 11.11.2017 / 08:47