Подтверждение rm в zsh

После того, как я обнаружил «trash-put», я хотел бы приучить себя использовать его вместо «rm» в большинстве случаев. Если я просто назову его псевдонимом, это может заставить меня чувствовать себя в безопасности на машинах без моих файлов конфигурации, поэтому я придумал следующее (в моем .zshrc):

function rm() {
    local go_ahead
    read -q "go_ahead?Are you sure you don't want to use rms? (y/n)"
    echo ""
    if [[ "$go_ahead" == "y" ]]; then
        /bin/rm $*
    fi
}
alias rms='trash-put'

Кажется, это работает, но у меня нет большого опыта работы со сценариями zsh... это хороший способ сделать то, что я хочу?

Спасибо Питер


person Peter    schedule 30.01.2014    source источник
comment
Вероятно, лучший вопрос для unix.stackexchange.com   -  person Munim    schedule 30.01.2014
comment
Вы можете проверить параметры RM_STAR_SILENT и RM_STAR_WAIT и, возможно, использовать setopt rm_star_wait и setopt NO_rm_star_silent. Также это интересный пост о создании более безопасных сценариев rm (от людей с большим опытом написания сценариев Zsh) zsh.org/mla/users/2014/msg00114.html   -  person Francisco    schedule 04.02.2014
comment
Я нашел этот подход полезным для того, чтобы заставить `exec' запрашивать подтверждение :-)   -  person SamB    schedule 06.07.2014


Ответы (1)


Ну зачем делать функцию и алиас, а не просто:

alias rm="rm -i"

или иным образом преобразовать свой rm, чтобы он был:

function rm() {
    local go_ahead
    read -q "Are you sure you don't want to use trash-put? [y/N]"
    echo ""
    if [[ "$go_ahead" = "y" ]]; then
        /bin/rm $*
    else
        /usr/bin/env trash-put $*
    fi
}

поэтому он работает trash-put, если вы не говорите y.

person zmo    schedule 30.01.2014
comment
Спасибо за ваш ответ, но я бы предпочел не подтверждать каждый раз, когда я хочу что-то удалить. Вот почему я поставил псевдоним rms. - person Peter; 30.01.2014
comment
ну, я обычно использую rm с псевдонимом rm -i и делаю rm -f, когда мне не нужно подтверждение - person zmo; 30.01.2014