Я не знаю, как добиться этого с помощью xrandr
, но если вы используете nvidia
, это легко сделать с помощьюnvidia-settings
:Черная рамка будет отображаться в правой части окна просмотра. На самом деле я использую это для проекторов, которые могут не использовать всю область проецирования из-за препятствий.
Если вы хотите сообщить обо всех строках bar.txt
, которые не соответствуют ни одному из шаблонов в foo.txt
, в zsh
, это может быть:
unique_lines=(${(fu)"$(<bar.txt)"})
unique_patterns=(${(fu)"$(<foo.txt)"})
pattern="(${(j[|])unique_patterns})"
print -rC1 -- ${unique_lines:#$~pattern}
Или все сразу:
print -rC1 -- ${${(fu)"$(<bar.txt)"}:#(${(j[|])~${(fu)"$(<foo.txt)"}})}
$(<file)
— это ksh -, подобный оператору, который расширяется до содержимого $file
без завершающих символов новой строки. ${(flags)param}
использует флаги расширения параметра , чтобы повлиять на расширение param
. f
флаг, разбиение на переводы строки (здесь расширяется до списка не -пустых строк ). u
(uniq ):удаляет дубликаты. Итак, ${(fu)"$(<foo.txt)"}
расширяется до уникальных не -пустых строкfoo.txt
${array:#pattern}
расширяется до элементов $array
, которые не соответствуют шаблону. Здесь шаблон строится как:${(j[|])unique_patterns}
где элементы $unique_patterns
соединены с |
. Таким образом, мы получаем шаблон (line1|line2|...)
. ~
в $~pattern
заставляет подстановочные знаки рассматриваться как таковые при расширении переменной. Обратите внимание, что синтаксис подстановочных знаков аналогичен zsh
подстановочным знакам. На это влияют несколько параметров оболочки, таких как extendedglob
, kshglob
, nocasematch
...
В bash
вы можете сделать что-то подобное с:
shopt -s extglob
pattern="@($(sort -u foo.txt | paste -sd '|' -))"
sort -u bar.txt |
while IFS= read -r line; do
[[ $line = $pattern ]] || printf '%s\n' "$line"
done
На этот раз используется синтаксис подстановочных знаков bash extglob, аналогичный синтаксису ksh88.
Обратите внимание, что порядок строк в bar.txt
меняется.