У меня есть эта достаточно простая команда, которая при запуске внутри bash выводит оставшееся место на диске в stdout
:
echo -n "External1TB: $(grep -Poi '(\/mnt\/External1TB\s+)\K(.*)' <(df -H --output=target,avail))B"
Я использую перенаправление процесса <()
для передачи вывода df
в grep
, который затем обрабатывает вывод и отфильтровывает только оставшееся пространство. Все это заключено в подоболочку $()
и передано в echo
, поэтому я могу добавить к выходным данным имя диска.
Пример вывода: External1TB: 882GB
Он работает довольно хорошо при запуске внутри интерактивной оболочки bash, однако, если я попытаюсь запустить его с помощью bash -c
, например так:
bash -c "echo -n "External1TB: $(grep -Poi '(\/mnt\/External1TB\s+)\K(.*)' <(df -H --output=target,avail))B"",
вывод всегда: External1TB:
. Кажется, что либо grep
, либо df
по какой-то причине не работают.
Что я делаю не так?