
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 eval
aus 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).