[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
Emess
Beiträge: 3662
Registriert: 07.11.2006 15:02:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Im schönen Odenwald
Kontaktdaten:

[gelöst] Was bedeuten Dateinammen im Hochkomma?

Beitrag von Emess » 01.04.2020 19:02:17

Normal nutze ich Dolphin als Dateimanager.
Wenn ich dann über F4 die Konsole öffne werden einzelne Dateien im Hochkomma dargestellt.
Was bedeutet das?

Code: Alles auswählen

'Formel fr Stromverbrauch.odt'
'Frau Brandt.odt'
 gaby.jpg
 gerda_gewicht.ods
 gewerbe.odt
 Gewicht.ods
'Handbuch Vereinsmeister.pdf'
 Hanwerkskammer.odt
'zoom_amd64 .deb'

Das ist mir aufgefallen als ich zoom mittels Debianaptitude installieren wollte. Ohne Hochkomma werden die Dateien nicht gefunden.
Also was hat das Hochkomma zu bedeuten?
Zuletzt geändert von Emess am 01.04.2020 21:47:37, insgesamt 1-mal geändert.
Debian Testing (bleibt es auch)
Debian Bullseye KDE Plasma 5x Kernel 5.10.0-12-amd64
Notebook HP ZBook 17 G2

http://www.emess62.de

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

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Meillo » 01.04.2020 19:04:46

Damit wird der Whitespace gequotet, damit der Dateiname trotz Whitespace als ein Wort wahrgenommen wird.
Use ed once in a while!

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

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von eggy » 01.04.2020 19:18:02

Die Dateinamen enthalten Leerzeichen.

Code: Alles auswählen

cd /tmp/
echo 1 > eins
echo 2 > zwei
echo 3 > drei
echo 4 > "eins zwei drei"
cat eins zwei drei
cat 'eins zwei drei'
Das erste cat gibt

Code: Alles auswählen

 
 1
 2
 3
 
das zweite cat aus.

Für die Shell ist es relevant, ob in Dateinamen Leerzeichen drin sind oder nicht, Leerzeichen von denen die Shell nicht weiß, ob es Leerzeichen im Sinne von Buchstaben oder Leerzeichen im Sinne von Parametertrennern sind. Das von Meillo angesprochene Quoting findest Du oft auch als Schrägstrich vor dem Leerzeichen. Die Anzeige hier ist Menschenfreundlich gemeint, copy und paste und Weiterverarbeiten von Output.

Benutzeravatar
Emess
Beiträge: 3662
Registriert: 07.11.2006 15:02:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Im schönen Odenwald
Kontaktdaten:

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Emess » 01.04.2020 19:59:35

Meillo hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 19:04:46
Damit wird der Whitespace gequotet, damit der Dateiname trotz Whitespace als ein Wort wahrgenommen wird.
Also Dateinamen mit Leerzeichen. Versteh ich das richtig?
Debian Testing (bleibt es auch)
Debian Bullseye KDE Plasma 5x Kernel 5.10.0-12-amd64
Notebook HP ZBook 17 G2

http://www.emess62.de

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Lord_Carlos » 01.04.2020 20:01:19

Emess hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 19:59:35
Meillo hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 19:04:46
Damit wird der Whitespace gequotet, damit der Dateiname trotz Whitespace als ein Wort wahrgenommen wird.
Also Dateinamen mit Leerzeichen. Versteh ich das richtig?
Ja, kannst auch zoom_amd64\ .deb schreiben wenn dir das Lieber ist.

Kann TAB das bei dir nicht vervollstaendigen? Also dpkg -i zoom<TAB> oder aehnliches?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

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

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Meillo » 01.04.2020 21:09:13

Emess hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 19:59:35
Meillo hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 19:04:46
Damit wird der Whitespace gequotet, damit der Dateiname trotz Whitespace als ein Wort wahrgenommen wird.
Also Dateinamen mit Leerzeichen. Versteh ich das richtig?
... plus alle anderen sonst noch ``problematischen'' Zeichen, wie Dollarzeichen, Backticks, Double-Quotes, Backslashes, ... (Whitespace sind sowohl Leerzeichen als auch Tabs.) Das ist keine vollstaendige Liste, enthaelt aber die vermutlich haeufigsten Faelle.

Frage nur weiter wenn dir was unklar ist. Wir koennen gerne noch besser versuchen es dir in einer Sprache zu vermitteln mit der du etwas anfangen kannst.




Btw: Interessant wird der Fall, wenn der Dateiname ein Single-Quote enthaelt, weil man das nicht mit Single-Quotes quoten kann. Was also zeigt die Anwendung bei einer Datei an, die du so anlegst:

Code: Alles auswählen

>"a'b"
(Das legt in der Shell eine Datei an, deren Name aus drei Zeichen besteht: Buchstabe a, Single-Quote (= Apostroph), Buchstabe b.)


@eggy: Nettes Beispiel. ;-)
Use ed once in a while!

