всегда запрашивать пользователя перед выполнением команды в оболочке

После обновления до версии 13 у меня такая же проблема. Если у вас есть Google на хинди, как местный Lang, попробуйте этот

Затем, после нажатия этой опции, выберите это меню

Seach term

Который приведет вас к языковому окну «Прокрутка», сохраните предпочтительный язык снизу. Кнопка «Первый клик».

P.S: Поскольку большинство языков будут иметь один и тот же графический выбор, поэтому я опубликовал в формате скриншотов.

6
задан 19 January 2011 в 08:33

24 ответа

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 25 May 2018 в 23:24

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 25 July 2018 в 22:36

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 26 July 2018 в 22:55

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 31 July 2018 в 11:17

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 31 July 2018 в 12:17

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 2 August 2018 в 04:02

вы хотите работать без ввода дополнительных команд, например,

$ rm file

или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

или только когда пользователь пытается запускать определенные команды, например,

$ rm file

, но не

$ echo "Hello"

если вариант 1, Что можно сделать с помощью preexec крючок в ЗШ, или ОТЛАДОЧНОЙ ловушки в bash.

если вариант 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. Вы могли бы поставить [F9] в /etc/bash.bashrc.

7
ответ дан 4 August 2018 в 20:05

вы хотите работать без ввода дополнительных команд, например,

$ rm file

или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

или только когда пользователь пытается запускать определенные команды, например,

$ rm file

, но не

$ echo "Hello"

если вариант 1, Что можно сделать с помощью preexec крючок в ЗШ, или ОТЛАДОЧНОЙ ловушки в bash.

если вариант 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. Вы могли бы поставить [F9] в /etc/bash.bashrc.

7
ответ дан 6 August 2018 в 04:06

Вы хотите, чтобы он работал без ввода дополнительной команды, например

$ rm file

Или только тогда, когда пользователь вводит что-то вроде

$ confirm rm file

Или только тогда, когда пользователь пытается для выполнения определенных команд, например

$ rm file

, но не для

$ echo "Hello"

Если параметр 1, это можно сделать, используя крюк preexec в zsh или ловушку DEBUG в bash ,

Если опция 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 выше, или , некоторые команды имеют возможность спросить, прежде чем что-то делать, например [F8]. Вы можете поместить alias rm='rm -i' в /etc/bash.bashrc.

7
ответ дан 6 August 2018 в 04:07

Вы хотите, чтобы он работал без ввода дополнительной команды, например

  $ rm file  

Или только когда пользователь вводит что-то вроде

  $ confirm rm file  

Или только тогда, когда пользователь пытается выполнить определенные команды, например

  $ rm file  

, но не для

  $ echo «Hello»  

Если параметр 1, это можно сделать с помощью preexec hook в zsh или ловушку DEBUG в bash.

Если опция 2, добавьте что-то подобное в /etc/bash.bashrc или другой файл запуска оболочки.

  confirm () {echo  -n «Вы хотите запустить $ *? [N / y]» read -N 1 REPLY echo, если тест «$ REPLY» = «y» -o «$ REPLY» = «Y»;  затем «$ @» else echo «Отменено пользователем» fi}  

Если параметр 3, вы можете изменить сценарий confirm выше, или некоторые команды имеют возможность спросить, прежде чем что-то делать, например rm -i . Вы можете поместить псевдоним rm = 'rm -i' в /etc/bash.bashrc .

7
ответ дан 7 August 2018 в 22:06

Вы хотите, чтобы он работал без ввода дополнительной команды, например

  $ rm file  

Или только когда пользователь вводит что-то вроде

  $ confirm rm file  

Или только тогда, когда пользователь пытается выполнить определенные команды, например

  $ rm file  

, но не для

  $ echo «Hello»  

Если параметр 1, это можно сделать с помощью preexec hook в zsh или ловушку DEBUG в bash.

Если опция 2, добавьте что-то подобное в /etc/bash.bashrc или другой файл запуска оболочки.

  confirm () {echo  -n «Вы хотите запустить $ *? [N / y]» read -N 1 REPLY echo, если тест «$ REPLY» = «y» -o «$ REPLY» = «Y»;  затем «$ @» else echo «Отменено пользователем» fi}  

Если параметр 3, вы можете изменить сценарий confirm выше, или некоторые команды имеют возможность спросить, прежде чем что-то делать, например rm -i . Вы можете поместить псевдоним rm = 'rm -i' в /etc/bash.bashrc .

7
ответ дан 10 August 2018 в 10:20

Вы хотите, чтобы он работал без ввода дополнительной команды, например

  $ rm file  

Или только когда пользователь вводит что-то вроде

  $ confirm rm file  

Или только тогда, когда пользователь пытается выполнить определенные команды, например

  $ rm file  

, но не для

  $ echo «Hello»  

Если параметр 1, это можно сделать с помощью preexec hook в zsh или ловушку DEBUG в bash.

Если опция 2, добавьте что-то подобное в /etc/bash.bashrc или другой файл запуска оболочки.

  confirm () {echo  -n «Вы хотите запустить $ *? [N / y]» read -N 1 REPLY echo, если тест «$ REPLY» = «y» -o «$ REPLY» = «Y»;  затем «$ @» else echo «Отменено пользователем» fi}  

Если параметр 3, вы можете изменить сценарий confirm выше, или некоторые команды имеют возможность спросить, прежде чем что-то делать, например rm -i . Вы можете поместить псевдоним rm = 'rm -i' в /etc/bash.bashrc .

