Como mostrar uma mensagem de aviso ao entrar em uma pasta?

3

Eu não sei se isso é possível, mas, eu tenho uma pasta que eu gostaria de mostrar alguma mensagem de aviso quando o usuário entra nela. No meu caso diria que a pasta poderia ser apagada sem aviso prévio para economizar algum espaço em disco. Eu já criei um arquivo dentro da pasta com a mensagem de aviso:

WARNING!
##########################################################################################################################################################
Please, 
be advised, that the folder /company-backup/amazon-s3 can be deleted without previous WARNING to save disk space as the INFRASTRUCTURE TEAM judge necessary.

Best regards,
Infrastructure Team.
###########################################################################################################################################################

Isso é possível? Qualquer ideia ?

    
por Valter Silva 25.06.2013 / 16:37

3 respostas

6

Aqui está uma possibilidade, se seus usuários acessarem o diretório via linha de comando:

Redefina o comando cd do shell interno em um arquivo global rc para verificar se um arquivo .readme está presente no diretório atual e, em caso afirmativo, exiba-o (com alguns bons elementos óticos).

a. Com zsh ( /etc/zshrc ) você pode usar uma função de gancho especialmente projetada ( chpwd ), que é chamada sempre que o diretório de trabalho atual é alterado:

function chpwd {
  if [[ -e .readme ]]; then
    echo
    echo \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
    cat .readme
    echo \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
    echo
fi }

b. Não sei se há uma possibilidade semelhante em bash , mas você pode redefinir cd em /etc/bash.bashrc :

cd() {
   builtin cd "$@"
   if [[ -e .readme ]]; then
     echo
     echo \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
     cat .readme
     echo \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
     echo
   fi
}

c. E finalmente o mesmo com a sintaxe csh ( /etc/csh.cshrc ):

alias cd 'cd \!*; eval "if (-e .readme) then \
  echo \
  echo ################################################################################ \
  cat .readme \
  echo ################################################################################ \
  echo \
endif"'

E é assim que parece:

user@machine:~> cd temp

################################################################################
Attention! This is a temporary directory!
################################################################################

user@machine:~/temp> 
    
por 25.06.2013 / 17:33
2

Use inotify-tools :

$ inotifywait -e open YOUR_DIRECTORY

Exemplo:

$ inotifywait -e open for_delete
Setting up watches.  
Watches established.
for_delete/ OPEN,ISDIR
$

Existe um bom exemplo de script no link acima.

    
por 25.06.2013 / 17:29
0

A sugestão sobre o zsh foi boa, mas se você quiser fazer alguma coisa para o bash, talvez seja necessário roteirizar você mesmo. Eu fiquei viciado no comando cd no bash para um propósito diferente (assim ele mostraria o PWD no título da janela do terminal), mas a mesma técnica poderia ser usada para catar um arquivo .readme sempre que você cd em um diretório .

Tudo que fiz foi escrever um script para executar o cd (usando a palavra-chave builtin para permitir que eu sobrescrevesse o comando real - você também poderia usar \cd ) e também fazer qualquer operação desejada após ele concluído. Armazenei o script em meu diretório pessoal em algum lugar (gosto de ~/scripts , pessoalmente) e, em seguida, criei um alias no meu arquivo .bashrc que o origina.

É assim que parece para mim. Para o seu caso, em vez do comando echo , você gostaria de cat $PWD/.readme .

~ / scripts / cd.sh:

builtin cd $1
echo -ne "3]0;$shell_title - 'pwd | sed "s|$HOME|~|g"'
alias cd='source ~/scripts/cd.sh'
7"

~ / .bashrc:

builtin cd $1
echo -ne "3]0;$shell_title - 'pwd | sed "s|$HOME|~|g"'
alias cd='source ~/scripts/cd.sh'
7"

Agora, sempre que eu digitar cd no terminal, ele gerará esse script, alterando o diretório e o título da minha janela.

    
por 25.06.2013 / 17:53

Tags