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¨

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

Respostas:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
fonte
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
Brian Showalter
fonte
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"

fonte
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.

Steve Emmerson
fonte
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.

Ejaz
fonte
[-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 ....]

roval
fonte
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