Wie erhalte ich das aktuelle Arbeitsverzeichnis mit umgekehrtem Schrägstrich?

Wie erhalte ich das aktuelle Arbeitsverzeichnis mit umgekehrtem Schrägstrich?

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 bardurch bazin 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önnensedkonvertieren 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 trwird alles /in \; umgewandelt. Beispiel:

$ echo $PWD | tr '/' '\\'
\home\pandya

verwandte Informationen