Декодирование сценария удара

find -name предикат принимает подобные оболочке globbing шаблоны. Эти шаблоны привязываются на запусках и концах строк. Попробуйте это вместо этого:

find / -name '*.anki'

* подстановочный знак. Это будет соответствовать нулю или большему количеству символов. Без него, find будет искать названные файлы .anki. Обязательно заключите в кавычки *. Если Вы не сделаете, то оболочка развернет его.

Можно также использовать регулярные выражения с некоторыми вариантами находки.

find / -regex '.*\.anki'

Посмотрите find(1) страница справочника для получения дополнительной информации.

3
14.11.2018, 21:09
1 ответ

Строка проверяет, больше ли второй позиционный параметр 0 . Если условие истинно, то он сдвигает позиционные параметры 3, 4, ... на 1, 2, ... Если условие ложно, он сдвигает позиционные параметры 2, 3, ... на 1, 2,. ..

Константы с нулем в начале интерпретируются как восьмеричные числа. При использовании 10 # $ 2 позиционный параметр $ 2 интерпретируется как десятичный. Вы также можете обратиться к Арифметика оболочки .

Таким образом, ((10 # $ 2> 0)) проверяет, больше ли второй позиционный параметр, представленный в базе 10, чем 0. 2> / dev / null вызывает какие-либо ошибки, возникающие в результате этого теста, будут перенаправлены на / dev / null . См. Арифметические выражения Bash для получения дополнительной информации об операторе # .

&& и || - условные конструкции. Таким образом, если условие истинно, то выполняется shift 2 , иначе выполняется shift .

выражение1 && выражение2

Истина, если и выражение1, и выражение2 истинны.

выражение1 || выражение2

Истинно, если выражение1 или выражение2 истинно.

В качестве примера обратитесь к следующему:

$ ((10>42)) && echo greater || echo smaller    # Condition is false so the `echo smaller` expression is evaluated
smaller
$ ((100>42)) && echo greater || echo smaller   # Condition is true so the `echo greater` expression is evaluated
greater

Цитата из руководства :

((...))

 ((выражение)) 
 

Арифметическое выражение вычисляется в соответствии с правилами, описанными ниже (см. Арифметика оболочки). Если значение выражения не равно нулю, статус возврата - 0; в противном случае статус возврата равен 1. Это в точности эквивалентно

 let "выражение" 
 
6
27.01.2020, 21:14

Теги

Похожие вопросы