Ich möchte, dass ein Ordner mit dem Namen DELETED
an erster Stelle in meiner Ausgabe von steht ls
.
Gibt es ein Symbol, das ich an der Vorderseite hinzufügen kann, um dies zu verursachen? Ich habe versucht , ^
und , -
und weder funktioniert.
Ich möchte, dass ein Ordner mit dem Namen DELETED
an erster Stelle in meiner Ausgabe von steht ls
.
Gibt es ein Symbol, das ich an der Vorderseite hinzufügen kann, um dies zu verursachen? Ich habe versucht , ^
und , -
und weder funktioniert.
Antworten:
^
folgt in ASCII-Reihenfolge den Großbuchstaben. -
steht vor allen Buchstaben und Ziffern, folgt jedoch mehreren anderen Satzzeichen.
Die ASCII-druckbaren Zeichen sind in der Reihenfolge:
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
Dies hilft Ihnen jedoch nicht unbedingt, da die Reihenfolge, in der ls
Listen aufgelistet werden, möglicherweise vom aktuellen Gebietsschema beeinflusst wird.
Sie könnten den Dateinamen mit einem Leerzeichen oder !
Zeichen beginnen, aber das wird es schwierig machen, auf die Datei zu verweisen, ohne sie zu zitieren - und auch hier könnten die Gebietsschemaeinstellungen stören. Die meisten anderen ASCII-Zeichen vor den Dezimalstellen haben ähnliche Probleme.
Angenommen, Sie haben keine anderen Dateien mit ungeraden Zeichen im Namen, beginnen Sie den Dateinamen möglicherweise mit einer Zeichenfolge von 0
s:
000_DELETED
(Ich habe eine ähnliche Technik verwendet, um E-Mail-Ordner in Thunderbird und Outlook zu benennen.)
Auf GNU-Systemen gibt es zumindest in den meisten anderen Gebietsschemas als C / POSIX einige Zeichen, die beim Sortieren ignoriert werden. Das ist zum Beispiel der Fall von _
, .
, Raum oder 0x1.
Deshalb .a
, .c
, __b
, _d
Art , wie .a
, __b
, .c
, _d
zum Beispiel.
Bei Zeichenfolgen, die nur aus diesen ignorierten Zeichen bestehen, wird die Sortierreihenfolge im Gebietsschema definiert. ASCII SPC steht im Allgemeinen an erster Stelle. So ein einzelne Leerzeichen würde die Datei sein , dass erste Art (auch vor 0x1 (die ersten in C locale), .
und ..
), dann zwei Räume ... etc., jedoch <SPC>DELETED
würde Art nach DELETED
, also , während eine Datei mit dem Namen ___
sortieren würde vor Bei den meisten anderen Dateien wird das ___
Sortieren vor einer anderen Zeichenfolge nicht früher durchgeführt.
Unter den nicht ignorierten Zeichen ist ASCII 0 im Allgemeinen das Zeichen, das zuerst in Nicht-C-Gebietsschemas sortiert wird.
Eine Datei mit dem Namen 0 würde also vor jeder anderen Datei sortieren, die nicht ignorierte Zeichen enthält. Wenn Sie 0
einer Datei voranstellen , die nicht ignorierte Zeichen enthält, wird sie in Nicht-C-Gebietsschemas früher sortiert.
Eine aufgerufene Datei $'\01\01\01_000_DELETED'
würde also sehr früh im C-Gebietsschema sortieren (weil 0x1 das erste Zeichen ist, das zuerst sortiert wird) und auch in anderen Gebietsschemas (weil alle 0x1 und _ ignoriert werden, aber dann sind die 0
s die nicht ignorierten Zeichen diese Art zuerst).
In Nicht-C-Gebietsschemas wird immer noch nach .
oder sortiert ..
.
Eine andere Möglichkeit könnte sein, DELETED
nur mit ignorierten Zeichen wie zu schreiben " ₫€£€₮€₫"
. Diese Währungssymbole werden beim Sortieren ignoriert. SPC wird auch ziemlich früh im Gebietsschema C sortiert, daher sollte es .
sowohl im Gebietsschema C als auch außerhalb des Gebietsschemas C sortiert werden .
$ touch $' \u20ab\u20ac\u00a3\u20ac\u20ae\u20ac\u20ab' $'\01' ' ' 0normal-file $'\01\01\01_000_DELETED'
$ ls -1a
₫€£€₮€₫
./
../
?
???_000_DELETED
0normal-file
$ LC_ALL=C ls -1a
?
???_000_DELETED
????????????????????
./
../
0normal-file
$ LC_COLLATE=C ls -1a
?
???_000_DELETED
₫€£€₮€₫
./
../
0normal-file
0x1
? Ist es das ASCII SOH
?
SOH
(Zeichencode 1). Das Zeichen mit dem ASCII-Code 0 ( NUL
) ist in Unix-Dateinamen nicht zulässig. 1 ist der nächste Zeichencode in numerischer Reihenfolge danach. Es hat in den meisten modernen Computersystemen keine andere besondere Bedeutung.
1
Byte- oder U+0001
Unicode-Zeichen handelt. Dass es sich um den Star of Header- Charakter handelt, hat hier wenig Bedeutung.
ls DELETED
?