Bezüglich eines einzelnen Fragezeichens im Maldet-Scanbefehl

Bezüglich eines einzelnen Fragezeichens im Maldet-Scanbefehl

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 maldetund 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 scanBefehl, den Maldet letztendlich aufruft, nicht ausfindig machen, aber Maldet übergibt den angegebenen Pfad wortwörtlich an diesen scanBefehl. 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 /homeund /public_htmloder existiert /public_anything.

Vergessen Sie jedoch nicht, diese Platzhalterpfade im Befehl mit Escape-Zeichen oder Anführungszeichen zu versehen. maldetFalls 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.

verwandte Informationen