Ich versuche, den obigen Befehl zu verstehen.
sudo /bin/ls %s %file_path
Was bewirkt es
%
? Ist es eine Art Substitutionsmechanismus?Was macht
sudo /bin/ls
das?
Antwort1
% steht in Bash-Skripten für Ankern, aber es kann manchmal zwischen Programmen variieren, was es als Anker tut.Teil eines Parametersoderein anderer. Fürlses tut nichts. Für sudo tut es einige Dinge, aber nicht in diesem Kontext; es macht für mich keinen Sinn... dieser Befehl versucht einfach (als root; zur Info, Sie müssen fast nie ausführenlsals root gibt es nur wenige Orte, an denen Dateinamen nicht von normalen Benutzern aufgerufen werden können überls) Durchsuchen Sie die Verzeichnisse %s und %foo nach Dateien. Das Ergebnis sollte lauten: „ls kann nicht auf %s zugreifen: Keine solche Datei oder kein solches Verzeichnis“ und das gleiche gilt für %foo. (Das Verzeichnis %s kann nie vorhanden sein, es sei denn, Sie haben es erstellt.)
Für die Skripterstellung führt es Folgendes aus.
Aushttp://wiki.bash-hackers.org/syntax/pe:
VerankerungZusätzlich können Sie einen Ausdruck „verankern“: Ein # (Raute) zeigt an, dass Ihr Ausdruck mit dem Anfangsteil der Zeichenfolge abgeglichen wird, ein % (Prozentzeichen) tut dies für den Endteil.
MYSTRING=xxxxxxxxxx
echo ${MYSTRING/#x/y} # RESULT: yxxxxxxxxx
echo ${MYSTRING/%x/y} # RESULT: xxxxxxxxxy
(Der Code tauscht entweder das erste oder das letzte „x“ gegen ein „y“ aus.)