fischig
Beiträge: 3600
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von fischig » 01.04.2020 21:14:16

Du kannst ja mal versuchen

Code: Alles auswählen

soffice Formel fr Stromverbrauch.odt
aus einem Terminal heraus zu starten. Das Ergebnis dürfte das Verständnis von Meillos 1. Beitrag erweitern. :wink:

wobei: kommt mir seltsam vor. Um auszuschließen, dass dir da der Dolphin in die Suppe spuckt, schaute ich mir da nochmal den Dateinamen mit einem schlichten an.

Und das tut man ja auch nicht: Leerzeichen und Nicht-Standard-Ascii-Zeichen im Dateinamen verwenden! :mrgreen:

Benutzeravatar
Emess
Beiträge: 3662
Registriert: 07.11.2006 15:02:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Im schönen Odenwald
Kontaktdaten:

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Emess » 01.04.2020 21:47:02

Ich denke, ich habe es kapiert.
Danke an alle.
Debian Testing (bleibt es auch)
Debian Bullseye KDE Plasma 5x Kernel 5.10.0-12-amd64
Notebook HP ZBook 17 G2

http://www.emess62.de

fischig
Beiträge: 3600
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

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

Beitrag von fischig » 01.04.2020 22:34:37

Deine Beispiele lassen mir keine Ruhe! Also bei 'zoom_amd64 .deb' vermag ich mir vorzustellen, dass da "too many fingers on keyboard error" zugeschlagen hat, aber ich kann mir nicht vorstellen, dass jemand, der den Dateinamen Formel[leer]für[leer]Stromverbrauch[dot]odt erzeugen möchte, sich zufrieden gibt mit Formel[leer]fr[leer]Stromverbrauch[dot]odt. Wo ist das deutsche ü geblieben? LO hat's nach meinem Testen nicht verschluckt. :wink:

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

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

Beitrag von Meillo » 01.04.2020 23:01:37

fischic hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 22:34:37
aber ich kann mir nicht vorstellen, dass jemand, der den Dateinamen Formel[leer]für[leer]Stromverbrauch[dot]odt erzeugen möchte, sich zufrieden gibt mit Formel[leer]fr[leer]Stromverbrauch[dot]odt. Wo ist das deutsche ü geblieben? LO hat's nach meinem Testen nicht verschluckt. :wink:
Das ist bestimmt ein Encoding-Problem ... habe ich auch in einer ganzen Reihe von Dateien ... eben in denjenigen, die schon etwas aelter sind, von Vorgaengersystemen uebernommen worden sind. Manchmal benenne ich sie um, oft bleiben sie aus Faulheit so wie sie sind, weil die Tab-Completion und Shell-Globbing mit ihnen zurecht kommen. (Heutzutage schreibe ich -- wie man sieht -- fast nur noch mit den US-ASCII-Zeichen, wodurch solche Probleme gar nicht mehr entstehen.) Ich will damit aber nicht Emess' Antwort vorgreifen.


Was *mich* mehr interessieren wuerde waere eben genau der Fall mit dem Single-Quote im Dateinamen, was die F4-Dolphin-Konsole dann anzeigt. ;-)

Da das urspruengliche Problem nun ja geloest ist: Bahn frei fuer alles was uns sonst noch zum Thema einfaellt! :-D
Use ed once in a while!

debianoli
Beiträge: 4068
Registriert: 07.11.2007 13:58:49
Wohnort: Augschburg

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

Beitrag von debianoli » 02.04.2020 08:14:26

Kleiner Tipp am Rande: Debiandetox beseitigt alle störenden Zeichen aus Datei- und Verzeichnis-Namen.

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

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von wanne » 02.04.2020 10:32:37

