이것이 가능한지 모르겠지만 사용자가 입력 할 때 경고 메시지를 표시하고 싶은 폴더가 있습니다. 필자의 경우 디스크 공간을 절약하기 위해 이전 경고없이 폴더를 삭제할 수 있다고 말합니다. 경고 메시지와 함께 폴더 안에 이미 파일을 만듭니다.
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
터미널에 입력 할 때마다 디렉토리와 창 제목을 변경하여 해당 스크립트를 소싱합니다.