mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-08-06 00:29:44 +02:00
maint: simplify parsing df's output in shell scripts
Avoid complicated and error-prone parsing of df's output via sed(1), cut(1), etc., and instead use df's more modern --output option. * src/ioblksize.h (in a comment): Simplify the extraction of the device name of the mounted file system from df's output. * tests/dd/skip-seek-past-dev.sh: Likewise. * tests/du/2g.sh: Likewise for the 'avail' column here. Also avoid the deprecated use of "tail -NUM". * tests/misc/stat-mount.sh: While at it, remove the determination of the mount point of "." via df(1) plus sed(1) as it is unused since commit v8.5-159-gf57cb37 anyway. Instead, improve this test by verifying that the output of "stat -c%m ." at least starts with a slash '/'.
This commit is contained in:
+1
-1
@@ -63,7 +63,7 @@
|
||||
the readahead setting is 128KiB which was read using:
|
||||
|
||||
file="."
|
||||
device=$(df -P --local "$file" | tail -n1 | cut -d' ' -f1)
|
||||
device=$(df --output=source --local "$file" | tail -n1)
|
||||
echo $(( $(blockdev --getra $device) * 512 ))
|
||||
|
||||
However there isn't a portable way to get the above.
|
||||
|
||||
@@ -33,7 +33,7 @@ get_device_size() {
|
||||
|
||||
# Get path to device the current dir is on.
|
||||
# Note df can only get fs size, not device size.
|
||||
device=$(df -P . | tail -n1 | cut -d' ' -f1) || framework_failure_
|
||||
device=$(df --output=source . | tail -n1) || framework_failure_
|
||||
|
||||
dev_size=$(get_device_size "$device") ||
|
||||
skip_ "failed to determine size of $device"
|
||||
|
||||
+1
-4
@@ -27,10 +27,7 @@ very_expensive_
|
||||
|
||||
# Get number of free kilobytes on current partition, so we can
|
||||
# skip this test if there is insufficient free space.
|
||||
|
||||
# This technique relies on the fact that the 'Available' kilobyte
|
||||
# count is the number just before the one with a trailing '%'.
|
||||
free_kb=$(df -kP .|tail -1|sed 's/ [0-9][0-9]*%.*//;s/ *$//;s/.* //')
|
||||
free_kb=$(df -k --output=avail . | tail -n1)
|
||||
case "$free_kb" in
|
||||
[0-9]*) ;;
|
||||
*) skip_ "invalid size from df: $free_kb";;
|
||||
|
||||
@@ -19,8 +19,10 @@
|
||||
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
||||
print_ver_ stat
|
||||
|
||||
df_mnt=$(df -P . | sed -n '2s/.* \([^ ]*$\)/\1/p')
|
||||
stat_mnt=$(stat -c%m .) || fail=1
|
||||
test "$stat_mnt" || fail=1
|
||||
case "$stat_mnt" in
|
||||
/*) ;;
|
||||
*) fail=1;;
|
||||
esac
|
||||
|
||||
Exit $fail
|
||||
|
||||
Reference in New Issue
Block a user