답변:
추가 명령을 입력하지 않고 작동 하시겠습니까? 예 :
$ rm file
또는 사용자가 다음과 같은 것을 입력 할 때만
$ confirm rm file
또는 사용자가 특정 명령을 실행하려고 할 때만
$ rm file
그러나
$ echo "Hello"
옵션 1 인 경우 zsh의 사전 실행 후크 또는 bash의 DEBUG 트랩을 사용하여 수행 할 수 있습니다.
옵션 2 인 경우 이와 같은 것을 /etc/bash.bashrc다른 쉘 시작 파일 에 넣으십시오 .
confirm() {
echo -n "Do you want to run $*? [N/y] "
read -N 1 REPLY
echo
if test "$REPLY" = "y" -o "$REPLY" = "Y"; then
"$@"
else
echo "Cancelled by user"
fi
}
옵션 3 인 경우 confirm위 의 스크립트를 수정 하거나 일부 명령에 무언가를하기 전에 물어볼 수있는 옵션이 있습니다 (예 :) rm -i. 당신은 넣을 수
alias rm='rm -i'에서 /etc/bash.bashrc.
나는 bash를 약간 가지고 놀고 이것이 가능할 수있는 핵을 알아 냈습니다.
#!/bin/bash
debug_trap () {
echo "executing $BASH_COMMAND"
echo "Allow?"
select choice in yes no
do
if [ "$choice" = "yes" ]
then break
elif [ "$choice" = "no" ]
then return 1
fi
done
}
shopt -s extdebug
trap debug_trap DEBUG
당신은 말하자면에서이 스크립트를 저장, 수 confirm-any-command.sh및 source당신의 그것을 bashrc. 실행할 각 명령의 확인을 요청합니다.
이것은 개념 증명 핵에 지나지 않습니다. 이 형식에서 실제로 유용 할 수 있을지 의심됩니다. 입력 한 모든 명령을 확인해야하는 경우 각 명령 후에 자동으로 "예"를 누르는 습관을 얻게됩니다. "명령의 끝"에 대한 당신의 정신 매핑 그냥 변경됩니다 Enter에 Enter, yes, Enter- 당신이 전체로 입력되고, 심지어는 것을 확인에 시간을 보내고 노력하지 않는 정말 이 명령을 실행합니다. 이것은 비생산적이며 도움이되지 않습니다.
Allow? 1) yes 2) no #? 하지도 yes않고 no작업이 무한 루프 (데비안 8)을 일으키지 않는
help select: 1또는 2대신 yes또는 입력해야합니다 no. 유효하지 않은 입력에 대한 자동 재 시도는 의도 된 동작으로 (스크립트 작성기가 while자신 을 재발 명 할 필요가없고 , 간결함과 명확성을 유지함) EOF 입력이 루프를 종료합니다. 이를 알면 위의 스크립트가 작동하는지 스스로 확인할 수 있습니다. 어쨌든 개념 증명의 조잡한 증거이므로 수정하지 않을 것입니다.
y e s Enter예
먼저 터미널을 엽니 다.
그런 다음
cd ~
touch .sure
chmod 700 .sure
그런 다음 .sure를 열고 안에 붙여 넣습니다.
#!/bin/bash --init-file
PS1='> '
alias y='
$1
exit
'
alias n='killall Terminal'
echo ''
echo 'Are you sure? Answer y or n.'
echo ''
그런 다음 파일을 닫습니다.
~/.sure ; ENTER COMMAND HERE
명령을 계속하기 전에 확인 메시지가 표시됩니다.
cd하고ls?