Meillo hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 21:09:13
Btw: Interessant wird der Fall, wenn der Dateiname ein Single-Quote enthaelt, weil man das nicht mit Single-Quotes quoten kann. Was also zeigt die Anwendung bei einer Datei an, die du so anlegst:
Nein. Der interesanteste Fall ist, wenn du eine Datei mit NULL (Also z.B. der Name den echo a\0b ausgibt.) anlegst. Das kann man gar nicht quoten ;-). Zum Glück gibt es kein mir bekanntes Dateisystem, dass das kann. (Vor allem wäre auch der Linux Kernel zu blöd die wirklich anzulegen. Niemand hindert einen daran, das mit nem anderen Betriebssystem zu machen. :twisted: ) Auch schön sind welche die mit - anfangen. So "-rf" oder so macht sich ganz lustig
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

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

Beitrag von MSfree » 02.04.2020 11:18:04

Auch ganz lustig:

Code: Alles auswählen

touch "*"
ls -l
aber bitte nicht mit rm * versuchen, zu löschen! :mrgreen:

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

Re: Was bedeuten Dateinammen im Hochkomma?

Beitrag von Meillo » 02.04.2020 21:39:32

wanne hat geschrieben: ↑ zum Beitrag ↑
02.04.2020 10:32:37
Meillo hat geschrieben: ↑ zum Beitrag ↑
01.04.2020 21:09:13
Btw: Interessant wird der Fall, wenn der Dateiname ein Single-Quote enthaelt, weil man das nicht mit Single-Quotes quoten kann. Was also zeigt die Anwendung bei einer Datei an, die du so anlegst:
Nein. Der interesanteste Fall ist, wenn du eine Datei mit NULL (Also z.B. der Name den echo a\0b ausgibt.) anlegst. Das kann man gar nicht quoten ;-). Zum Glück gibt es kein mir bekanntes Dateisystem, dass das kann. (Vor allem wäre auch der Linux Kernel zu blöd die wirklich anzulegen. Niemand hindert einen daran, das mit nem anderen Betriebssystem zu machen. :twisted: )
Ext-Dateisysteme verbieten Dateinamen, die Slash oder Null-Bytes enthalten. Vermutlich wird es schwer werden ueberhaupt ein Dateisystem zu finden, das Null-Bytes in Dateinamen erlaubt. NTFS erlaubt sie auch nicht. Falls man dann so ein Dateisystem gefunden hat und auch noch ein Betriebssystem, das in der Lage ist Dateinamen mit Null-Bytes zu schreiben, dann braucht man auch noch eine Mount-Unterstuetzung fuer Linux ... und spaetestens an der Stelle wird das Null-Byte durch etwas anderes ersetzt werden (muessen), weil sonst Unix gar nicht Dateinamen, die Null-Bytes enthalten umgehen kann. Der Fall ist ferne Theorie.

Der Fall mit Single-Quotes im Dateinamen ist darum interessant, weil nicht klar ist wie die Dolphin-F4-Terminal-Anzeige den Dateinamen dann quotet. Verwendet die dann Double-Quotes statt Single-Quote, muss aber folglich dann auch andere Sonderzeichen quoten. Oder verwendet sie Backslashes, muss dann aber ebenfalls andere Sonderzeichen quoten. Oder ignoriert sie den Fall und erzeugt kaputtes Quoting. Alles moeglichkeiten. Als Entwickler waere fuer mich nicht klar welche Option davon ich waehlen wuerde. Sie erfordern einen Batzen Code fuer einen seltenen Randfall. Darum finde ich es interessant zu erfahren, *wie* die Dolphin-Entwickler sich entschieden haben.

Vielleicht kann das ja mal jemand, der Dolphin installiert hat, mal ausprobieren und meine Neugier stillen. ;-)
Use ed once in a while!

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

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

Beitrag von wanne » 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.
Und ist IMHO kaputt, dass es bash-spezifisches quoting nutzt, selbst wenn es nicht in de bash ist.
Hier die gewünschte Ausgabe:

Code: Alles auswählen

csh
ls
'a'$'\a''b'   "a'b"
Wie du siehst sind sie wohl extra vorsichtig und nutzen für alles, was man nicht mit doublequotes quoten kann alles was die bash so hergibt. Selbst in der csh wo es die $-Schreibweise nicht gibt. Aber für singlequotes nutzen sie schlicht doublequotes.
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'
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
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: 7448
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: 7448
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: 8782
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