Если ничего из вышеперечисленного не сработало для вас. У меня была такая же проблема на 64-разрядной машине linux mint. Единственное, что мне помогло, это скрипт python :
import sys, select, subprocess
while True:
p = subprocess.Popen(['xset', 'dpms', 'force', 'off'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
break
У вас есть файл с шаблонами. grep
может считывать паттерны с опцией -f
. Если вы хотите проверить, соответствует ли строка $input
шаблону в patterns.txt
, вы можете сделать
printf '%s\n' "$input" |
if grep -q -f patterns.txt; then
echo 'matches'
else
echo 'does not match'
fi
Это запустит grep
содержимое строки с шаблонами в patterns.txt
. В bash
вы могли бы вместо этого использовать здесь -строку:
if grep -q -f patterns.txt <<<"$input"; then
echo 'matches'
else
echo 'does not match'
fi
-q
останавливает grep
производство вывода (нас интересует только статус выхода ).
Если шаблоны являются фиксированными строками (, а не регулярными выражениями ), используйте -F
с grep
в дополнение к другим флагам(grep -qF -f...
).
Использование bash
, cut
иgrep
:
read -p "Hey user, input something: " $n
printf "Match "
grep -m 1 -q -f <(cut -d, -f2 file) <<< "$n" || printf "not "
printf "found.\n"
Примечания:
cut
используется для извлечения среднего поля из файла grep
ищет это среднее поле в строке пользовательского ввода. printf
дает некоторую обратную связь.