/usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml ファイルの一部は次のとおりです。
<key name='alternative-port' type='q'>
<summary>Alternative port number</summary>
<description>
The port which the server will listen to if the 'use-alternative-port'
key is set to true. Valid values are in the range of 5000 to 50000.
</description>
<default>5900</default>
</key>
<key name='require-encryption' type='b'>
<summary>Require encryption</summary>
<description>
If true, remote users accessing the desktop are required to
support encryption. It is highly recommended that you use a
client which supports encryption unless the intervening network
is trusted.
</description>
<default>false</default>
</key>
<key name='authentication-methods' type='as'>
<summary>Allowed authentication methods</summary>
<description>
Lists the authentication methods with which remote users may
access the desktop.
There are two possible authentication methods; "vnc" causes the
remote user to be prompted for a password (the password is
specified by the vnc-password key) before connecting and "none"
which allows any remote user to connect.
</description>
<default>['none']</default>
</key>
これで、文字列がfalseの段落をtrueに変更したいと思います。シェルスクリプトを使用してどうすればよいですか?
答え1
あなたの質問は少し不明ですが、実際に欲しいものが何であれ、シェルスクリプトからPerlを呼び出すことができます。
- 次のコードはオンライン
true
でのみ変更されます。false
5
#!/bin/sh
perl -pi -e 's/true/false/ if($. == 5)' /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
$. == 5
に変更すると、$. > 5
5行目以降のどこでも発生します。
答え2
<default>false</default>
あなたの質問が開始セクションでどのように変更されるかを尋ねることをすでに理解しています。<default>true<default>
<key name='require-encryption' type='b'>
XMLパーサーを使用すると、ファイル行の実際のレイアウトではなく構造に基づいてこの設定を確実に変更できます。使用方法は次のとおりですxmlstarlet
。
<root>
たとえば、有効なXMLに変換するためにコードスニペットを...にラップしました</root>
。元のファイルはすでに有効なXMLであるため、編集する必要はありませんが、より正確なXPathマッチングをしたい場合があります。このコードを使用して、値を持つ属性を持つ要素のパス…/key/default
を一致させ、値をリテラルに変更します。key
name
require-encryption
default
true
xmlstarlet ed -u '//key[@name="require-encryption"]/default' -v true org.gnome.Vino.gschema.xml
通常どおりこの作業を内部で実行するには、標準レシピを使用してくださいcommand > output.tmp && mv -f output.tmp output
。 (これは多くのGNUコマンドの-i
/--in-place
フラグが後で行うのとほぼ同じです。)
xmlstarlet … > org.gnome.Vino.gschema.xml.tmp &&
mv -f org.gnome.Vino.gschema.xml.tmp org.gnome.Vino.gschema.xml