Listet versteckte Dateien auf, ohne - ( * | zu verwenden.

Listet versteckte Dateien auf, ohne - ( * | zu verwenden.

Ist es möglich, versteckte Dateien aufzulisten, ohne die oben genannten Zeichen zu verwenden? Das bedeutet, dass keine Optionen oder das Platzhalterzeichen * sowie einige andere Zeichen verwendet werden (z. B. ist diesnichterlaubt ls -a, ls -d, .!(|.), echo .*usw.).

Antwort1

find .listet alle Dateien auf, auch die versteckten.

Schlussfolgerung: Jemand denkt, es sei eine gute Idee,Unterrichten Sie über Befehlsinjektiondurch die Sperrung einzelner Charaktere undmöglicherweise sogar Befehlein Ihrem Skript. Das ist aktiv schädlich für Ihr Lernen über die Shell, weil Sie am Ende mit Hacks wieEscape-Zeichenoderbasierend auf Ubuntu-spezifischer Standardkonfiguration, die beide nicht in der Lage sein werden,Umgang mit speziellen Dateinamen.

Es klingt tatsächlich so, als ob derjenige, der sich das ausgedacht hat, es evalaus irgendeinem Grund verwenden wollte (was immer* eine schreckliche Idee ist), anstatt einfach den übermittelten Code oder das Skript direkt auszuführen.

Der absolut einfachste Weg, versteckte Dateien zu durchlaufen, ist

for file in .*
do
    my_command "$file"
done

* Oder so verdammt nah an immer, dass Sie besser die ganzeBash-Wiki-Artikel darüberbevor Sie überhaupt darüber nachdenken, es zu verwenden.

Antwort2

Ubuntu hat einen Standardalias für ls -la. Sie können einfach verwenden

la

Antwort3

echo `printf '.\x2A'`

Unicode-Tabelle für den Sieg.

Antwort4

echo .<TAB><TAB>

Dies ist bereits in Bash integriert. Sie müssen nicht einmal einen Befehl ausführen.

echo .<Meta-*>

Wenn Sie unbedingt einen Befehl haben müssen (aber trotzdem keine externen Prozesse benötigen).

verwandte Informationen