Récupérer les noms des partitions utilisées

Bonsoir à tous,

Une demande un peu exotique pour fignoler mon script d’installation perso. J’aimerais récupérer les noms des partitions utilisées en excluant la swap.
Par exemple, dans mon cas, fdisk -l me répond

[code]Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00032cb5

Device Boot Start End Blocks Id System
/dev/sda1 * 1 2432 19530752 83 Linux
/dev/sda2 2432 121602 957229057 5 Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5 2432 2675 1951744 82 Linux swap / Solaris
/dev/sda6 2675 121602 955276288 83 Linux[/code]
L’idée c’est donc d’utiliser une commande (pipée à fdisk -l ?) qui renvoie en sortie “/dev/sda1” et “/dev/sda5” (et enventuellement /dev/sda2, c’est pas trop grave).

Quelqu’un aurait une idée ? Je me suis penché vers sed et awk sans grand succès pour le moment, et je sais qu’on a quelques spécialistes locaux :slightly_smiling:

Tu voulais dire sda6 non?
Ça quoi :

C’est cochon mais ça marche. :083

OK, ça marche, maintenant je vais essayer de comprendre ce que ça fait :slightly_smiling:

Merci !

  1. seulement les lignes qui commencent par /dev/
    2 seulement les lignes qui ne contiennent pas swap ou Extended (entourés soit d’un espace soit de la fin de ligne)
  2. effacer tout ce qu’il y a après /dev/…
    Après c’est les signes cabalistiques, pour exprimer tout ça, qui se privent pas d’être aussi chiants qu’à l’habitude. :033

OK, à coups de man j’avais fini par décrypter les grep, par contre sed est toujours aussi obscure pour moi. Demain à tête reposée :slightly_smiling:

Question bonus !

Je m’y attendais pas, mais je bute à l’étape juste après. La nouvelle question est donc : comment injecter le résultat de ce pipe, à savoir

/dev/sda1 /dev/sda6
dans la commande tune2fs ?

L’idée est de faire faire au script

tune2fs -i 1m -c 100 /dev/sda1 tune2fs -i 1m -c 100 /dev/sda6
Le pipe ne fonctionne pas, et j’essaie toutes les syntaxes auxquelles je pense, mais pas moyen d’injecter le résultat de la première série de commandes dans tune2fs…

J’en appelle aux esprits :slightly_smiling:

Une simple boucle for, reprenant la commande précédente comme argument, ça ne pourrait pas le faire ?
Je n’ai jamais essayé de remplacer la variable par une commande complexe, mais je ne vois pas de raison pour que ça bloque.

Il manque peut-être des caractères d’échappement pour certaines parenthèses, l’imbrication de celles-ci n’est pas franchement ma spécialité…


Après un test rapide (avec le tune2fs remplacé par un echo), la syntaxe que je te propose fonctionne !

Ou bien xargs qui est fait précisément pour ça :

Super, merci beaucoup à tous les deux !

Les deux techniques fonctionnent. J’avais qu’à réviser mes boucles for, ça m’apprendra. Par contre xargs m’était totalement inconnu, et je vais le garder au chaud dans un coin, je suis sûr que ça va resservir :slightly_smiling: