В конце концов я использовал.
ip addr show scope global
На самом деле я не знаю, пропущу ли я IP-адрес в среде с более сложными настройками, но для моей простой тестовой сети это должно работать.
На самом деле я не нашел чего-то вроде всего, кроме loopback. Но даже если бы я начал с этой идеи. На данный момент этого достаточно.
В вашем скрипте есть ошибки или несоответствия:
wc -c $2 $3
, но не присваиваете результат какой-либо переменной, поэтому результат только печатается в терминале, но вы не можете использовать его в своем скрипте. fi [ $2 -gt $1]
. Первым словом должно было быть if
, а не fi
. Шаблон if [condition]; then [do something]; fi
. if [ $2 -gt $1]; then
, внутри $2
и $1
есть только имена файлов, поэтому вы не сравниваете их размер,но их имена. Я думаю, вам стоит попробовать какой-нибудь туториал по написанию скриптов на bash, здесь мы не пишем скрипты за вас, мы решаем ваши проблемы. Здесь вы можете найти полезные ссылки :учебник по написанию сценариев bash для начинающих и учебник по написанию сценариев bash
Вам не нужен сценарий. Существует стандартный инструмент командной строки -, называемый find
, который может делать именно то, что вы хотите. Например, чтобы удалить все файлы в разделе /tmp
, размер которых превышает 1 гигабайт, сначала в целях безопасности запустите:
find /tmp -size +1G
Затем, когда вы уверены, что не собираетесь удалять ничего ненужного:
find /tmp -size +1G -delete
Обратите внимание, что в своем вопросе вы совершаете распространенную ошибку, заключающуюся в том, что вы не заключаете в кавычки свои переменные оболочки, поэтому, если какой-либо из ваших файлов содержит встроенные пробелы, вы получите нежелательные результаты. Использование команды find
с собственной внутренней командой -delete
позволяет избежать этого.
Как обычно, на странице man
вы найдете полную документацию по этой очень мощной команде.
Обратите внимание, что по умолчанию команда работает со всеми подкаталогами -данного пути. Чтобы ограничить операцию, вы можете использовать опцию -maxdepth
.