[gelöst] Tabulatoren in Dateinamen nutzen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Quirrlila
Beiträge: 74
Registriert: 12.08.2017 21:59:59
Lizenz eigener Beiträge: GNU General Public License

[gelöst] Tabulatoren in Dateinamen nutzen

Beitrag von Quirrlila » 17.08.2017 18:30:59

Diese Methode bringt nicht das gewünscht Ergebnis:
https://www.heise.de/ct/hotline/Tab-Zei ... 71987.html

Beispieldatei

Code: Alles auswählen

NAME\TABULATOR\ \|\ THEMA.txt
Bzw.

Code: Alles auswählen

NAME\TABULATOR\|\ THEMA.txt
Sieht mit der verlinkten Methode so:

Code: Alles auswählen

NAME? | THEMA
bzw. so:

Code: Alles auswählen

NAME?| THEMA
aus.
Soll aber so aussehen:

Code: Alles auswählen

NAME      | THEMA
Zuletzt geändert von Quirrlila am 18.08.2017 16:08:40, insgesamt 1-mal geändert.

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 17.08.2017 19:29:45

Da ist schon ein Tab drin, ls(1) zeigt den Tab nur als Fragezeichen an wenn stdout ein Terminal ist (weil dann z.B. Copy'n'Paste funktioniert).

Schau dir mal stat(1) auf die Datei an oder pipe die Ausgabe von ls(1) durch od(1), dann siehst du, dass alles richtig ist.
Use ed once in a while!

Quirrlila
Beiträge: 74
Registriert: 12.08.2017 21:59:59
Lizenz eigener Beiträge: GNU General Public License

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Quirrlila » 17.08.2017 21:03:02

Ah ich verstehe °.°, außer diese Hexadezimalzahlengeschichte, aber halt ;) (kannte ich noch nicht den Befehl, thx).
Kann ich denn irgendwie machen, das mir der Name auch im Terminal so angeziegt wird, denn das ist eigentlich der Sinn des ganzen: eine (für mich) bessere Übersicht, wenn ich

Code: Alles auswählen

ls -1
bzw.

Code: Alles auswählen

ls -l
benutze?
Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
[...](weil dann z.B. Copy'n'Paste funktioniert).
Copy'n'Paste mit strg+c / strg+v ?
Hab' ich so noch nie benutzt im Terminal und wusste auch garnicht dass das funktioniert dort, bei mir geht das nicht...
Deswegen markiere ich wenn dann immer und füge mit Maus 3 ein.
Suche natürlich immer Wege auf die Maus zu verzichten. =)

owl102

Re: Tabulatoren in Dateinamen nutzen

Beitrag von owl102 » 17.08.2017 21:52:23

Quirrlila hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 21:03:02
Copy'n'Paste mit strg+c / strg+v ?
Hab' ich so noch nie benutzt im Terminal und wusste auch garnicht dass das funktioniert dort, bei mir geht das nicht...
Im Terminal: Strg+C bzw. Strg+V (mit großem C/V, also Strg+Shift+c bzw. Strg+Shift+v)

rodney
Beiträge: 332
Registriert: 09.12.2016 04:15:59

Re: Tabulatoren in Dateinamen nutzen

Beitrag von rodney » 17.08.2017 21:54:20

Warum jagst du nicht die Ausgabe von ls -l durch ein Tool welches fuer solche Sachen geschaffen wurde? Dateinamen mit Steuerzeichen verhunzen um eine genehme Ausgabe von ls -l zu erhalten finde ich etwas ueberzogen, zumal dann Probleme (nicht nur optischer Natur) eigentlich vorprogrammiert sind.

Tools die sich auf den ersten Blick fuer umformatieren der Ausgabe eignen waeren z.B. columns und awk

P.S. Ich will dich damit keineswegs von deinem Vorhaben mit den Tabs im Dateinamen abhalten :wink:

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 17.08.2017 22:15:45

Quirrlila hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 21:03:02
Kann ich denn irgendwie machen, das mir der Name auch im Terminal so angeziegt wird, denn das ist eigentlich der Sinn des ganzen: eine (für mich) bessere Übersicht, wenn ich

Code: Alles auswählen

ls -1
bzw.

Code: Alles auswählen

ls -l
benutze?
Das geht indem du dafuer sorgst, dass der stdout von ls(1) kein Terminal mehr ist ... und hier haben wir dann einen Useful Use of Cat. ;-)

Code: Alles auswählen

B-) touch a\        b

B-) ls a?b
a?b

B-) ls a?b |cat
a       b

Um die Anzeige zu formatieren solltest du aber keine Tabs in Dateinamen schreiben. Wenn das sinnvoll waere, dann wuerden's wohl auch andere machen ... hab aber noch nie von einem gehoert. Mach es stattdessen wie rodney vorschlaegt, mit Spaces im Dateinamen und `column -t'.


Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
[...](weil dann z.B. Copy'n'Paste funktioniert).
Copy'n'Paste mit strg+c / strg+v ?
Hab' ich so noch nie benutzt im Terminal und wusste auch garnicht dass das funktioniert dort, bei mir geht das nicht...
Deswegen markiere ich wenn dann immer und füge mit Maus 3 ein.
Suche natürlich immer Wege auf die Maus zu verzichten. =)
Warum sollte Markieren und mit Maus3 Einfuegen kein Copy'n'Paste sein? Bloss weil's anders als bei Windows ist? Genau dieses Copy'n'Paste, also das von X-Window, meinte ich.

Btw: Ich markiere auch mit der Maus, fuege dann aber mit Shift+Ins ein. (Dieses Einfuegen funktioniert uebrigens auch bei Windows.) Ansonsten nutze ich manchmal das Markieren von tmux mit Space im Scrollmodus und sein Einfuegen mit PREFIX+[, IIRC.


Edit: Ich sollte wohl noch erklaeren, was ich mit dem Copy'n'Paste meine: Wenn ls(1) dir ``a b'' ausgibt, dann kannst du diesen Dateinamen nicht kopieren und als Argument fuer einen Befehl einfuegen, weil du dann 1-8 Spaces statt dem Tab haettest. Das Fragezeichen ist aber die Wildcard fuer ein beliebiges Zeichen und das matched eben auf den Tab, weshalb du die Variante ``a?b'' als Argument angeben kannst und damit die korrekte Datei geglobbt wird (... allerdings alle anderen etwaig vorhandenen Dateien, die darauf matchen auch, also vorsichtig damit sein).
Use ed once in a while!

owl102

Re: Tabulatoren in Dateinamen nutzen

Beitrag von owl102 » 17.08.2017 22:18:28

Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
oder pipe die Ausgabe von ls(1) durch od(1), dann siehst du, dass alles richtig ist.
Ich würde für solche Dinge ls ganz vermeiden und mich lieber auf das Globbing der Bash verlassen, z.B.:

Code: Alles auswählen

files=(*.txt) od -a <<< "${files[@]}"
oder

Code: Alles auswählen

files=(*.txt) hexdump -C <<< "${files[@]}"
(Irgendein Bash-Spezi kann das bestimmt noch verkürzen...)

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 17.08.2017 22:24:08

owl102 hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 22:18:28
Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
oder pipe die Ausgabe von ls(1) durch od(1), dann siehst du, dass alles richtig ist.
Ich würde für solche Dinge ls ganz vermeiden und mich lieber auf das Globbing der Bash verlassen, z.B.:

Code: Alles auswählen

files=(*.txt) od -a <<< "${files[@]}"
oder

Code: Alles auswählen

files=(*) hexdump -C <<< "${files[@]}"
(Irgendein Bash-Spezi kann das bestimmt noch verkürzen...)
Wenn du ls(1) vermeiden willst, dann nimm halt echo(1), dann hast du auch nur das Globbing der Shell involviert:

Code: Alles auswählen

B-) echo a?b | od -c
0000000   a  \t   b  \n
0000004
Oder wenn du's noch sicherer haben willst, dann mit printf(1):

Code: Alles auswählen

B-) printf %s a?b | od -c
0000000   a  \t   b
0000003
Damit kann wirklich nichts mehr in die Quere kommen. (Und das ist portabel. ... fuer die, die das interessiert.)
Use ed once in a while!

owl102

Re: Tabulatoren in Dateinamen nutzen

Beitrag von owl102 » 17.08.2017 23:02:32

Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 22:24:08
nimm halt echo(1), dann hast du auch nur das Globbing der Shell involviert:
Stimmt, da habe ich (mal wieder) um eine Ecke zuviel gedacht.

Code: Alles auswählen

printf %s a?b | od -c
Ich hab' noch was kürzeres, um die Tabs sichtbar zu machen:

Code: Alles auswählen

printf "%q\n" a?b
(Und das ist portabel. ... fuer die, die das interessiert.)
Meines auch. Zumindest solange man bash als Shell verwendet :mrgreen:

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 17.08.2017 23:18:36

owl102 hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 23:02:32
(Und das ist portabel. ... fuer die, die das interessiert.)
Meines auch. Zumindest solange man bash als Shell verwendet :mrgreen:
;-)
Use ed once in a while!

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 18.08.2017 11:20:52

Ich wollte dieses Fragezeichen-Feature doch auch noch im Code sehen, also habe ich in das ls(1) der GNU Coreutils reingeschaut. Dort ist die Funktion an dieser Stelle beschrieben:
http://git.savannah.gnu.org/gitweb/?p=c ... =HEAD#l690
Und hier ist die Weiche, die prueft, ob die Ausgabe in ein Terminal geht oder nicht:
http://git.savannah.gnu.org/gitweb/?p=c ... HEAD#l1675


Im Heirloom ls(1) (das gewohntermassen schlanker und im Quellcode uebersichtlicher ist) findet man die Stellen ebenfalls:
http://heirloom.cvs.sourceforge.net/vie ... iew=markup
- Beschreibung in Zeile 925
- Die Weiche ist in Zeile 1002
- Die Funktion nonprint() in Zeile 893 gibt ein nicht-druckbares Zeichen aus, entweder als Fragezeichen oder in einer Escape-Darstellung (falls `-b' verwendet wurde)

(Mit `ls -b' kann man den Tab also als `\t' ausgeben lassen. Das ist nicht Teil von POSIX, wird aber von vielen ls-Implementierungen unterstuetzt.)


Schaut ruhig mal in den Code rein; das lohnt sich fast immer!
Use ed once in a while!

Quirrlila
Beiträge: 74
Registriert: 12.08.2017 21:59:59
Lizenz eigener Beiträge: GNU General Public License

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Quirrlila » 18.08.2017 16:08:15

Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 22:15:45
Das geht indem du dafuer sorgst, dass der stdout von ls(1) kein Terminal mehr ist ... und hier haben wir dann einen Useful Use of Cat. ;-)

Code: Alles auswählen

B-) touch a\        b

B-) ls a?b
a?b

B-) ls a?b |cat
a       b
Toll danke das funktioniert sehr gut.
Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 22:15:45
Um die Anzeige zu formatieren solltest du aber keine Tabs in Dateinamen schreiben. Wenn das sinnvoll waere, dann wuerden's wohl auch andere machen ... hab aber noch nie von einem gehoert.
Ja ich merke auch, wie mv Probleme bei manchen Dateien macht, auch wenn ich genuaso auskommentiere wie bei anderen ähnlichen Dateinamen... total weird...
Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
Warum sollte Markieren und mit Maus3 Einfuegen kein Copy'n'Paste sein? Bloss weil's anders als bei Windows ist? Genau dieses Copy'n'Paste, also das von X-Window, meinte ich.
Was ist dieses Windows? :wink:
Nee so war das auch nicht gemeint, deshalb habe ich ja explizit noch geschrieben "das mit Strg+x / Strg+v", aber egal :wink:
Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
Ansonsten nutze ich manchmal das Markieren von tmux mit Space im Scrollmodus und sein Einfuegen mit PREFIX+[, IIRC.
Markieren und Einfügen nur mit der Tastatur in tmux verstehe ich das richtig?
Das muss ich testen, wäre super! :D
Mit dem PREFIX meinst du Strg+b?
Was bedeutet das

Code: Alles auswählen

PREFIX+[, IIRC
?

Das mit den Tabs usw. war wohl eine blöde Idee... :roll: ich lasse das mal lieber...

Dennoch vielen Dank an alle die geantwortet haben :)

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

Re: Tabulatoren in Dateinamen nutzen

Beitrag von Meillo » 18.08.2017 16:37:38

Quirrlila hat geschrieben: ↑ zum Beitrag ↑
18.08.2017 16:08:15
Ja ich merke auch, wie mv Probleme bei manchen Dateien macht, auch wenn ich genuaso auskommentiere wie bei anderen ähnlichen Dateinamen... total weird...
Kann mir nicht vorstellen, dass mv(1) Probleme damit hat. Das Problem liegt woanders.

Meillo hat geschrieben: ↑ zum Beitrag ↑
17.08.2017 19:29:45
Ansonsten nutze ich manchmal das Markieren von tmux mit Space im Scrollmodus und sein Einfuegen mit PREFIX+[, IIRC.
Markieren und Einfügen nur mit der Tastatur in tmux verstehe ich das richtig?
Das muss ich testen, wäre super! :D
Mit dem PREFIX meinst du Strg+b?
Was bedeutet das

Code: Alles auswählen

PREFIX+[, IIRC
?
Ja, genau, ganz mit der Tastatur. Der Default-Praefix ist ^B, aber ich habe das auf ^A umgemappt, wie von screen(1) gewohnt (und einfacher zu tippen).

Wenn du in tmux bist, dann:

1) Prefix + Esc
2) Mit hjkl oder den Pfeiltasten an die relevante Stelle navigieren
3) Leertaste druecken um anfangen zu markieren
4) Mit hjkl/Pfeiltasten den gewuenschten Bereich markieren
5) Enter druecken um die Markierung zuspeichern und den Scrollmodus zu verlassen
6) Mit Prefix + ] einfuegen (also Strg + b und anschliessend AltGr + 9 (auf der deutschen Tastatur)) ... ich kann mir nie merken, ob es `[' oder `]' ist. ``IIRC'' steht fuer ``if I recall correctly'', also ``wenn ich mich recht erinnere''.
Use ed once in a while!

Antworten