Como verificar se existe um diretório na linha de comando do Linux?


28

Como verificar se existe um diretório na linha de comando do Linux?

Solução: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
Portanto, marque-o como a solução.
precisa saber é o seguinte

Respostas:


40
$ if test -d /the/dir; then echo "exist"; fi 

Eu preciso disso na linha de comando, não em um script.

5
Essa é a linha de comando. Você pode digitar isso no bash diretamente ou pode continuar para test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"mas eles são realmente iguais.
David Rodríguez - dribeas

Nem a concha de todo mundo é bash!
reinierpost

@reinierpost então boa sorte para você ...
Stefano Borini

@ Stefano Borini: Eu ainda uso tcshporque estou com preguiça de reescrever o meu .tcshrc. Mas mais ao ponto: isso pode ter explicado o problema do OP.
Reinierpost

11

Supondo que seu shell seja BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi

erro de sintaxe próximo ao token inesperado `then '

Então descubra qual é o seu shell. Talvez cshou tcsh?
Reinierpost

8
[ -d /home/bla/ ] && echo "exits"

Posso ter algo como ELSE, para mostrar um texto mesmo se o diretório não existir?

Solução alternativa:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop

7

A maneira canônica é usar o utilitário test (1):

test -d path

onde "caminho" é o nome do caminho do diretório em questão.


O comando não parece estar funcionando sozinho, mas quando associado a um echo "Directory Exists".
Ejaz

2

[ -d "YOUR_DIR" ] && echo "is a dir"

por exemplo:

[ -d / ] && echo "root dir"

saída será: root dir.


[-d: comando não encontrado isso é o que eu recebo

Entre "[" e "-" DEVE existir um espaço. Isso deve funcionar no shell Bourne e Bash.

0

Para verificar se existe um diretório em um script de shell, você pode usar o seguinte:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

para verificar o oposto, adicione !antes do-d ->[ ! -d ....]


Bem-vindo ao Super Usuário! Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.