Eu estava brincando em uma concha e digitei. Eu vou a seguinte saída:
bash: ./: Is a directory
Parece que "./" verifica se existe um diretório com o nome fornecido. Eu estava tentando encontrar documentação sobre isso para ver se meu entendimento estava correto, mas não encontrei nada on-line. Alguém pode me explicar isso?
command-line
bash
Andi Jay
fonte
fonte
./
é o mesmo que.
, que é o diretório atual. E não apenas no Linux ou apenas no shell bash.Respostas:
Uma definição geral para isso provavelmente não é encontrada no manual Bash, mas na especificação POSIX (seção Pathname Resolution):
Bem, o que é o antecessor, se tivermos apenas
.
? Eu enfatizei a parte importante:Além disso,
Então, quando você digita
./
, é resolvido como./.
, que basicamente aponta para o seu diretório de trabalho atual. Quando você digita algo em seu shell e acerta Enter, o shell tentará executar a primeira parte como um comando. (Basicamente, o primeiro grupo de personagens até o primeiro espaço em branco.)Não há nenhum comando ou arquivo executável chamado
./.
, por isso ele falhará e informará que./
"é um diretório". Curiosamente,.
é um comando (é um builtin também encontrado comosource
), então quando você apenas digitar.
você vai ter:bash: .: filename argument required
.fonte
test -d /path/to/dir
Como outros escreveram,
./
é o nome do diretório atual. Quando você digitou./
no prompt bash e pressionou Enter, você tentou executar o diretório atual como um comando, que obviamente falhou, e o bash lhe deu a mensagem (parafraseada), "Eu não posso fazer isso../
É um diretório e eu não pode executar diretórios como comandos. "fonte
O
.
implica o diretório atual. Você usa./
como prefixo para qualquer arquivo no diretório atual.Da mesma forma,
..
implica no diretório anterior (superior). É freqüentemente usado quando se está indo para um diretório de nível mais alto, por exemplocd ../../../
Dado um sistema de arquivos com o conteúdo:
Se você está no terceiro nível diretor (baz), e você corre
ls
, você veráqux
. Se você executarls .
, obterá a mesma saída, assim como se você executarls ./
.Se você está no terceiro nível diretor (baz), e você corre
ls ..
els ../
ambos lhe dãobaz
. Ou seja, o conteúdo do diretório um nível acima.fonte
cd
com./
?foo
, o shell tenta encontrar um executável chamadofoo
em seu PATH e ele executará o primeirofoo
encontrado. Se você entrarcd bar
,bar
é simplesmente uma opção passada paracd
, que por padrão procurar no diretório atual para possíveis diretórioscd
para.No Linux ./ significa o diretório atual (e ../ refere-se ao diretório pai).
Se você fizer um ls -a, você verá. e .. listados como diretórios (você precisa do -a porque. representa um diretório oculto)
fonte