unerwartete Zeichen vor Dateinamen bei Verwendung von LS

unerwartete Zeichen vor Dateinamen bei Verwendung von LS

Wir haben einen Arduino Yun Rev 2 mit Extroot über die YunDiskExpander-Skizze auf einer 32 GB SanDisk-microSD eingerichtet, die so partitioniert ist, dass 512 MB für das Extroot zur Verfügung stehen.

[Merkwürdigerweise werden die Ergebnisse jedoch immer, wenn wir ls verwenden, mit einer Ziffer (normalerweise 1), ;zwei weiteren Ziffern (normalerweise 34) und dem Buchstaben eingeleitet, mund dann erhalten wir den Datei- oder Ordnernamen, der dann immer [mangehängt wird. Dies scheint auch bei jedem Zeichen aufzutreten, wenn vim auf dem Arduino ausgeführt wird.

Wir greifen über den öffentlich verfügbaren seriellen Monitor als Terminalskizze darauf zu. Diese unerwarteten Zeichen behindern die Entwicklung erheblich, daher wäre jede Unterstützung sehr willkommen.

Antwort1

Die von Ihnen beschriebenen Dinge sind (Teile von)Escape-Sequenzenverantwortlich für die Änderung der Vordergrundfarbe von Text. In meinem Debian lskann die folgende Beispielausgabe generiert werden:

^[[01;34mfoobar^[[0m

wobei ^[ein einzelnes Zeichen repräsentiert: Escape-Zeichen ( 0x1b). Terminals, die dies unterstützen, sollten nach dem Empfang solcher Daten foobarin Blau drucken. Sie haben keine Nullen erwähnt und meine Tests zeigen, dass das ^[[1;34mfoobar^[[mauch funktioniert, also lsgeneriert Ihr wahrscheinlich die letztere Form.

lsversucht, seine Ausgabe zu färben, aber es sieht so aus, als ob Escape-Zeichen aus irgendeinem Grund bei der Übertragung verloren gehen oder sie korrekt übertragen werden, Ihr Terminal sie jedoch ignoriert (weder druckt ihre Darstellung noch erkennt es nachfolgende Steuersequenzen). Im Endeffekt sehen Sie:

[1;34mfoobar[m

Pure lsohne Optionen sollte keine Farben verwenden,POSIXsagt nichts über Farben aus. Implementierungen bieten Ihnen jedoch möglicherweise die Möglichkeit, die Ausgabe einzufärben, und es ist üblich, dass für lsein Alias ​​für ist ls --color=auto. Normalerweise funktioniert das gut und Benutzer wissen möglicherweise nicht einmal, dass der Alias ​​beteiligt ist. Überprüfen Sie, ob dieses Szenario auf Ihren Fall zutrifft: rufen Sie auf alias ls. Ich gehe davon aus, dass dies der Fall ist.

Mögliche Lösungen:

  • überschreibe die Option bei Bedarf: ls --color=no;
  • Umgehung des Alias ​​bei Bedarf: command ls;
  • zerstöre den Alias ​​(einmal pro Shell-Sitzung): unalias ls;
  • Finden Sie heraus, in welchem ​​Startskript der Alias ​​definiert ist und löschen Sie die entsprechende Zeile oder kommentieren Sie sie aus. Dies ist eine dauerhafte Lösung.

verwandte Informationen