Я использовал 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
— первый аргумент. Помните, что это оболочка, которая расширяет подстановочные знаки, а не приложение, поэтому *
это не один аргумент, если он не соответствует только одному (или ни одному) файлу/каталогу.
"$@"
Если вы хотите принять все аргументы, в скрипте следует использовать двойные кавычки . (Не используйте $*
их, так как они будут прерывать работу с именами файлов, содержащими пробелы.)