Использовать пустые строки в качестве разделителя записей.
Если строка соответствует «1», сохранить последнее поле.
Распечатать последнюю строку без последнего символа и распечатать сохраненное поле.
awk 'BEGIN {RS = ""}
{ if ($0 ~/ "1", /) { serial=$NF } }
END { print substr($0, 1, length($0)-1) ; print "SN: " serial }' file
Если каталог является точкой монтирования, он будет занят, и вы не сможете его переименовать.
$ sudo mv /mnt /mnt.old
mv: cannot move '/mnt' to '/mnt.old': Device or resource busy
Если это обычный каталог, вы должны иметь возможность переименовать его.
$ sudo mv /mnt /mnt.old
Если перемещение прошло успешно, повторно -создайте каталог монтирования и удалите переименованный каталог. При желании вы можете проверить, является ли переименованный каталог частью файловой системы, которую вы ожидаете, перед удалением.
Если вы используете Linux
Вы можете проверить, является ли каталог точкой монтирования, используяmountpoint
.
Чтобы избежать появления/исчезновения точки монтирования между test и rm -r
, вам необходимо запустить скрипт в отдельномпространстве имен монтированиясприватным поддеревом(монтирования не распространяются из/в новое пространство имен ). Это можно сделать с помощью unshare
.
unshare -m --propagation private -- "<delete script>"
Все одним шрифтом:
#!/bin/sh
unshare -m --propagation private -- sh -e <<EOF
if ! mountpoint -q "<path>"; then
rm -r "<path>"
fi
EOF
Вы не можете rmdir
каталог, который не пуст или является точкой монтирования. Так что это удовлетворит ваше требование:
rm -f mountpoint/.autodiskmounted # MacOS cookie
rmdir mountpoint 2>/dev/null
Если вы работаете в сценарии с установленным выходом при ошибке , вы можете использовать rmdir... || true
. (Обратите внимание, что от --ignore-fail-on-non-empty
мало толку, потому что мы получим необработанную ошибку при попытке удалить точку монтирования.)
Должен отметить, что у меня нет доступа к системе Mac, поэтому я не могу проверить, присутствует ли файл .autodiskmounted
, когда файловая система действительно смонтирована, или он является заполнителем, когда файловая система размонтирована.