De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Juan Carlos Castro y Castro
Data de Publicação: 16 de September de 2008
Esta função para shell script retorna em que dispositivo (partição, compartilhamento remoto etc.) reside um arquivo ou diretório. Útil para determinar se uma operação de "move" de um diretório por outro será "atômica" ou se o SO será obrigado a fazer uma cópia e apagar o original. Também pode ser usada para descobrir se um determinado arquivo está num HD local ou num ponto de montagem remoto.
whichfs () {
if ! LANG=C df -P "$1" >/tmp/whichfs.$$ 2>&1; then
LANG=C df -P "`dirname $1 2>/dev/null`" >/tmp/whichfs.$$ 2>&1
fi
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
tail -n +2 /tmp/whichfs.$$ | cut -d ' ' -f 1
RETVAL=$?
fi
rm -f /tmp/whichfs.$$
return $RETVAL
}
Exemplos de uso:
if [ `whichfs /home` = `whichfs /` ]; then
echo "home em partição separada"
else
echo "home na partição raiz"
fi
if [ `whichfs $ARQ_ORIGEM` = `whichfs $ARQ_DESTINO` ]; then
mv $ARQ_ORIGEM $ARQ_DESTINO
else
echo "PERIGO: sistema está tentando mover '$ARQ_ORIGEM' para um filesystem diferente."
fi
if whichfs "$DIR_DESTINO" | grep ^/dev >/dev/null; then
echo "Este diretório fica nesta máquina"
elif whichfs "$DIR_DESTINO" | grep ^// >/dev/null; then
echo "Este diretório fica num compartilhamento Windows remoto"
elif whichfs "$DIR_DESTINO" | grep '^[^/].*:/' >/dev/null; then
echo "Este diretório fica num compartilhamento NFS remoto"
else
echo "Nao faço a mais vaga idéia de onde esta %@#&* fica."
fi
Estou consciente de que existe uma maneira melhor de fazer isto, usando
funções em C, como o utilitário df sem dúvida deve fazer para exibir
a sua saída. Se algum visitante souber como fazer isso, a informação será
bem-vinda nos comentários.
Colaboração: Geison Porfirio
Tutorial sobre atualização de versão do OpenBSD.
Referência: http://www.openbsd-br.org/?q=node/71