Je veux obtenir seulement disons la troisième ligne de df -h
sortie.
Quel type de commande dois-je utiliser?
Je veux obtenir seulement disons la troisième ligne de df -h
sortie.
Quel type de commande dois-je utiliser?
Réponses:
La df
commande accepte en fait un argument identifiant le système de fichiers souhaité. Vous pouvez donc utiliser, par exemple, df /home
ou df /dev/sda3
.
Si vous avez l'intention d'analyser la sortie d'un script, vous voudrez l'utiliser df -P
pour garantir qu'il ne passe jamais sur plusieurs lignes. Ainsi, par exemple, vous pouvez utiliser df -Ph /home | tail -n +2
(mais si vous analysez la sortie d'un script, soyez conscient de la possibilité de noms de fichiers avec des espaces)
df /home
fournisse un en-tête. Vous interprétez le but de l'utilisateur. Vous pouvez avoir raison. Vous avez peut-être tort, qui sait?
tail -n +2
supprime l'en-tête.
Vous pouvez utiliser une combinaison de head
et tail
:
df -h | head -3 | tail -1
Ou
df -h | tail -n +3 | head -1
Mais notez que, df
permet de filtrer la sortie des options dedf
lui-même, vous devez d'abord les regarder avant d'utiliser une commande externe.
Vérifiez man df
.
Awk est un outil de traitement de texte, il convient donc à cette tâche
df -h | awk 'NR == 3'
Je suppose que vous ne recherchez pas nécessairement la troisième ligne, mais la ligne qui mentionne un disque spécifique (par exemple /dev/sda3
) ou un point de montage spécifique (par exemple /home
).
Ainsi, au lieu d'afficher simplement la troisième ligne, ce qui n'est pas sûr car l'ordre de sortie peut changer et vous pouvez obtenir un résultat différent, vous pouvez filtrer la sortie par contenu et afficher uniquement les lignes qui correspondent à un modèle spécifique ou contiennent un mot-clé.
Votre outil pour cela est grep
.
Par exemple, si vous voulez la ligne sur l'appareil /dev/sda3
, vous tapez:
df -h | grep '/dev/sda3'
Si vous voulez que la ligne mentionne votre répertoire personnel comme point de montage, utilisez:
df -h | grep '/home'
df -h /dev/sda3
ou df -h /home
(ce dernier fonctionne même s'il ne s'agit pas d'un point de montage).
Vous pouvez également utiliser perl
:
df -h | perl -ne 'print if $.==3'
Le $.
est le numéro de ligne actuel, vous pouvez donc imprimer la Nième ligne avec perl -ne 'print if $.==N'
.
Ma première idée serait une construction tête-bêche.
Exemple:
df -h | head -3 | tail -1
head -3
entraîne l'arrêt de la sortie après trois lignes et tail -1
ne produit que la dernière ligne.
Alternativement, si vous savez à quoi ressemblera la sortie, vous pouvez également utiliser grep
pour trouver des lignes contenant une certaine chaîne.