Я пытаюсь понять приведенную выше команду.
sudo /bin/ls %s %file_path
Что это
%
делает? Это какой-то замещающий механизм?Что делает
sudo /bin/ls
?
решение1
% в скриптах bash означает привязку, но иногда в разных программах может различаться, что он делаетчасть некоторого параметраилидругой. Длялсничего не делает. Для sudo он делает некоторые вещи, но не в этом контексте; для меня это не имеет смысла... эта команда просто пытается (как root; для справки, вам почти никогда не придется запускатьлскак root, существует очень мало мест, где имена файлов не могут быть доступны обычным пользователям черезлс) поиск файлов в каталогах %s и %foo, и должен дать нам результат "ls не может получить доступ к %s: нет такого файла или каталога" и почти то же самое для %foo. (Каталог %s не может существовать, если вы его не создали)
Для написания скрипта делается следующее.
Отhttp://wiki.bash-hackers.org/syntax/pe:
ЯкорьКроме того, вы можете «прикрепить» выражение: # (знак решетки) укажет, что ваше выражение сопоставляется с начальной частью строки, % (знак процента) — с конечной частью.
MYSTRING=xxxxxxxxxx
echo ${MYSTRING/#x/y} # RESULT: yxxxxxxxxx
echo ${MYSTRING/%x/y} # RESULT: xxxxxxxxxy
(Этот код заменяет либо первый, либо последний «x» на «y»)