Я хочу получить размер каталога, заданного пользователем в качестве аргумента. Пример:
read -p "Enter the directory" target
du -k $target
Если пользователь указывает путь как ~/Documents/dir, я получаю сообщение об ошибке:du: cannot access '~/Documents/dir': No such file or directory
Принимая во внимание, что если я дам команду как:
du -k ~/Documents/dir
Я получаю желаемый результат.
Почему я не могу использовать переменные вместе с командой du?
Пробовал также с -x, без помощи. Путь, указанный пользователем, такой же, как путь, указанный вместе с командой du, как и во втором случае. Папка, в которой выполняется скрипт, является другой.
—
Анурааг Кхаре
Код не выполняет расширение тильды . Решение не в использовании
—
John1024
~. Укажите путь, относительный или абсолютный, без использования ~. Например, вместо того ~/Documents/dir, чтобы писать /home/myself/Documents/dir.
Чтение параметров построчно, так что 1980 ... В наши дни вы используете параметры в командной строке или предоставляете пользовательский интерфейс. Вы также запрещаете пользователю использовать завершение оболочки для ввода имен файлов. Использование параметров командной строки проще!
—
ксеноид
В противном случае см stackoverflow.com/questions/3963716/...
—
xenoid
-x? Также, над какой папкой работает скрипт, и предоставляет ли пользователь полный путь или относительный путь?