[gelöst] Was bedeuten Dateinammen im Hochkomma?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Meillo
Moderator
Beiträge: 8876
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von Meillo » 02.04.2020 23:43:04

wanne hat geschrieben: ↑ zum Beitrag ↑
02.04.2020 23:20:42
Darum finde ich es interessant zu erfahren, *wie* die Dolphin-Entwickler sich entschieden haben.
Das ist nicht die Konsole/Dophin sondern ls, dass das macht. Funktioniert sogar auf der TTY.
Heisst das, dass auf einem aktuellen Debian bei ls(1) nun sowas wie `--quoting-style=shell' gesetzt ist? Steht das in einer profile-Datei?
Und ist IMHO kaputt, dass es bash-spezifisches quoting nutzt, selbst wenn es nicht in de bash ist.
Wenn ls(1) das macht, dann weiss das ja nicht welche Shell verwendet wird und was man dafuer wie quoten muss. Man kann in Unix ja eine beliebige Login-Shell verwenden, auch eine selbstgeschriebene.

Wie mir scheint, bietet das ls(1) aus den Coreutils einfach eine gewisse Menge an Escaping-Mechanismen.
Hier die gewünschte Ausgabe:

Code: Alles auswählen

csh
ls
'a'$'\a''b'   "a'b"
Mein etwas aelteres ls(1) kann diese Ausgabe aber nicht erzeugen. Wenn ich `--quoting-style=shell' verwende sieht es so aus:

Code: Alles auswählen

$ls --quoting-style=shell Z* 
'Z'\''a'
Je nach Dateinamen unterschiedlich zu quoten macht mein ls(1) nicht.
Selbst in der csh wo es die $-Schreibweise nicht gibt.
Da wuerde mich nun interessieren, wo dieses Verhalten her kommt. Denn ls(1) verhaelt sich standardmaessig nicht so, also muss es irgendwo konfiguriert sein. Ich kenne das halt als ls-Aliase in der bash_profile. Wo kommt es dann aber her wenn du eine csh startest? Das ist fuer mich alles noch sehr undurchsichtig.
KDE selbst vertrackt es bei drag and drop in die Konsole seit KDE4. Während KDE3 noch mit dem ersten Sonderfall korrekt umgehen konnte machen sie da jetzt fälschlich ein 'ab' draus. Den 2. Fall mit dem Singlequote fangen sie korrekt mit \ ab:
'a'\''b'
Das entspricht `ls --quoting-style=shell'.

Die von Emess gepostete Dolphin-F4-Konsolen-Ausgabe hat zudem die Besonderheit, dass der Dateiname immer in Column 2 beginnt. Das erste Zeichen ist entweder ein Leerzeichen oder das Anfangs-Single-Quote. Von ls(1) scheint mir das alles irgendwie nicht zu kommen ...
Use ed once in a while!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von eggy » 02.04.2020 23:54:11

wanne hat geschrieben: ↑ zum Beitrag ↑
02.04.2020 23:20:42
Das ist nicht die Konsole/Dophin sondern ls, dass das macht. Funktioniert sogar auf der TTY.
Und ist IMHO kaputt, dass es bash-spezifisches quoting nutzt, selbst wenn es nicht in de bash ist.
Tut es nur, wenn Du es nicht entsprechend confst:

Code: Alles auswählen

info '(coreutils) ls invocation'
und dann den Abschnitt "10.1.7 Formatting the file names" lesen, darin ist das detailliert erklärt, Kurzfassung: für jeden Sonderfall gibt nen Schalter :mrgreen:
You can specify the default value of the ‘--quoting-style’ option
with the environment variable ‘QUOTING_STYLE’. If that environment
variable is not set, the default value is ‘shell-escape’ when the
output is a terminal, and ‘literal’ otherwise.

wanne
Moderator
Beiträge: 7499
Registriert: 24.05.2010 12:39:42

Re: [gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von wanne » 03.04.2020 02:17:26

eggy hat geschrieben: ↑ zum Beitrag ↑
02.04.2020 23:54:11
Tut es nur, wenn Du es nicht entsprechend confst:
Nein. Eben nicht Ich habe nichts geconft. Seit neuestem muss man es weg confen und brincht damit diverse Arbeitsabläufe beim Update.
Das kotzt mich mittlerweile massiv an. Angefangen hat damit journalctl und vim nach und nach fängt jetzt jedes Programm an.
Früher mal gab es dafür eine einheitliche Variable PAGER. Das hat dir deinen Output einheitlich interaktiv gemacht und sonst hat sich jedes Programm wie 1970 verhalten. Und das ist auch in 99% der Fälle sinnvoll weil ich Werkzeug drum rum gebaut habe, dass damit umgehen kann. Und das hat sich seit 50 Jahren verbessert. Jetzt meint jedes der 3000 Kommandos das Rad neu erfinden zu müssen und ich darf das 3000 mal einzeln fixen. (Ich habe das über ls | cat gemacht. Die Umgebungsvariable ist sicher der elegantere weg.) – Und mit jedem Update neu.
Sorry, gerne könnt ihr das als Zusatzfunktionalität einbauen. Aber bitte nicht als default. Wenn ihr euer Verhalten grundsätzlich ändert, ändert auch das Kommando. Wenn ls-ng oder so sich so verhält habe ich kein Problem damit.
Vorbildlich finde ich da z.B. iproute2. Neue Syntax, neues Kommando.
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7499
Registriert: 24.05.2010 12:39:42

Re: [gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von wanne » 03.04.2020 02:22:19

Denn ls(1) verhaelt sich standardmaessig nicht so, also muss es irgendwo konfiguriert sein.
Doch. Das aktuelle ls verhält sich per default so. Inklusive der Einrückung. Man kann es über --quoting-style= abschalten aber der default ist das.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8876
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von Meillo » 03.04.2020 10:59:20

Danke fuer die Einblicke in die neumodischen GNU Coreutils.

@wanne: Kann man nicht weiterhin alles mit einer Umgebungsvariable konfigurieren: POSIXLY_CORRECT? ;-)
Use ed once in a while!

Antworten