Код оболочки для проверки, смонтировано ли устройство или файл с пробелами в пути

Вы должны использовать круглые скобки, поскольку они имеют более высокий приоритет, чем -a :

find . \( -name afile -o -name bfile \) -a -print
2
19.10.2016, 18:21
2 ответа

/ etc / mtab, / proc / mounts и т. Д. Не отображают путь к исходному файлу. Команда

mount выполняет и форматирует вывод.

Таким образом, вы можете попытаться:

mount | egrep "${file_path=} on /"

export file_path="/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso"

mount | egrep "${file_path=} on /"
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)

В отличие от

mount | grep debian               
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso_somethingelse on /mnt/projekte type iso9660 (ro,relatime)

Риск ошибки намного меньше. Можно также попытаться сопоставить шаблон остальной линии с регулярным выражением.

0
27.01.2020, 22:10

Вы можете обратиться к файлу / proc / self / mounts (или / proc / mounts ) в эти файловые пространства кодируются с использованием \ 040 (восьмеричное значение):

Пример, / dev / sda1 монтируется в / mnt / mount sda1

grep '/dev/sda1' /proc/mounts | cut -d ' ' -f 2

Возврат: / mnt / mount \ 040sda1

grep "$(echo '/mnt/mount sda1' | sed 's/ /\\\\040/g')" /proc/mounts | cut -d ' ' -f 1

Возврат: / dev / sda1

3
27.01.2020, 22:10

Теги

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