firewalker Δημοσ. 26 Οκτωβρίου 2009 Share Δημοσ. 26 Οκτωβρίου 2009 Είχα ένα "πρόβλημα" με το τρόπο που τυπώνει η df(1). Όταν το όνομα του δίσκου ήταν πάνω από 18 χαρακτήρες έσπαγε την εκτύπωση σε δύο σειρές. Παράδειγμα: > Filesystem Type Inodes IUsed IFree IUse% Mounted on /dev/mapper/VolGroup00-lvolSys reiserfs 0 0 0 - / none tmpfs 96488 2350 94138 3% /dev none tmpfs 96488 2 96486 1% /dev/shm /dev/mapper/VolGroup00-lvolHome ext3 2621440 43975 2577465 2% /home /dev/mapper/VolGroup00-lvolStor1 ext3 3276800 7853 3268947 1% /mnt/storage1 /dev/mapper/VolGroup00-lvolStor2 ext4 1476960 54 1476906 1% /mnt/storage2 /dev/sda3 ext2 60480 55 60425 1% /boot Δεν με βόλευε καθόλου σε κάτι script που την χρησιμοποιούσα. Πείραξα λοιπόν τον κώδικα του df.c (τα νούμερα άλλαξα βασικά ) και τώρα τυπώνει διαφορετικά. > Filesystem Type Inodes IUsed IFree IUse% Mounted on /dev/mapper/VolGroup00-lvolSys reiserfs 0 0 0 - / none tmpfs 96488 2350 94138 3% /dev none tmpfs 96488 2 96486 1% /dev/shm /dev/mapper/VolGroup00-lvolHome ext3 2621440 43975 2577465 2% /home /dev/mapper/VolGroup00-lvolStor1 ext3 3276800 7853 3268947 1% /mnt/storage1 /dev/mapper/VolGroup00-lvolStor2 ext4 1476960 54 1476906 1% /mnt/storage2 /dev/sda3 ext2 60480 55 60425 1% /boot Για όποιον ενδιαφέρεται υπάρχει το παρακάτω patch. > diff -Naur coreutils-7.6-orig/src/df.c coreutils-7.6/src/df.c --- coreutils-7.6-orig/src/df.c 2009-09-10 21:29:04.000000000 +0300 +++ coreutils-7.6/src/df.c 2009-10-26 00:11:33.000000000 +0200 @@ -149,9 +149,9 @@ char buf[MAX (LONGEST_HUMAN_READABLE + 1, INT_BUFSIZE_BOUND (uintmax_t))]; if (print_type) - fputs (_("Filesystem Type"), stdout); + fputs (_("Filesystem Type"), stdout); else - fputs (_("Filesystem "), stdout); + fputs (_("Filesystem "), stdout); if (inode_format) printf (_(" Inodes IUsed IFree IUse%%")); @@ -378,19 +378,19 @@ { size_t disk_name_len = strlen (disk); size_t fstype_len = strlen (fstype); - if (disk_name_len + fstype_len < 18) - printf ("%s%*s ", disk, 18 - (int) disk_name_len, fstype); + if (disk_name_len + fstype_len < 45) + printf ("%s%*s ", disk, 45 - (int) disk_name_len, fstype); else if (!posix_format) - printf ("%s\n%18s ", disk, fstype); + printf ("%s\n%45s ", disk, fstype); else printf ("%s %s", disk, fstype); } else { - if (strlen (disk) > 20 && !posix_format) - printf ("%s\n%20s", disk, ""); + if (strlen (disk) > 47 && !posix_format) + printf ("%s\n%47s", disk, ""); else - printf ("%-20s", disk); + printf ("%-47s", disk); } if (inode_format) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.