Mögliches Szenario:
Es ist А
aus kyrillischer Schrift und A
aus Latein . Sie können gleich aussehen, sind aber anders codiert.
Wenn das zweite "A" in dem problematischen Dateinamen nicht lateinisch ist, haben Sie möglicherweise wie
ls dis/AS
Dann drückst tabdu und deine Shell hat den Namen mit Kyrillisch automatisch abgeschlossen, du hast den Unterschied nicht einmal gewusst. Sie haben bemerkt, dass dies ls
funktioniert hat.
Als Nächstes drücken Sie ↑, haben eine Inline-Bearbeitung vorgenommen und wurden ls
zu einem find
Pfad, der den Pfad nicht berührt (er enthält immer noch nicht-lateinische Zeichen). Du hast bemerkt, dass es find
funktioniert hat.
Aber wenn Sie tippen grep
, tippen Sie ASA.md
von Hand. Es ist alles Latein, da ist kein Kyrillisch. Befehle funktionieren nicht wie erwartet.
Ich sage nicht, dass es A
sicher ist. Ich sage, dass ein oder mehrere Charaktere möglicherweise nicht das sind, was Sie denken.
Um dieses Szenario zu bestätigen oder zu verwerfen, analysiere ich die Hex-Ausgabe des find
Befehls , der funktioniert :
find dis/ASА.md | xxd
und vergleichen Sie diesen Befehl mit der Hand :
echo dis/ASA.md | xxd
Hinweis: In meinem Beitrag wird Kyrillisch А
an einigen Stellen verwendet. Kopieren Sie ihn also nicht und fügen Sie ihn nicht gedankenlos ein.
Auf der anderen Seite scheint Ihr buchstäblicher Code, der in den Fragenkörper eingefügt wurde, dis/ASA.md
eine zusammenhängende, ausschließlich lateinische Form zu verwenden. Wenn es vom Terminal kopiert wurde (nicht unabhängig eingegeben), trifft meine Hypothese wahrscheinlich nicht auf Ihren speziellen Fall zu.