2つのスクリプト間の競合を避けるために、ファイル行の値を変更したいと思います。~/.ideskrc0に。以下は必須値を持つ行です。
Background.Delay: 0
これで問題に対処するための手動ソリューションがありました。
STRING="Background.Delay: 0"
if ! grep -q "$STRING" $HOME/.ideskrc;
then
yad --geometry 300x300 --text="Rotate Backgrounds and Separate Backgrounds can not be run at the same time. \n
Run Rotate Backgrounds and set that Delay to zero."
exit 0
fi
ユーザーの介入なしに変更することができれば良いようです。私は成功せずにsedを使用して多くのバリエーションを試しました。最近の例:
sed -i -r 's/Background.Delay:[[:space:]]+1/Background.Delay: 0/' ~/.ideskrc
私はちょうどジュニアスクリプターなので、間違いなく助けが必要です。ありがとうございます。
これで、最終バージョンには、関心のあるすべての人のためのヤード形式と修正されたメッセージが提供されます。
if ! grep -q "$STRING" $HOME/.ideskrc;
then
sed -i 's/^\([[:blank:]]*Background\.Delay:\).*/\1 0/' "$HOME/.ideskrc"
yad --timeout=3 --no-buttons --geometry 500x100 --text-align=center --text="
<b>Rotate Backgrounds has been disabled to avoid conflict.</b>
"
fi
答え1
:
行の後の値を削除して無条件に挿入したいと思い、行の先頭に0
文字列が表示されるとします。Background.Delay:
sed -i 's/^\([[:blank:]]*Background\.Delay:\).*/\1 0/' "$HOME/.ideskrc"
または
sed -i '/^[[:blank:]]*Background\.Delay:/ s/:.*/: 0/' "$HOME/.ideskrc"
これはホームディレクトリ内のファイルのすべての行の先頭でリテラル文字列を探しBackground.Delay:
、その前には任意の数のタブまたはスペース(これらは保持されます)が続く可能性があり、後続のすべてを削除してスペースの後に挿入します。.ideskrc
:
0
実装が上記のオプションのsed
使用をサポートしている場合(参照-i
sed -i(所定の位置で編集)を使用して移植性を達成するには?)。