ДА или НЕТ? Давай разберёмся!
Запускай:
cd /tmp
touch bashdays.txt
rm -i bashdays.txt
Получаем интерактивный запрос:
rm: remove regular empty file 'bashdays.txt'?
Выбор зависит от потребности. Либо да, либо нет. Но что вводить? Очевидно же — y или n.
Справедливо. Но что, если… Запускаем:
locale -k noexpr yesexpr
Выхлоп:
noexpr="^[-0nNНн]"
yesexpr="^[+1yYДд]"
Это все возможные варианты, которыми ты можешь воспользоваться. Если вместо «y» ты введёшь знак «+» — файл удалится.
Аналогично можно ввести 0 или 1. Либо «Д» или «Н».
Не везде из коробки прописаны такие регулярки, например на англоязычной Ubuntu — хуй с маслом.
noexpr="^[nN]"
yesexpr="^[yY]"
Функция, оценивающая ответ пользователя, учитывает локализацию.
Для подтверждения или отмены может быть использован любой символ в квадратных скобках из вывода вышеприведённой команды.
yesexpr, будет равносилен отмене, в том числе и пустой ввод.Как на это можно повлиять?
Всё это забиндено в файлах, которые лежат в папке /usr/share/i18n/locales.
Например, в файле ru_RU есть такое:
LC_MESSAGES
yesexpr "^[+1yY<U0414><U0434>]"
noexpr "^[-0nN<U041D><U043D>]"
yesstr "<U0434><U0430>"
nostr "<U043D><U0435><U0442>"
END LC_MESSAGES
Тут присутствуют как раз «0» и «1» / «+» и «-».
Если хочется упороться, можешь собрать свою локаль и добавить свои символы в регулярку:
cp /usr/share/i18n/locales/ru_RU ~/my_ru_RU
localedef -f UTF-8 -i ~/my_ru_RU ru_RU.UTF-8
После первой команды нужно отредактировать файл ~/my_ru_RU и затем запускать вторую команду.
Такие вот перлы и приколы. Изучай.
Многие этого ждали, завтра закину анонс про личное наставничество и обучение в рамках проекта Linux Factory.








Комментарии