3

Я не знаю, возможно ли это, но у меня есть папка, в которой я хотел бы показать предупреждающее сообщение, когда пользователь входит в нее. В моем случае можно сказать, что папка может быть удалена без предварительного предупреждения, чтобы сэкономить место на диске. Я уже создаю файл внутри папки с предупреждением:

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

Это возможно ? Любая идея ?

3 ответа3

6

Вот одна из возможностей, если ваши пользователи получают доступ к каталогу через командную строку:

Переопределите встроенную команду оболочки cd в глобальном файле rc чтобы проверить, присутствует ли файл .readme в текущем каталоге и, если да, отобразить его (с некоторыми хорошими оптическими элементами).

а. С zsh (/etc/zshrc) вы можете использовать специально разработанную функцию ловушки (chpwd), которая вызывается при изменении текущего рабочего каталога :

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

б. Я не знаю, есть ли подобная возможность в bash , однако вы можете переопределить cd в /etc/bash.bashrc:

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

с. И наконец то же самое с синтаксисом csh (/etc/csh.cshrc):

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

И вот как это выглядит:

user@machine:~> cd temp

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

user@machine:~/temp> 
2

Используйте inotify-tools:

$ inotifywait -e открыть YOUR_DIRECTORY

Пример:

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

Хороший пример скрипта в ссылке выше.

0

Предложение относительно zsh было хорошим, но если вы хотите что-то сделать для bash, вам, возможно, придется написать это самостоятельно. Я подключил в команду cd в Баш для различных целей (так он будет отображать PWD в заголовке окна терминала) , но тот же метод может быть использован для кошки в .readme файл каждый раз cd в каталог.

Все, что я сделал, это написал сценарий для выполнения cd (используя builtin ключевое слово, позволяющее мне перезаписать настоящую команду - вы также можете использовать \cd), а также выполнить любую операцию, которую я пожелал после ее завершения. Я где-то сохранил скрипт в своем домашнем каталоге (лично мне нравится ~/scripts), а затем создал псевдоним в своем файле .bashrc который его получает.

Вот как это выглядит для меня. В вашем случае, вместо команды echo , вы захотите cat $PWD/.readme .

~/ Скрипты / cd.sh:

builtin cd $1
echo -ne "\033]0;$shell_title - `pwd | sed "s|$HOME|~|g"`\007"

~/.Bashrc:

alias cd='source ~/scripts/cd.sh'

Теперь, когда я набираю cd в терминал, он будет исходить из этого скрипта, меняя каталог и заголовок моего окна.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .