Dies hilft Ihnen jedoch nicht unbedingt, da die Reihenfolge, in der lsListen 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 0s:
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.
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>DELETEDwürde Art nachDELETED , 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 0einer 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 0s die nicht ignorierten Zeichen diese Art zuerst).
In Nicht-C-Gebietsschemas wird immer noch nach. oder sortiert ...
Eine andere Möglichkeit könnte sein, DELETEDnur 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 .
@terdon: Ja, es ist 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.
Ilmari Karonen
@IlmariKaronen so ist es SOHwie gesagt? Ich bin nicht mit Hex vertraut.
Terdon
@terdon, was für das Gebietsschema C wichtig ist, ist, dass es der erste Codepunkt ist, der in einem Dateinamen zulässig ist, dass es sich um das 1Byte- oder U+0001Unicode-Zeichen handelt. Dass es sich um den Star of Header- Charakter handelt, hat hier wenig Bedeutung.
ls DELETED
?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:
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:(Ich habe eine ähnliche Technik verwendet, um E-Mail-Ordner in Thunderbird und Outlook zu benennen.)
quelle
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 nachDELETED
, 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 die0
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 .quelle
0x1
? Ist es das ASCIISOH
?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.SOH
wie gesagt? Ich bin nicht mit Hex vertraut.1
Byte- oderU+0001
Unicode-Zeichen handelt. Dass es sich um den Star of Header- Charakter handelt, hat hier wenig Bedeutung.