Caps Lock キーを Ctrl に設定したときのまとめ (Ubuntu 20.04, 22.04)

ネット検索すると、/etc/default/keyboard というファイルの  XKBOPTIONS の行を

XKBOPTIONS="ctrl:nocaps"

と書き換えればいいことがわかりました。( sudo nano /etc/default/keyboard ってやる、エディタを使う方法。)

何度も Ubuntu 日本語 Remix をインストールしなおすはめになって、上記の設定を自動化したいと思いました。

sed を使って

sed -e s/XKBOPTIONS=".*"/XKBOPTIONS="ctrl:nocaps"/etc/default/keyboard

とやると、標準出力に結果が表示されて変更がうまくできていました。
あとは結果をリダイレクトしてファイルにできれば目標達成です。

実際の変更は sudo ( root 権限)で行う必要があります。
ですが

sudo sed -e s/XKBOPTIONS=".*"/XKBOPTIONS="ctrl:nocaps"/ > /etc/default/keyboard.new

とやるとファイルが作成できなくて失敗しました。
sudo は前半の sed~には効くけれど、リダイレクトから先は効いていないようです。
(子プロセスがふたつ作られてパイプがつながれ、ひとつめが sudo sed~、ふたつめは自分の権限でファイルオープンかと思います。)

そこでまず、次のように実行したいことをテキストファイルにまとめました。

KEYCONF=/etc/default/keyboard
SFX=old
cp -f ${KEYCONF} ${KEYCONF}.${SFX}
rm -f ${KEYCONF}
sed -e s/XKBOPTIONS=".*"/XKBOPTIONS="ctrl:nocaps"/ ${KEYCONF}.${SFX} > ${KEYCONF}

そして

sudo bash コマンドを記述したファイル名

としたらうまくいきました。

込み入ったコマンド、一連のコマンドを sudo で実行したいときは、この方法が有効なようです。