Команда linux du в функции оболочки выводит только одну строку

Команда linux du в функции оболочки выводит только одну строку

Я использовал duкоманду для отображения использования файла:

$ sudo du -hsx /* | sort -rh | head -n 40
16G     /home
5.3G    /var
2.6G    /usr
840M    /run
...

И я хочу написать функцию, которая избавит меня от повторяющейся работы:

show_disk() {
    sudo du -hsx "$1" | sort -rh | head -n 40
}

Но когда я запускаю эту функцию, duотображается только одна строка вывода, например:

$ show_disk() /*
0   /bin

Мне кажется, что duкоманда ведет себя по-другому в функции оболочки, где я ошибся? Любая помощь будет оценена.

решение1

$1— первый аргумент. Помните, что это оболочка, которая расширяет подстановочные знаки, а не приложение, поэтому *это не один аргумент, если он не соответствует только одному (или ни одному) файлу/каталогу.

"$@"Если вы хотите принять все аргументы, в скрипте следует использовать двойные кавычки . (Не используйте $*их, так как они будут прерывать работу с именами файлов, содержащими пробелы.)

Связанный контент