폴더를 입력 할 때 경고 메시지를 표시하는 방법은 무엇입니까? 경고 메시지를

이것이 가능한지 모르겠지만 사용자가 입력 할 때 경고 메시지를 표시하고 싶은 폴더가 있습니다. 필자의 경우 디스크 공간을 절약하기 위해 이전 경고없이 폴더를 삭제할 수 있다고 말합니다. 경고 메시지와 함께 폴더 안에 이미 파일을 만듭니다.

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

가능합니까? 어떤 아이디어?



답변

사용자가 명령 행을 통해 디렉토리에 액세스하는 경우 한 가지 가능성이 있습니다.

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>


답변

inotify-tools를 사용하십시오 .

$ inotifywait -E YOUR_DIRECTORY를 엽니 다

예:

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

위의 링크에 스크립트의 좋은 예가 있습니다.


답변

zsh에 관한 제안은 좋았지 만 bash를 위해 무언가를하고 싶다면 직접 스크립트를 작성해야 할 수도 있습니다. cd다른 목적으로 bash 의 명령에 연결 했지만 (터미널 창의 제목에 PWD를 표시 합니다) 디렉토리에 .readme파일을 cd넣을 때마다 동일한 기술을 사용하여 파일을 정리 할 수 있습니다 .

내가 한 모든 것은 cd( builtin실제 명령을 덮어 쓸 수 있도록 키워드를 사용합니다 -또한 사용할 수 있습니다 \cd) 스크립트를 작성하고 완료 후 원하는 작업을 수행했습니다. 스크립트를 홈 디렉토리 ( ~/scripts개인적으로 좋아함)에 저장 한 다음 .bashrc소스 파일 을 만드는 별명을 파일 에 만들었 습니다.

이것이 나를 찾는 방법입니다. 귀하의 경우 echo명령 대신 에을 원할 것 cat $PWD/.readme입니다.

~ / scripts / 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터미널에 입력 할 때마다 디렉토리와 창 제목을 변경하여 해당 스크립트를 소싱합니다.


답변