7
ответ дан 13 August 2018 в 16:45

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 25 May 2018 в 23:24
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 25 July 2018 в 22:36
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 26 July 2018 в 22:55
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 31 July 2018 в 11:17
  • 1
    Останавливается на Allow? 1) yes 2) no #? ни yes, ни no работа вызывает бесконечный цикл (для Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 31 July 2018 в 12:17
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Меня смутили ваши y e s Enter пример – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 2 August 2018 в 04:02
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

я играл с баша немного и нашел хак, с помощью которого это может быть возможным.

#!/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

Вы можете сохранить этот скрипт под, скажем, [F2] и source его в bashrc. Он будет просить для подтверждения каждой команды вы будете пытаться исполнить.

обратите внимание, что это не более чем доказательство концепции рубить; я сомневаюсь, что это действительно может быть какой-либо полезной в этой форме. Если вам придется подтверждать каждую команду вы вводите, вы очень скоро приобретете привычку автоматически нажмите "Да" после каждой команды. Ваше психическое отображение для "конец команды" будут меняться от просто ввести,да,ввод - вы вводите его в целом, даже не пытаясь потратить некоторое время на проверку, что вы действительно хотите этого, чтобы выполнить команду. Это контрпродуктивно и не поможет вам.

10
ответ дан 4 August 2018 в 20:05
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras читать help select: вы должны вход 1 или 2, а не yes или [F5]. Автоматического повтора для недопустимых входов предназначено поведения (так, что сценарист не должен изобретать while себя, сохраняя лаконичность и ясность), и ввод ВФ завершает цикл. Зная это, вы можете сами проверить, что выше скрипт работает. Я не буду изменять его, поскольку это в любом случае грубое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Меня смутили ваши y e s Enter пример – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 6 August 2018 в 04:06
  • 1
    Останавливает Allow? 1) yes 2) no #? ни работу yes, ни no, вызывающую бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras читать help select: вы должны вход 1 или 2, а не yes или [F5]. Автоматического повтора для недопустимых входов предназначено поведения (так, что сценарист не должен изобретать while себя, сохраняя лаконичность и ясность), и ввод ВФ завершает цикл. Зная это, вы можете сами проверить, что выше скрипт работает. Я не буду изменять его, поскольку это в любом случае грубое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Я немного играл с 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 it в вашем bashrc. Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы введете его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно хотите, чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 6 August 2018 в 04:07
  • 1
    Останавливается на Allow? 1) yes 2) no #? ни yes, ни no работа вызывает бесконечный цикл (для Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select: вы должны ввести 1 или 2, а не yes или no. Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать while, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Меня смутили ваши y e s Enter пример – vladkras 14 January 2016 в 20:54

Я немного сыграл с bash и понял, что это может быть сделано.

  #! / bin / bash debug_trap () {echo "Выполнение $ BASH_COMMAND" echo  "Позволять?"  выберите «выбор», да нет, если [«$ choice» = «yes»], а затем отмените elif ["$ choice" = "no"], затем верните 1 fi done} shopt -s extdebug trap debug_trap DEBUG  

Вы можете сохранить этот сценарий под, скажем, confirm-any-command.sh и source в своем bashrc . Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы будете печатать его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно ] чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 7 August 2018 в 22:06

Я немного сыграл с bash и понял, что это может быть сделано.

  #! / bin / bash debug_trap () {echo "Выполнение $ BASH_COMMAND" echo  "Позволять?"  выберите «выбор», да нет, если [«$ choice» = «yes»], а затем отмените elif ["$ choice" = "no"], затем верните 1 fi done} shopt -s extdebug trap debug_trap DEBUG  

Вы можете сохранить этот сценарий под, скажем, confirm-any-command.sh и source в своем bashrc . Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы будете печатать его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно ] чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 10 August 2018 в 10:20

Я немного сыграл с bash и понял, что это может быть сделано.

  #! / bin / bash debug_trap () {echo "Выполнение $ BASH_COMMAND" echo  "Позволять?"  выберите «выбор», да нет, если [«$ choice» = «yes»], а затем отмените elif ["$ choice" = "no"], затем верните 1 fi done} shopt -s extdebug trap debug_trap DEBUG  

Вы можете сохранить этот сценарий под, скажем, confirm-any-command.sh и source в своем bashrc . Он запросит подтверждение каждой команды, которую вы попытаетесь выполнить.

Обратите внимание, что это не что иное, как взломать доказательство концепции; Я сомневаюсь, что это действительно может быть полезно в этой форме. Если вам нужно будет подтвердить каждую введенную вами команду, вы очень скоро приобретете привычку автоматически ударять «да» после каждой команды. Ваше ментальное сопоставление для «конца команды» изменится с «Enter», «Enter», «да», «Enter» - вы будете печатать его в целом, даже не пытаясь потратить некоторое время на проверку того, что вы действительно ] чтобы эта команда выполнялась. Это контрпродуктивно и не поможет вам.

10
ответ дан 13 August 2018 в 16:45
  • 1
    Остановка Разрешить? 1) да 2) нет #? ни да , ни no работа вызывает бесконечный цикл (Debian 8) – vladkras 13 January 2016 в 19:13
  • 2
    @vladkras read help select : вы должны ввести 1 или 2 , а не да или нет . Автоматическая повторная попытка для недопустимых входов - это поведение (так что сценаристу не нужно повторно изобретать , а сама, сохраняя краткость и ясность), а вход EOF завершает цикл. Зная это, вы можете убедиться, что скрипт выше работает. Я не буду его модифицировать, так как в любом случае это неопровержимое доказательство концепции. – ulidtko 14 January 2016 в 17:58
  • 3
    это правда. Я был смущен вашим примером y e s Enter – vladkras 14 January 2016 в 20:54

Другие вопросы по тегам:

Похожие вопросы: