summaryrefslogtreecommitdiffstats
path: root/misc-utils/lsblk.c
diff options
context:
space:
mode:
authorKarel Zak2017-06-09 11:33:18 +0200
committerKarel Zak2017-06-09 11:33:18 +0200
commit1d9e35cc1e22f20184daff74ae131453c917d44c (patch)
tree0e91a292d500c52927033281821c1d4fd325ac4f /misc-utils/lsblk.c
parentlibblkid: (vfat) add more debug messages (diff)
downloadkernel-qcow2-util-linux-1d9e35cc1e22f20184daff74ae131453c917d44c.tar.gz
kernel-qcow2-util-linux-1d9e35cc1e22f20184daff74ae131453c917d44c.tar.xz
kernel-qcow2-util-linux-1d9e35cc1e22f20184daff74ae131453c917d44c.zip
lsblk: add option --tree
Now lsblk uses --list when --sort <column> is specified. This patch allows to specify --tree to overwrite this default behavior add to force tree-like output. In this case tree branches are sorted by the <column>. $ lsblk --sort SIZE NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda2 8:2 0 200M 0 part /boot sda1 8:1 0 200M 0 part /boot/efi sda6 8:6 0 7.8G 0 part [SWAP] sda5 8:5 0 35.1G 0 part /home/misc sda4 8:4 0 50G 0 part / sdb1 8:17 0 74.5G 0 part /home/archive sdb 8:16 0 74.5G 0 disk sda3 8:3 0 130.3G 0 part /home sda 8:0 0 223.6G 0 disk $ lsblk --sort SIZE --tree NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 74.5G 0 disk └─sdb1 8:17 0 74.5G 0 part /home/archive sda 8:0 0 223.6G 0 disk ├─sda2 8:2 0 200M 0 part /boot ├─sda1 8:1 0 200M 0 part /boot/efi ├─sda6 8:6 0 7.8G 0 part [SWAP] ├─sda5 8:5 0 35.1G 0 part /home/misc ├─sda4 8:4 0 50G 0 part / └─sda3 8:3 0 130.3G 0 part /home Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/lsblk.c')
-rw-r--r--misc-utils/lsblk.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 79077af07..1e8108290 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -1644,6 +1644,7 @@ static void __attribute__((__noreturn__)) help(FILE *out)
fputs(_(" -I, --include <list> show only devices with specified major numbers\n"), out);
fputs(_(" -J, --json use JSON output format\n"), out);
fputs(_(" -l, --list use list format output\n"), out);
+ fputs(_(" -T, --tree use tree format output\n"), out);
fputs(_(" -m, --perms output info about permissions\n"), out);
fputs(_(" -n, --noheadings don't print headings\n"), out);
fputs(_(" -o, --output <list> output columns\n"), out);
@@ -1682,6 +1683,7 @@ int main(int argc, char *argv[])
int c, status = EXIT_FAILURE;
char *outarg = NULL;
size_t i;
+ int force_tree = 0;
static const struct option longopts[] = {
{ "all", no_argument, NULL, 'a' },
@@ -1707,6 +1709,7 @@ int main(int argc, char *argv[])
{ "pairs", no_argument, NULL, 'P' },
{ "scsi", no_argument, NULL, 'S' },
{ "sort", required_argument, NULL, 'x' },
+ { "tree", no_argument, NULL, 'T' },
{ "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 },
};
@@ -1719,7 +1722,7 @@ int main(int argc, char *argv[])
{ 'O','f' },
{ 'O','m' },
{ 'O','t' },
- { 'P','l','r' },
+ { 'P','T', 'l','r' },
{ 0 }
};
int excl_st[ARRAY_SIZE(excl)] = UL_EXCL_STATUS_INIT;
@@ -1734,7 +1737,7 @@ int main(int argc, char *argv[])
lsblk_init_debug();
while((c = getopt_long(argc, argv,
- "abdDze:fhJlnmo:OpPiI:rstVSx:", longopts, NULL)) != -1) {
+ "abdDze:fhJlnmo:OpPiI:rstVSTx:", longopts, NULL)) != -1) {
err_exclusive_options(c, longopts, excl, excl_st);
@@ -1839,6 +1842,9 @@ int main(int argc, char *argv[])
add_uniq_column(COL_REV);
add_uniq_column(COL_TRANSPORT);
break;
+ case 'T':
+ force_tree = 1;
+ break;
case 'V':
printf(UTIL_LINUX_VERSION);
return EXIT_SUCCESS;
@@ -1853,6 +1859,9 @@ int main(int argc, char *argv[])
}
}
+ if (force_tree)
+ lsblk->flags |= LSBLK_TREE;
+
check_sysdevblock();
if (!ncolumns) {