Вы не можете интерактивно отвечать на вопросы rm -ri
с помощью последней команды xargs
: объяснение здесь.
Вместо этого вы можете указать список больших каталогов в качестве аргументов для rm -ri
:
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2")
Обратите внимание, что вы можете заменить xargs cut
на awk
. ] как таковой:
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | awk '{print $2}')
Или даже короче:
rm -ri $(du -d2 -h ~/Downloads/* | awk '$1 ~ /G$/ {print $2}')
Также обратите внимание, что приведенные выше команды не будут работать, если в именах файлов есть пробелы.
zenity
не записывает результат вашего выбора в std-out. Попробуйте сами, запустив его в командной строке:
$ zenity --question
$
Как видите, ничего не отображается, поэтому ваши переменные TEST
пусты.
Вместо этого zenity
возвращает значение --question
в качестве статуса выхода. Это можно посмотреть (в bash) с помощью внутренней переменной $?
.
$ zenity --question
Выберите кнопку 'No':
$ echo $?
$ 1
Как объясняется на странице man, 0 означает 'Yes', 1 означает 'No', а 5 означает, что команда завершилась.
Таким образом, ваша команда должна выглядеть так:
$ zenity --question; echo test=$?
$ test=1
Обратите внимание, что разные команды zenity
ведут себя по-разному. Как объясняет man-страница, команда --entry
действительно отправляет свой вывод в std-out:
$ zenity --entry
$ Test 1..2..3..
Поэтому ваши тесты будут работать с этой конкретной командой.