Я полагаю, что это должно быть выполнимо с установщиком альтернативы Ubuntu.
Альтернативный установочный CD предоставляет установщик, который является основанным на тексте, а не графическим. Это необходимо для установки на компьютерах меньше чем с 384 мегабайтами RAM. Это также имеет много опций пользовательской установки, которые не доступны в стандартной Настольной версии, и это может часто использоваться для установки, если стандартный CD не работает.
Кроме того (предложенный в этом Задают вопрос Ubuntu: Как переместить/usr в новый раздел), Вы могли установить с CD по умолчанию и затем использовать живой CD для перемещения тех разделов в другой жесткий диск; после этого отредактируйте /etc/fstab
отразить эту модификацию.
Я думаю, вам нужно что-то вроде этого:
findmnt -T .
При использовании параметра
-T, --target path, если путь не является файлом точки монтирования или каталог,
findmnt
проверяет элементы пути в обратном порядке, чтобы получить точку монтирования. Вы можете распечатать только определенные поля через -o, --output [list]
. findmnt --help
.
В качестве альтернативы вы можете запустить:
(until findmnt . ; do cd .. ; done)
Проблема, с которой вы столкнулись, заключается в том, что все пути относительно чего-то другого, поэтому вам просто нужно пройтись по дереву. Каждый раз.
findmnt
является членом пакета util-linux уже несколько лет. К настоящему времени, независимо от вашего дистрибутива, он уже должен быть установлен на вашем компьютере с Linux, если у вас также есть инструмент mount
.
man mount | grep findmnt -B1 -m1
For more robust and customizable output use
findmnt(8), especially in your scripts.
findmnt
распечатает всю информацию о монтировании без аргумента точки монтирования, и только ту информацию для своего аргумента с одним. -D
- это параметр эмулировать df
. Без -D
его вывод аналогичен выводам mount
, но гораздо более настраиваемый. Попробуйте findmnt --help
и убедитесь в этом сами.
Я вставляю его в подоболочку, чтобы текущий каталог текущей оболочки не менялся.
Итак:
mkdir -p /tmp/1/2/3/4/5/6 && cd $_
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd
TARGET SOURCE FSTYPE OPTIONS
/tmp tmpfs tmpfs rw
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 839.7M 11G 7% /tmp
/tmp/1/2/3/4/5/6
Если у вас нет доступной опции -D
(не в старых версиях util-linux) , тогда вам никогда не понадобится страх - в любом случае это не более чем удобный переключатель. Обратите внимание на заголовки столбцов, которые он создает для каждого вызова - вы можете включить или исключить их для каждого вызова с помощью переключателя utput -o
. Я могу получить тот же результат, что и -D
, например:
findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 1.1G 10.6G 10% /tmp
Способ Linux/Unix заключается в том, чтобы иметь набор небольших утилит, которые при объединении дают результаты, за которыми вы охотитесь.
Обычно они не имеют утилиты для каждого случая. Вместо этого у Вас есть много небольших полезных утилит, которые комбинируются вместе с трубами и т.д. Преимущество заключается в том, что вы можете написать свою собственную утилиту довольно легко, если она недоступна.
Например, чтобы получить нужную вам информацию, вы можете использовать:
mount | grep $(df --output=source . | tail -1)
Если вы хотите повторно использовать вышеуказанное с различными каталогами, создайте скрипт:
#!/bin/bash
mount | grep $(df --output=source $1 | tail -1)
Сохраните его как mountinfo
и сделайте исполняемым (chmod +x mountinfo
). Затем вы можете использовать его как:
mountinfo .
Если вам нужна система, которая имеет утилиту для всего, что не взаимодействует друг с другом, то некий мистер Гейтс может помочь вам ;-)
. Я не знаю команды, но можно создать функцию. Вы можете добавить к своему .bashrc
:
mountinfo () {
mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}
Это выполнит команду mount
и передаст вывод в grep
. grep
будет искать выход df -P "$1". | tail -n 1 | awk '{print $1}'
, и чтобы его разбить:
df -P "$1"
запустит df
на аргумент, переданный функции,tail -n 1
выведет только вторую строку, содержащую информацию о разделе
. awk '{print $1}'
выведет первую часть этой строки, которая является номером диска/раздела, например /dev/sda5
. Это то, что grep
будет искать в команде монтирования и выводить. Источник вашего .bashrc
файла, чтобы применить изменения, или выйдите из системы и войдите обратно.
Теперь, если вы запустите mountinfo .
, вы получите нужный результат.
Это может быть несколько беспорядочно, если точки монтирования содержат пробелы, но это должно работать, за исключением случаев, когда точки монтирования содержат символы новой строки:
#!/bin/sh
mountpoint="$(df -P "$1" | awk '{
if (NR==1)
i=index($0,"Mounted on");
else
print substr($0,i);
}')"
mount|grep " on ${mountpoint} type "
df -P
выводит одну строку для файловая система; без этой опции df
может выводить две строки, если точка монтирования длинная. Имя точки монтирования начинается в том же столбце, что и метка «Установлено на» в строке заголовка.
Получив точку монтирования, мы ищем ее в выводе mount
.
Если вы используете не совсем древнюю версию GNU coreutils df, то echo $(df. --output=target | tail -n 1)
работает. То же самое и с stat -c '%m'.
, хотя я замечу, чтоhttps://linux.die.net/man/1/statотсутствует документация по параметру формата %m
.
Переносить это утомительно. :Ни один из вышеперечисленных методов не будет работать с версиями stat или df для BSD или Cygwin. Если бы не возможность пробелов в путях точек монтирования, df -P. | tail -1 | awk '{ print $NF}'
было бы хорошо, но часто флешки имеют пробелы в имени тома, которые наверняка появятся в пути монтирования и сломают это. Для переносимости Perl можно установить практически везде, а CPAN имеет модуль Sys ::Filesystem ::MountPoint , который обеспечивает желаемую функциональность.