Sejam dois nomes $foo
de $bar
diretório absolutos (saída por realpath
). Eu quero testar se um está contido no outro, em qualquer profundidade, e executar comandos de acordo.
Eu pensei em usar find
, mas seu status de saída não informa se algo foi encontrado ou não. Então eu vim para:
if [ x$(find -H "$foo" -path "$bar" -printf y -quit) == xy \
-o x$(find -H "$bar" -path "$foo" -printf y -quit) == xy ] ; then
...
fi
Está correto? Existe algo mais simples?
Contexto: meu diretório inicial contém uma pasta criptografada (ecryptfs). Estou escrevendo um script que sincronizará seu argumento com a nuvem. Não quero que os arquivos descriptografados sejam sincronizados, então testarei se o argumento se sobrepõe à pasta criptografada para desmontar o ecryptfs antes de sincronizar.
Não tenho certeza se entendi completamente a pergunta e o contexto. Mas talvez isso funcione:
Observe que isso não funcionará se uma árvore estiver vinculada por simbolismo à outra.