Ich versuche, ein Skript zum Importieren einer Schriftart in Wine zu schreiben, weil ich die Schriftart in Wine eingefügt habe c:\Windows\Fonts
, Wine sie jedoch nicht liest, wenn ich sie nicht aus der Registrierungsdatei importiere:
"Font Name"="Z:\path\to\my\wineprefix\c:\Windows\Fonts\file.ttf"
Und ich weiß nicht, wie ich das /
in ändern kann \
, indem ich $(pwd)
oder verwende $PWD
. Weiß jemand, wie ich den Schrägstrich durch einen Backslash ersetzen kann?
Ich habe ein Problem mit Echo und mit der Ausgabedatei. In meinem Bash-Skript habe ich Folgendes
RUTA=""$( cd -P "$( dirname "$" )" && pwd )""
RUTAINVERSA=$(printf '%s\n' "${PWD//\//\\}")
Nun, ich habe es mit Folgendem versucht:
1:
echo 'REGEDIT4
[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]
"Courier New"="'"Z:\\$RUTAINVERSA\\wine\\data\\dosdevices\\c:\\windows\\Fonts\\cour.ttf"'"
"Courier New Bold"="'"Z:\\$RUTAINVERSA\\wine\\data\\dosdevices\\c:\\windows\\Fonts\\courbd.ttf"'"' >> "$ARREGLOS/Fuentes.reg"
Die Ergebnisse in der Vergangenheit waren: c:\Windows\Fonts
, und ich weiß nicht, was mit dem Rest mit passiert ist \file.ttf
.
2:
echo >> "$ARREGLOS/Fuentes.reg"
echo "[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]" >> "$ARREGLOS/Fuentes.reg"
echo "Courier New"="c:\\windows\\Fonts\\cour.ttf" >> "$ARREGLOS/Fuentes.reg"
echo "Courier New Bold"="c:\\windows\\Fonts\\courbd.ttf" >> "$ARREGLOS/Fuentes.reg"
Das Ergebnis sind: Courier New c:\windowsFontcour.tff Courier New Bold c:\widowsFontscourbd.ttf
3 :
[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]
"Courier New"="'"c:\\\windows\\\Fonts\\\cour.ttf"'"
"Courier New Bold"="'"c:\\\windows\\\Fonts\\\courbd.ttf"'" ' >> "$ARREGLOS/Fuentes.reg"
und es ist dasselbe wie beim ersten Mal c:\windows\Fonts
. Ich weiß nicht, warum der Pfad im Variablenergebnis nicht vollständig ist.
Antwort1
Ich bin nicht ganz sicher, was Sie versuchen, aber das Ändern der Schrägstriche ist einfach:
$ printf '%s\n' "${PWD//\//\\}"
\home\terdon
Dies nutzt die String-Manipulationsfunktionen von kshauch verfügbar inbash
. Insbesondere ${foo//bar/baz/}
ersetzt alle Vorkommen der Zeichenfolge bar
durch baz
in der Variable $foo
. Da /
und \
Sonderzeichen sind, müssen sie maskiert ( \\
und \/
) werden, damit dies mit ihnen funktioniert. Das Obige ist gleichbedeutend mit:
pwd | sed 's#/#\\#g'
Antwort2
Sie könnensed
konvertieren Sie alles /
mit \
dem folgenden Befehl:
sed 's/\//\\/g'
Beispiel:
$ echo $PWD | sed 's/\//\\/g'
\home\pandya
Eine andere Möglichkeit ist die Verwendungtr
:
tr '/' '\\'
Mit dem obigen Befehl tr
wird alles /
in \
; umgewandelt. Beispiel:
$ echo $PWD | tr '/' '\\'
\home\pandya