
Есть ли альтернативная команда, которая делает то же самое findmnt -T . -o TARGET |tail -n 1
?
Пример: если мой текущий рабочий каталог — /media/username/HDD/subdir1/subdir2
, эта команда выведет /media/username/HDD/
.
В Windows путь к наивысшему каталогу текущего диска/раздела \
(также /
работает вcmd), поскольку Windows работает с буквами дисков вместо«все есть файл».
Unix работает более унифицированно и модульно, но как найти точку монтирования раздела? Если нет более короткого решения, чем findmnt -T . -o TARGET |tail -n 1
, то это не проблема. Я просто хотел узнать, есть ли другой способ.
решение1
Я вижу man findmnt
ряд предложений, которые, кажется, делают то, что вам нужно при поиске точки монтирования для файловой системы:
findmnt --first-only --noheadings --output TARGET --target "$PWD"
/home
Или с меньшей читабельностью:
findmnt -fno TARGET -T "$PWD"
/home
решение2
Если вы просто хотите найти его для себя, а не для последующего использования в переменной, то вы не найдете более короткого пути, чем df .
:
$ df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 343650580 232263752 93860660 72% /home
Конечно, это имеет дополнительные детали, поэтому не может быть использовано для того, чтобы просто сохранить имя устройства в переменной напрямую. Однако, это очень легко проанализировать:
$ df . | grep -Po '^/\S+'
/dev/sda6
$ df . | awk '/^\//{print $1}'
/dev/sda6
Но если вам действительно нужна одна команда для печати, то@roaima'sfindmnt
будет лучшим.