Как исключить несколько каталогов в ncdu при сканировании

Вы объединяете буквы флага в одну строку, поэтому с помощью myscript -l -rвы получаете FLAGS=lr, что не равно ни l, ни r.

Вы можете использовать сопоставление с образцом вместо проверки на равенство, чтобы справиться с этим:

if [[ $FLAGS = *r* ]]; then
    echo "flag -r was given"

или добавьте отдельные переменные для каждого флага:

r_flag=
l_flag=
while getopts "rluh" opt; do
    case $opt in
        r) r_flag=1;;
...
if [[ $r_flag ]]; then
    echo "flag -r was given"

В любом случае, вы, скорее всего, захотите shift $(( OPTIND - 1 ))после цикла while getopts, чтобы опции, обрабатываемые getopts, были удалены из позиционных параметров, а то, что осталось в $1, $2... аргументы скрипта, указанные после опций.

1
08.07.2020, 12:46
1 ответ

Когда вы опускаете косую черту в путях, это должно работать:

ncdu / --exclude home --exclude media

в документации сказано про --исключить:

   Exclude files that match PATTERN. The files will still be displayed
   by default, but are not counted towards the disk usage statistics.

Шаблон относится к имени , а не к пути .

0
18.03.2021, 23:21

Теги

Похожие вопросы