setxkbmap
나는 모든 게임의 컨트롤을 망가뜨리는 타이핑에 Dvorak을 사용하기 때문에 와인 게임을 시작하기 전에 키보드 레이아웃을 설정 해야 합니다 . 내가 원하는 것은 게임을 시작하기 전에 현재 키보드 레이아웃을 가져와 변수에 저장한 다음 게임이 끝난 후 복원하는 스크립트를 작성하는 것입니다.
ORIGINAL_LAYOUT=`setxkbmap -query | grep -P 'layout\:\s{5}(\w+)'`
setxkbmap us
wine ...
setxkbmap $ORIGINAL_LAYOUT
내가 겪고 있는 문제는 grep이 내 캡처 그룹뿐만 아니라 전체 줄과 일치한다는 것입니다. 일치하는 캡처 그룹을 간단히 덤프할 수 있는 방법이 있나요?
예를 들어, 출력은 다음과 setxkbmap -query
같습니다:
rules: evdev
model: pc105
layout: dvorak
레이아웃을 잡는 데 관심이 있습니다.
답변1
grep을 사용 -o
하고 약간 변경할 수 있습니다
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such
part on a separate output line.
.
ORIGINAL_LAYOUT=`setxkbmap -query | grep -oP '(?<=layout\:\s{5})\w+'`
Lookbehind를 사용하도록 정규식을 변경했으므로 일치 항목이 아닙니다.
답변2
다음 명령을 사용해 보십시오 awk
:
setxkbmap -query | grep layout | awk '{print $2}'
또는 cut
명령을 사용하십시오
setxkbmap -query | grep layout | cut -d : -f2