Umgang mit Leerzeichen in OS X entlang von Dateipfaden, wenn bestimmte UNIX-Programme dies nicht mögen

Ich versuche, einen Befehl in einer TeX -Datei in eine Bibliographiedatei aufzunehmen, die ich zentral speichere.

Wenn Sie jedoch den Dateipfad einbeziehen, wie z

/Foldername with whitespace/ANOTHER folder name with whitespace/nowsinfldrname/bibo.bib

mein Unix-basiertes Satzsystem beschwert sich. Gibt es eine Möglichkeit, das zu korrigieren, außer meine Ordner umzubenennen?

Welches Satzprogramm verwendest du? Die sofortige Lösung wird von grgarside gut abgedeckt , aber es ist viel schwieriger, Skripte zu haben, die alle korrekt Escape-Zeichenfolgen enthalten. Vor allem, wenn sie modular aufgebaut sind und Dateinamen an andere Skripte weitergeben usw.
Danke @bmike Es ist texshop im Zusammenhang mit Latex. Die Fehlerausgabe kommt von seiner Konsole, die Leerzeichen als Problem explizit macht. Versuchen Sie es jetzt mit den einfachen Anführungszeichen.
Es funktioniert immer noch nicht, aber vielleicht muss ich das stattdessen nach tex.stackexchange verschieben.

Antworten (4)

In Bash gibt es zwei Möglichkeiten, Leerzeichen in Pfadnamen zu verwenden:

  • Backslash entgeht den Leerzeichen

    /path/to/folder\ with\ spaces/
    
  • Umbruch mit Anführungszeichen

    "/path/to/folder with spaces and $variable/"
    
    '/path/to/folder with spaces and a literal $/'
    

    Doppelte Anführungszeichen erweitern Shell-Variablen. Einfache Anführungszeichen nicht.

Wahrscheinlich möchten Sie einfache Anführungszeichen verwenden, um die Interpolation von Sonderzeichen wie $. "/path/to/my/$money"ist /path/to/my/mit dem Wert der $moneyShell-Variablen am Ende (die wahrscheinlich leer sein wird). '/path/to/my/$money'ist /path/to/my/$money.
@Schwern Danke - Ich habe aus diesem Grund ausdrücklich doppelte Anführungszeichen gewählt, da sich die ursprüngliche Frage speziell auf Leerzeichen bezog und der Ordnername im OP-Pfad möglicherweise von einer Variablen bereitgestellt wurde, aber ich verstehe, dass ich dies völlig angenommen und nicht gemacht habe klar in meiner Antwort.
@Schwern Die Backslashes haben tatsächlich nicht funktioniert, da ich von meiner Tex-Konsole eine weitere Meldung erhalten habe, dass Leerzeichen erkannt wurden. Doppelte Anführungszeichen auch nicht. Ich werde es aber mit einfachen Anführungszeichen versuchen.

Escape die Leerzeichen mit einem Backslash:

This\ has\ spaces

Als letztes Mittel gibt es symbolische Links.

Der Link wird auf einer niedrigeren Ebene erweitert, sodass das Zitieren auf Anwendungsebene übersprungen wird.

ln -s '/Foldername with whitespace/ANOTHER folder name with whitespace/nowsinfldrname' /tmp/
Dies könnte tatsächlich eine anständige Problemumgehung sein, wenn die Toolkette Dateinamen nicht richtig maskieren und/oder beliebige Unicode-Dateinamen und -Pfade verarbeiten kann.

Die Antwort ist sehr einfach. Es ist nicht die Schuld von OS X, sondern von BibTex. Es ist ziemlich alt und unterstützt keine Leerzeichen in Dateinamen oder Pfaden.