Если Вы хотите остроту для этого, используйте zsh. Это немного загадочно, как самое усовершенствованное использование спецификаторов шарика.
echo *(/e\''set -- $REPLY/**/*(Nm-30[1]); ((!$#))'\')
Внешний шарик соответствует только каталогам (/
) таким образом, что выражение (e
) в singlequotes верно. Выражение использует каталог соответствия ($REPLY
) и взгляды под ним (**/
) для файлов, измененных за прошлые 30 дней (m-30
), не вызывая ошибку, если никакой файл не соответствует (N
), и только сохраняя первое соответствие ([1]
). Выражение верно, если там не идет ни в какое сравнение.
Другой метод должен перечислить каталоги с недавними файлами, затем взять дополнение списка.
comm -13 <(find . -mtime -30 | sed -e '/^\.$/ d' -e 's~^\./~~' -e 's~/.*~~' | sort -u) \
<(find . -type d -name . -o -prune -print | sed -e 's~^\./~~')
Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege
Следовательно, скрипт оболочки может проверить, сколько параметров задано с таким кодом:
количество параметров, с которыми был вызван скрипт
количество параметров, которые были установлены в скрипте с помощью [119822]set -- foo bar
(при использовании внутри функции) количество параметров, с которыми была вызвана функция ([119824]set[119825] будет работать и там).
Это объясняется на странице bash man в блоке "Специальные параметры".[119312].
Фактически,
`$` refer to `value of` and
`#` refer to `number of / total number`
Итак вместе
`$#` refer to `The value of the total number of command line arguments passed.`
Таким образом, вы можете использовать $ #
, чтобы проверить количество переданных аргументов / параметров, как вы это делали, и обработать любые непредвиденные ситуации.
Точно так же у нас есть
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
и т. Д.