affiche uniquement les disques physiques lors de l'utilisation de df et mount

Lorsque j'utilise df ou mount , je m'intéresse surtout aux partitions de disque physique. De nos jours, la sortie de ces commands est submergée par des filesystems temporaires et virtuels, des groupes de contrôle et d'autres choses qui ne m'intéressent pas régulièrement.

Mes partitions physiques dans la sortie commencent toujours par ' / ', j'ai donc essayé de faire des alias pour df et mount :

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

Cela fonctionne bien pour mount1 (bien qu'il montre le ' / ' en rouge), mais pour df1 j'aimerais parfois append l'option -h à df et ne peut pas faire df1 -h . Je préférerais ne pas avoir un alias pour chaque combinaison d'options que je pourrais vouloir utiliser. Est-ce que je dois vraiment me pencher sur la définition des fonctions dans bash (je préférerais ne pas le faire)? Y a-t-il une meilleure solution pour df1 ?

Vous pouvez résoudre le problème de l'argument df1 en utilisant l'alias suivant:

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

assurez-vous d'append tout autre type ( xfs , fuseblk (pour le support NTFS moderne, comme @Pandya l'a souligné), etc.) qui vous intéresse. Vous pouvez faire df1 -h et get le résultat attendu.

mount a une option -t mais vous ne pouvez pas le spécifier plusieurs fois (seulement le dernier est pris), là j'utiliserais:

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

J'utilise grep -E car egrep est déprécié et utiliser /bin/grep permet de ne pas utiliser --colour=auto partir d'un alias pour grep / egrep

Vous pouvez définir la fonction comme suit:

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

Exemple de sortie:

 $ 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 

Ici $@ vous permet d'entrer vos arguments! [Notez que $@ devrait toujours être écrit entre guillemets sauf si vous avez une raison concrète de ne pas le faire. -ed]

Cette réponse tente de répondre aux préoccupations suivantes de Yves :

Je préférerais ne pas avoir un alias pour chaque combinaison d'options (1)

et

bien qu'il montre le '/' en rouge (2)

et (3) append une information importante à la sortie variable, qui est la ligne d'en-tête de df qui change en fonction des drapeaux fournis.

(1) Vous avez besoin de la function , car par définition, il prend des arguments. Et, il est très simple à définir et à utiliser comme vous le verrez ci-dessous.

(2) le rouge / est produit par grep --color , qui est un alias commun à grep lui-même (vous pouvez vérifier cela en exécutant alias ).

code

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

Les nouvelles lignes ci-dessus sont destinées à améliorer la lisibilité, vous pouvez les replace par l'espace.

Copiez et collez cet extrait directement dans une session bash interactive ou, mieux encore, ajoutez-le à votre ~/.bashrc .

Exemple d'utilisation

 $ 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% / 

Ce qu'il fait

La fonction df1 appelle df avec les arguments que vous lui avez transmis et pipe ( | ) la sortie vers sed , qui est invoquée avec -n pour supprimer l'printing automatique de l'espace des motifs. Le rest exprime les sed "scripts", deux en fait:

  1. le script 1p imprime la 1ère ligne, qui dans notre cas est l'en-tête de df (j'utilise la même chose pour les ps )
  2. le script /^\//p correspond à n'importe quelle ligne commençant par / , puis l'imprime
  3. ; sépare les 2 scripts sed

Si vous pydf une option différente, utilisez pydf place, car il ne présente pas de système de files ayant 0 blocs par défaut et possède une jauge, des colors et d'autres propriétés activées par défaut. Il fonctionne assez bien alias à df , et l'original est toujours disponible en utilisant \df toute façon.