This question already has an answer here:
-
“~/Desktop/test.txt: No such file or directory”
2 answers
I want to check whether or not the hidden .git
folder exists. First thought was to use:
if [ -d "~/.git" ]; then
echo "Do stuff"
fi
But the -d
apparently does not look for hidden folders.
The problem has to do with the tilde being within double quotes.
To get it expanded, you need to put the tilde outside the quotes:
if [ -d ~/".git" ]; then # note tilde outside double quotes!
echo "Do stuff"
fi
Or, alternatively, as commented below by hek2mgl, use $HOME
instead of ~
:
if [ -d "$HOME/.git" ]
From POSIX in Tilde expansion:
A "tilde-prefix" consists of an unquoted character at the beginning of a word, followed by all of the characters preceding the first unquoted in the word, or all the characters in the word if there is no .
From POSIX in Double Quotes:
Enclosing characters in double-quotes ( "" ) shall preserve the literal value of all characters within the double-quotes, with the exception of the characters dollar sign, backquote, and backslash, as follows:
You can find further explanations in Why doesn't the tilde (~) expand inside double quotes? from the Unix & Linux Stack.