Так как Вы упоминаете Gvim конкретно, я предполагаю, что это - редактор Ваш предпочитать. Gvim/vim
действительно поддерживает справа налево текст.
Используйте опцию :set rl
или подробная форма :set rightleft
включить его. Можно добавить это к Вашему .vimrc
если Вы хотите всегда использовать его.
vim
должен будет быть скомпилирован с +rightleft
опция. Я не на 100% уверен, делает ли Ubuntu это, но CentOS делает. Для проверки я сделал vim --version | grep +rightleft
с тех пор vim
может отобразить, с какими опциями это было скомпилировано.
В соответствии с Linux, можно получить информацию точки монтирования непосредственно от ядра в /proc/mounts
. mount
программа записывает подобную информацию в /etc/mtab
. Пути и опции могут отличаться, как /etc/mtab
представляет что mount
переданный ядру, тогда как /proc/mounts
показывает данные, как замечено в ядре. /proc/mounts
всегда актуально тогда как /etc/mtab
не мог бы быть то, если /etc
было только для чтения в какой-то момент, который не ожидался сценариями начальной загрузки. Формат аналогичен /etc/fstab
.
В обоих файлах первое разделенное от пробела поле содержит путь устройства, и второе поле содержит точку монтирования.
awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts
или если у Вас нет awk:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
Существует много пограничных случаев, где Вы не могли бы получить то, что Вы ожидаете. Если устройство было смонтировано через другой путь в /dev
это определяет то же устройство, Вы не заметите его этот путь. В /proc/mounts
, свяжите монтирование, неотличимы от оригинала. Может быть больше чем одно соответствие, если точка монтирования тени другой (это необычно).
В /proc/self
или /proc/$pid
, существует для каждого процесса mounts
файл, который подражает глобальному файлу. Информация о монтировании может варьироваться между процессами, например, из-за chroot
. Существует дополнительный названный файл mountinfo
это имеет другой формат и включает больше информации, в особенности устройство главные и незначительные числа. Из документации:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
(3) major:minor: value of st_dev for files on filesystem
(4) root: root of the mount within the filesystem
(5) mount point: mount point relative to the process's root
(6) mount options: per mount options
(7) optional fields: zero or more fields of the form "tag[:value]"
(8) separator: marks the end of the optional fields
(9) filesystem type: name of filesystem of the form "type[.subtype]"
(10) mount source: filesystem specific information or "none"
(11) super options: per super block options
Таким образом, при поиске устройства числом можно сделать это как это:
awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'
mount
команда без аргументов перечислит все в настоящее время монтируемые файловые системы; Вы можете grep
это для диска Вы хотите (или grep
/etc/mtab
, который является файлом mount
читает информацию из):
$ grep /dev/sda /etc/mtab
/dev/sda3 /boot ext2 rw,noatime 0 0
grep ^"${NODE}[[:space:]]\+" /etc/mtab | cut -d ' ' -f 2"
намного менее хрупко...
– detly
22.03.2012, 09:41
В Linux теперь можно использовать команду findmnt
из util-linux
(начиная с версии 2.18):
$ findmnt -S /dev/VG_SC/home
TARGET SOURCE FSTYPE OPTIONS
/home /dev/mapper/VG_SC-home ext4 rw,relatime,errors=remount-ro,data=ordered
или lsblk
(также из util-linux
), начиная с версии 2. 19):
$ lsblk /dev/VG_SC/home
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
VG_SC-home 254:2 0 200G 0 lvm /home
Это также полезно для поиска всей файловой системы, смонтированной под определенным устройством (диском или разделом...):
$ lsblk /dev/sda2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda2 8:2 0 59.5G 0 part
├─linux-debian64 (dm-1) 252:1 0 15G 0 lvm
└─linux-mint (dm-2) 252:2 0 15G 0 lvm /
Для получения только точки монтирования:
$ findmnt -nr -o target -S /dev/storage/home
/home
$ lsblk -o MOUNTPOINT -nr /dev/storage/home
/home
Выше findmnt
возвращается со статусом выхода из сбоя, если устройство не смонтировано, а не lsblk
.
Итак:
if mountpoint=$(findmnt -nr -o target -S "$device"); then
printf '"%s" is mounted on "%s"\n' "$device" "$mountpoint"
else
printf '"%s" does not appear to be directly mounted\n' "$device"
fi
Да. Вы можете посмотреть Показаны только интересные точки горы/неинтересные типы фильтрации или Каталоги листинга под /
, которые не находятся под одной и той же точкой горы, для примера использования, но ниже также есть краткая сводка. Команда, о которой вы спрашиваете, findmnt
(хотя lsblk
также может служить):
lsblk -f /dev/sda[12]
NAME FSTYPE LABEL UUID MOUNTPOINT
sda1 vfat ESP F0B7-5DAE /esp
sda2 btrfs sys 94749918-bde1-46e6-b77c-b66e0368ecdb /
Теперь, как вы видите, /dev/sda1
смонтирован на /esp
. Интересно, установлен ли он и в другом месте?
findmnt /dev/sda1
TARGET SOURCE FSTYPE OPTIONS
/esp /dev/sda1 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
/boot /dev/sda1[/EFI/arch_root] vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
Ага. Понятно. Подпапка также --bind
смонтирована поверх загрузки. Хорошо...
sudo umount /boot /esp
findmnt /dev/sda1
Ничего. Какого черта?
echo "$?"
1
Охх... Ну, это мило. Хммм...
for d in 1 2
do findmnt "/dev/sda$d" >/dev/null
printf "/dev/sda$d%.$((6>>!$?))s%s\n"\
" isn't" " currently mounted."
done
/dev/sda1 isn't currently mounted.
/dev/sda2 is currently mounted.
О, да, очень мило.
for d in /dev/sd*
do findmnt -noSOURCE,TARGET "$d"
done
/dev/sda2[/arch_root] /
А теперь давайте вернем sda1 на место и попробуем еще раз...
sudo mount -a
for d in /dev/sd*
do findmnt -noSOURCE,TARGET "$d"
done
/dev/sda1 /esp
/dev/sda1[/EFI/arch_root] /boot
/dev/sda2[/arch_root] /
Но где я нашел эту волшебную команду?
man mount | sed -e:n -e'/findmnt/!d;N;/\n$/q;bn'
Для более надежного и настраиваемого вывода используйте
findmnt
(8), особенно в ваших скриптах. Обратите внимание, что управляющие символы в имени точки монтирования заменяются на?
.
Я не знаю чистого и простого способа определить, установлен ли узел устройства в /dev
или нет. Однако, это то, что я могу предложить. Он работает непосредственно с устройствами (/dev/sda1
) и с устройствами, смонтированными по UUID (/dev/disk/by-uuid/aa4e7b08-6547-4b5a-85ad-094e9e1af74f
). Он разбивается, если имена устройств содержат пробелы.
deviceIsMounted()
{
local DEVICE="$1"
local MOUNT=$(
(
echo "$DEVICE"
find /dev -type l -lname "*${DEVICE/*\/}" -exec readlink -f {} \; -print |
xargs -n2 |
awk -v device="$DEVICE" '$1 == device {print $2}'
) |
xargs -n1 -i{} grep -F {} /proc/mounts
)
test -n "$MOUNT" && echo "$MOUNT"
}
deviceIsMounted /dev/sda1 && echo yes # Mountpoint and status
deviceIsMounted /dev/md2 >/dev/null && echo yes # Just status
Функция записывает запись из /proc/mount
в stdout, если она найдена, а также устанавливает статус выхода равным 0. В противном случае статус выхода равен 1.
udisks
символьная ссылка (в/dev/disk/by-label/...). Но я могу решить к использованию узла устройстваreadlink -f
. Мне нравится/proc/mounts
идея, я думаю, что это могло бы быть немного более надежно, чем/etc/mtab
. – detly 23.03.2012, 01:59mountinfo
. Звонитьstat
для получения номеров устройств (см. мой обновленный ответ я забыл включать команду ранее). – Gilles 'SO- stop being evil' 23.03.2012, 02:04-d " "
опция дляcut
в этомgrep
команда. – Craig McQueen 08.05.2015, 07:47findmnt
иlsblk
специализированные команды, которые делают тяжелую работу (более надежно) для Вас – Stéphane Chazelas 21.07.2015, 19:12