Es gibt diesen Befehl:
maldet -b --scan-all /home?/?/public_?
Mir war nicht klar, warum wir die Fragezeichen brauchen, insbesondere das einzelne zwischen den beiden Pfaden. Also tat ich es man maldet
und las:
-a, --scan-all PFAD
Alle Dateien im Pfad scannen (Standard: /home, Platzhalter: ?), zB: maldet -a /home/?/public_html
Meine Frage:
Warum brauchen wir ein zusätzliches ?
zwischen /home?
und public_?
?
Eine alternative Version dieser Frage könnte sein: „Wenn die Kombination von /home?
und public_?
bedeutet: „Finde alle Instanzen von public_
unter “ /home
, warum brauchen wir dann das zusätzliche Element ?
zwischen ihnen?“.
Antwort1
Ich konnte die Quelle für den scan
Befehl, den Maldet letztendlich aufruft, nicht ausfindig machen, aber Maldet übergibt den angegebenen Pfad wortwörtlich an diesen scan
Befehl. Daher gehe ich davon aus, dass etwas Weitergehendes diese ?
selbst als Platzhalter verarbeitet.
Das mutmaßliche Ziel der Platzhalter in diesem Beispiel besteht darin, Pfade wie die folgenden zu erfassen:
/home/user1/public_html
/home/user2/public_ftp
aber nicht:
/home/public_html
... mit anderen Worten, um zu erfordern, dass ein Pfadelement zwischen /home
und /public_html
oder existiert /public_anything
.
Vergessen Sie jedoch nicht, diese Platzhalterpfade im Befehl mit Escape-Zeichen oder Anführungszeichen zu versehen. maldet
Falls Sie Pfade der Form: haben , zum Beispiel:/home/(single-character)/public_(single-character)
/home/a/public_a
dann wird Ihre Shell zu diesem (oder einem dieser übereinstimmenden) Pfade expandieren, anstatt den ?
Platzhaltercode an den Maldet-Befehl weiterzugeben. Sie könnten fälschlicherweise „Glück“ haben, wenn Sie diese Pfade ohne Anführungszeichen verwenden, solange keine einstelligen Pfade vorhanden sind, denn wenn es keine übereinstimmenden Pfade gibt (die von der Shell gesehen werden), wird sie die ?
-enthaltende Zeichenfolge an den Maldet-Befehl weitergeben. Sobald übereinstimmende Pfade vorhanden sind, wird die Shell zu diesen Pfaden expandieren ?
und Maldet wird (Ihre) Platzhalter nicht mehr sehen.