Опубликованные решения показались мне немного загадочными. Вот решение в Python 3.6:
#!/usr/bin/env python3
from pathlib import Path
import sys
import fileinput
def remove_multiple_blank_lines_from_file(path, strip_right=True):
non_blank_lines_out_of_two_last_lines = [True, True]
for line in fileinput.input(str(path), inplace=True):
non_blank_lines_out_of_two_last_lines.pop(0)
non_blank_lines_out_of_two_last_lines.append(bool(line.strip()))
if sum(non_blank_lines_out_of_two_last_lines) > 0:
line_to_write = line.rstrip() + '\n' if strip_right else line
sys.stdout.write(line_to_write)
def remove_multiple_blank_lines_by_glob(rglob='*', path=Path('.'), strip_right=True):
for p in path.rglob(rglob):
if p.is_file():
try:
remove_multiple_blank_lines_from_file(p, strip_right=strip_right)
except Exception as e:
print(f"File '{p}' was not processed due the error: {e}")
if __name__ == '__main__':
remove_multiple_blank_lines_by_glob(sys.argv[1], Path(sys.argv[2]), next(iter(sys.argv[3:]), None) == '--strip-right')
Вы можете вызывать функции из интерпретатора или запускать их из оболочки, например:
$./remove_multiple_lines.py '*' /tmp/ --strip-right
В клавишах man xkeyboard-config
, для выбора 3-го уровняперечислены несколько опций для изменения доступа к 3-му уровню.
lv3:alt_switch Any Alt
lv3:lalt_switch Left Alt
lv3:ralt_switch Right Alt
lv3:ralt_switch_multikey Right Alt; Shift+Right Alt as Compose
lv3:ralt_alt Right Alt never chooses 3rd level
Итак,
setxkbmap -option lv3:lalt_switch -option lv3:ralt_alt
делает левый Alt доступом к 3-му уровню, а правый Alt — обычным Alt.
Поместите команду в сценарий запуска -up, чтобы сделать ее постоянной, или в системах на основе Debian включите параметры в/etc/default/keyboard
:
XKBOPTIONS="lv3:lalt_switch,lvl3:ralt_alt"