I've just found this command:
upower -e
that displays a list of files that can be used with upower -i
to display plugged device status.
So my first try was using:
upower -e | xargs upower -i
but it doesn't work. So I've tried:
$ upower -e | xargs echo
/org/freedesktop/UPower/devices/line_power_AC /org/freedesktop/UPower/devices/battery_BAT0 /org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001 /org/freedesktop/UPower/devices/DisplayDevice
and it display all files in single line. So I've used:
$ upower -e | xargs -0 echo
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001
/org/freedesktop/UPower/devices/DisplayDevice
it works but displays one empty line, but this doesn't work:
$ upower -e | xargs -0 upower -i
failed to set path: Object path invalid: /org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001
/org/freedesktop/UPower/devices/DisplayDevice
Why upower -e | xargs upower -i
doesn't work? I'm using Bash on Fedora.
Is there something I'm missing here?
EDIT:
This seems to work:
upower -e | xargs -I {} upower -i "{}"
But I'm wondering: why a quote is needed if the filename doesn't have spaces?
upower -i
can only handle a single object path at a time? Tryupower -e | xargs -L 1 upower -i
– steeldriver Apr 10 '22 at 18:36xargs -I {}
works, but the files don't have spaces, then why this is needed? – jcubic Apr 10 '22 at 18:38-I
isn't really needed, but it implies-L1
as a side effect - that's what's really making the difference here I think – steeldriver Apr 10 '22 at 18:40upower -e
presumably?upower -i
needs an input path – steeldriver Apr 10 '22 at 18:45