Что означает «sudo /bin/ls %s %foo»?

Что означает «sudo /bin/ls %s %foo»?

Я пытаюсь понять приведенную выше команду.

sudo /bin/ls %s %file_path
  1. Что это %делает? Это какой-то замещающий механизм?

  2. Что делает 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»)

Связанный контент