i3モードキーをすばやく変更するbashscript

i3モードキーをすばやく変更するbashscript

i3の$ modキーをすばやく変更するためにbashスクリプトを作成しようとしています。 "set $mod Mod4"を私のconfの終わりに移動しました。

#!/bin/bash

$1=key
$alt="alt"
$win="win"

sed '$d' /home/fabian/.config/i3/config

if [ "$key" = "$win" ]; then
    echo "set \$mod Mod4" >> /home/fabian/.config/i3/config
    echo
    echo "Changed successfully to win"
else
if [ "$key" = "$alt" ]; then
    echo "set \$mod Mod1" >> /home/fabian/.config/i3/config
    echo
    echo "Changed successfully to alt"
else
    echo "No Flag valid flag set, set alt or win"
fi
fi

2つの質問:sudoで実行してもsedコマンドが機能しない

「changeMod.sh alt」を使用してスクリプトを実行すると、まだ勝利状態になり、「成功的に勝つように変更されました」というメッセージが表示されます。

可能であれば、古い$ mod + shift + rを挿入してi3 confを再ロードするスクリプトが必要です。

これがどのように可能かを知っていますか?

ベストアンサー1

最大の問題は、ファイルをその場で編集できるフラグがsedないことです。しかし、アプローチは安全ではありません。有効なコマンドなしでスクリプトを複数回実行すると、構成から1行ずつ削除されます。-i時間。努力の重複もたくさんあります。

これは、より安全で清潔な方法でこれを達成する必要があります。設定のバックアップコピーを作成しますが、利用可能な機能に応じてライン.backupから削除することでこれを防ぐことができます。sedsed

#!/bin/bash

conf="/home/fabian/.config/i3/config"

case "${1}" in
  (alt) key=Mod1 ;;
  (win) key=Mod4 ;;
  (*)   printf "Invalid key: %s\n" "${1}" ; exit 1 ;;
esac

sed -i.backup 's/^\(set $mod\) .*/\1 '"${key}/" "${conf}" || exit

printf "Changed successfully to %s/%s\n" "${1}" "${key}"

おすすめ記事