показывать только физические диски при использовании df и mount


9

Когда я использую dfили mount, меня больше всего интересуют разделы физического диска. В настоящее время вывод этих команд перегружен временными и виртуальными файловыми системами, группами и другими вещами, которые меня не интересуют на регулярной основе.

Мои физические разделы в выводе всегда начинаются с ' /', поэтому я попытался создать псевдонимы для dfи mount:

alias df1="df | egrep '^/'"
alias mount1="mount | egrep '^/'"

Это работает нормально для mount1(хотя показывает ' /' красным), но df1я иногда хотел бы добавить -hопцию dfи не могу сделать df1 -h. Я бы предпочел не иметь псевдоним для каждой комбинации параметров, которые я мог бы использовать. Неужели я действительно должен смотреть на определение функций в bash (я бы предпочел не делать этого)? Есть ли лучшее решение для df1?

Ответы:


6

Вы можете решить проблему с df1аргументом, используя следующий псевдоним:

alias df1='df --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660'

убедитесь , что добавить любой другой тип ( xfs, fuseblk(для современной поддержки NTFS, а @Pandya указал), и т.д.) вы заинтересованы в. С этими словами вы можете сделать df1 -hи получить ожидаемый результат.

mountесть -tопция, но вы не можете указать ее несколько раз (берется только последняя), там я бы использовал:

alias mount1="mount | /bin/grep -E '^/'"

Я использую grep -Eas egrepустарела, и использование /bin/grepгарантирует, что вы не используете --colour=autoиз псевдонима для grep/egrep


df --type ntfsне показывает раздел 5 NTFS и, следовательно, пропускает их в результате для меня
Pandya

Я должен использовать --type fuseblkдля этого
Pandya

@Pandya, это то, что я указал, вам нужно добавить другие типы, которые вас интересуют. У меня в системе не было разделов ntfs в течение нескольких лет, поэтому я не уверен, откуда это взялось в псевдониме, который я использую ,
Anthon

1
@Pandya выглядит так, как это --type ntfsбыло в моем псевдониме с того момента, когда была минимальная поддержка NTFS (время, когда вам приходилось выполнять проверку файловой системы на вашем разделе NTFS после перезагрузки в Windows% -)). Обновил мой ответ, спасибо.
Anthon

3

Вы можете определить функцию следующим образом:

function df1() { df "$@" | grep -E '^/'; }

Пример вывода:

$ df1 -h
/dev/sda8        25G  8.1G   16G  35% /
/dev/sda4        25G   20G  5.8G  78% /media/pandya/Documents+Edu
/dev/sda3       9.5G  7.1G  2.0G  79% /media/pandya/Ext4
/dev/sda7        24G   17G  6.9G  71% /media/pandya/Extra+Other
/dev/sda6        26G   25G  448M  99% /media/pandya/Media+Game
/dev/sda10       15G  7.9G  7.1G  53% /media/pandya/Miscellaneous
/dev/sda5        36G   22G   14G  63% /media/pandya/Software+OS

Здесь $@можно ввести свои аргументы! [Обратите внимание, что $@всегда следует писать в двойных кавычках, если только у вас нет конкретной причины не делать этого. -ed]


3

Если переключение на другое dfявляется опцией, используйте pydfвместо этого, так как он не показывает файловые системы, имеющие 0 блоков по умолчанию, и имеет по умолчанию индикатор, цвета и некоторые другие свойства, включенные. Это работает довольно хорошо с псевдонимом df, и оригинал всегда доступен с помощью в \dfлюбом случае.


Для меня самый полезный ответ здесь. К сожалению, этого не существует для mount.
emk2203

Немного поздно, но для меня pydf показал мой единственный физический диск и 33 / dev / loop ##, когда все, что мне нужно, это физический диск. Принятый ответ df работает, но вместо этого я предпочитаю эту форму: псевдоним dfh = 'df -h -x squashfs -x tmpfs'
Стив

1

Этот ответ пытается решить следующие проблемы Ив :

Я бы предпочел не иметь псевдоним для каждой комбинации параметров (1)

а также

хотя он показывает '/' красным (2)

и (3) добавить важную часть информации к изменяющемуся выводу, которая является dfстрокой заголовка, которая изменяется в соответствии с предоставленными флагами.

(1) Вам нужно function, потому что по определению он принимает аргументы. И это очень просто определить и использовать, как вы узнаете ниже.

(2) красный /генерируется grep --color, что является общим псевдонимом для grepсебя (вы можете проверить это, запустив alias).

код

function df1 
{ 
    df $* | sed -n '1p;/^\//p;'
}

Вышеприведенные строки предназначены для улучшения читабельности, их можно заменить пробелом.

Скопируйте и вставьте этот фрагмент непосредственно в интерактивную сессию Bash или, что еще лучше, добавьте его к себе ~/.bashrc.

Пример использования

$ df1 
Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/disk1                        487358464 316093104 171009360  65% /
/dev/disk2                           524032    302620    221412  58% /Volumes/Packer

$ df1 -hT
Filesystem                        Type   Size  Used Avail Use% Mounted on
/dev/disk1                        hfs    465G  302G  164G  65% /
/dev/disk2                        hfs    512M  296M  217M  58% /Volumes/Packer

$ df1 -hT .
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/disk1     hfs   465G  302G  164G  65% /

Что оно делает

Функция df1вызывает dfс любыми аргументами, которые вы передаете, и посылает |выходные данные pipe ( ) sed, которые активируются -nдля подавления автоматической печати пространства шаблона. Остальное выражает sed "scripts", два на самом деле:

  1. скрипт 1pвыводит 1-ю строку, которая в нашем случае является dfзаголовком 's (я использую то же самое для psтрубопроводов),
  2. скрипт /^\//pсоответствует любой строке, начинающейся с /, затем печатает ее
  3. ; разделяет 2 сценария sed

0

Я использую alias df='df -hT -xtmpfs -xdevtmpfs'.

Довольно отстойно, что вы должны использовать псевдоним, чтобы сделать GNU dfдействительно пригодным для использования в Linux в наши дни. Должна быть возможность показывать только «настоящие» файловые системы (что бы это ни значило).

Обычно df -hxtmpfsвынимает большую часть дерьма и остается пригодным для использования без псевдонима. Не особо хуже чем netstat -tulnpи такие ... * вздох *


0

чтение man mount

Листинг монтировок
Режим листинга поддерживается только для обратной совместимости. Для более надежного и настраиваемого вывода findmnt(8), особенно в ваших скриптах.

показал мне другой способ получить точно желаемый результат.

Я создал функцию lsmounts

lsmounts () {
  findmnt -D -t nosquashfs,notmpfs,nodevtmpfs
}

Пояснения к аргументам:

  • -D: обеспечить вывод, как мы его знаем df
  • -t: выберите типы файловых систем, которые вы хотите увидеть. Предшествующий noисключает упомянутые файловые системы.

Таким образом, я получаю желаемый результат

SOURCE                       FSTYPE   SIZE   USED  AVAIL USE% TARGET
/dev/mapper/vgubuntu-lvroot  ext4    78,3G  42,5G  31,7G  54% /
/dev/mapper/vgubuntu-lvhome  ext4   284,5G 146,4G 124,5G  51% /home
...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.