На самом деле это связано с различной семантикой удаления файлов.
Напр. В системе Windows вы обычно не можете удалить используемый файл. Но в системах типа Unix -файловые системы обычно следуют стандартной семантике файловой системы POSIX. Это означает, что когда вы удаляете файл, который используется:
Это может -удивить тех, кто привык к Windows -, например семантика удаления файлов. На самом деле это значительно упрощает такие вещи, как обновление программного обеспечения, которое может использоваться или не использоваться в данный момент, но также может вызвать некоторые сюрпризы, если вы не знаете об этом.
Например, если вам не хватает места на диске из-за того, что какая-то программа записывает все больше и больше данных в огромный файл,удаление этого файла не вернет вам места на диске до тех пор, пока эта программа не закроет файл (или не будет остановлена ). Вместо этого правильный способ снова освободить место на диске как можно скорее в этой ситуации, не убивая программу, — это обрезать файл до нулевой длины, не удаляя его.
Фон :в файловых системах в стиле POSIX -первичный, гарантированный -уникальный идентификатор для конкретного файла — это не имя файла, а номер инода файла файл. Вы можете думать об этом как о своего рода идентификационном номере социального обеспечения для файла. Каталог можно рассматривать как особый тип файла, который связывает имена файлов с номерами инодов для удобства людей, которые не могут работать с числами, как компьютер.
С точки зрения компьютера любая жесткая ссылка — это просто старая обычная запись в каталоге.:Каждый файл обычно имеет хотя бы одну жесткую ссылку.
С точки зрения человека:
С другой стороны, загрузка и выгрузка модулей ядра Linux следует более привычной семантике «вы не можете выгрузить модуль, который используется в данный момент».
В сочетании со стандартной семантикой файловой системы POSIX это означает, что вы не можете выгрузить текущую версию модуля без предварительного отключения адаптера WiFi.Но вы можете просто заменить файл модуля на диске новой версией, и при следующей перезагрузке новая версия будет использоваться автоматически. (Убедившись, что ваши файлы initramfs перегенерированы перед перезагрузкой, вы гарантируете, что старая версия модуля не останется в файле initramfs.)
@(this|that)
соответствует this
или that
в расширенных подстановках в стиле Ksh -, которые также поддерживает Bash. (В Bash вам нужно будет использовать shopt extglob
для включения расширенных подстановок в других контекстах [[ ]]
.)
if [[ $1 == *.@(jpg|png) ]]; then
echo match
else
echo no match
fi
Однако в Zsh вы можете использовать *.(jpg|png)
.
А в стандартном sh можно было бы использовать case
, но пришлось бы повторять весь шаблон:
case $1 in
*.png|*.jpg) echo match;;
*) echo no match;;
esac
См.: