Для настройки моста между Ethernet и Wi-Fi достаточно просто сделать в /etc/network/interfaces
:
auto eth0
allow-hotplug eth0
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
auto br0
iface br0 inet static
bridge_ports eth0 wlan0
address 192.168.1.100
netmask 255.255.255.0
Замените IP-адрес на более подходящий для вашей сети.
Если вы предпочитаете присвоение IP через DHCP, измените его на:
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
После изменения /etc/network/interfaces
либо перезапустите Debian, либо выполните
service networking restart
Активирует эту конфигурацию.
Для этой конфигурации необходимо установить bridge-utils
. Вы можете установить его с помощью:
sudo apt install bridge-utils
Для получения дополнительной информации см.:
Интерфейс wlan0 также должен быть настроен для подключения к удаленной точке доступа, поэтому эта конфигурация не используется дословно.
Дополнительное примечание: соединение eth0 и wlan0 вместе означает, с точки зрения непрофессионала, что br0 будет представлять себя как единый логический интерфейс, поглощающий интерфейсы, составляющие часть моста. Обычно такая конфигурация выполняется, когда оба расширения или принадлежат одной и той же сети.
Следующая команда выведет список всех файлов, кроме последних 5:
ls -l | grep '\.gz\|xz\|ext4$' | head -n `expr \`ls | grep '\.gz\|xz\|ext4$' | wc -l\` - 4`
Вы сможете преобразовать ее в команду для легкого удаления файлов.
Если обычный порядок сортировки в порядке (т.е. ваши файлы именуются по дате), а ваша оболочка поддерживает массивы, вы можете использовать их для этого, избегая обычные предостережения относительно использования ls
:
F=(./*.{gz,xz,ext4}) # list files
G=("${F[@]:5}") # pick all but the first five to another array
G=("${F[@]:0:${#F[@]}-5}") # or pick all but the last five
rm -- "${G[@]}" # remove them
zsh
может сортировать по дате, так что это захватит соответствующие файлы в массив, отсортированный по времени модификации
F=(./*.(gz|xz|ext4)(Om))
( (Ом)
для самых новых последних, (om)
для самых новых в первую очередь.)
Обработайте массив, как указано выше.
Конечно, если вам нужно отсортировать по дате изменения, нельзя использовать zsh
и знать, что ваши имена файлов хороши , простой ls -t | tail -n +6
подойдет.
( tail -n +6
начинает печать с шестой строки, то есть пропускает первые пять. У меня был off-by -one сначала.)
С GNU ls, я думаю, мы могли бы попросить его указать имена файлов в кавычках, чтобы создать подходящий ввод для оболочки, а затем заполнить массив выводом:
eval "F=($(ls -t --quoting-style=shell-always ./*.{xz,gz}))"
Но это требует доверия что ls
и оболочка согласовывают способ интерпретации кавычек.
Вы почти у цели.
Используйте длинный формат параметра, чтобы указать необходимое количество строк, а затем отмените его. (Противоположная логика может использоваться с хвостом
).
head --lines = 3
отпечатки с головы три строки
head --lines = -3
отпечатки с головы, кроме последних трех
Вот пример использования головы
и восьмистрочный файл с именем f
$ cat f
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
$ head -3 f
line 1
line 2
line 3
$ head --lines=3 f
line 1
line 2
line 3
$ head --lines=-3 f
line 1
line 2
line 3
line 4
line 5
. Убедитесь, что эта часть производит то, что вы хотите, прежде чем начинать удаление файлов.
Длинный вариант не является строго обязательным, но он не имеет наследия обратной совместимости с эволюцией команд хвоста и головы, и я считаю, что его легче запомнить.
head -n-3
эквивалентно длинному параметру head --lines = -3 f
См. Ниже
$ head -3 f #originally
line 1
line 2
line 3
$ head -n3 f #
line 1
line 2
line 3
$ head -n+3 f
line 1
line 2
line 3
$ head -n-3 f
line 1
line 2
line 3
line 4
line 5
$
ls -1 | grep '\.gz$\|xz$\|ext4$' | tail -n +6 | xargs rm
Предостережения: В ваших файлах не должно быть пробелов/кавычек.
set -f; set ./*.[gx]z ./*.ext4; [ "$#" -gt 5] && shift 5; rm -f "$@"
Ниже приведены имена файлов любого типа:
td="`mktemp`" \
find . -maxdepth 1 -type f \( -name \*.[gx]z -o -name \*.ext4 \) -exec sh -c '
[ ! -s "$td" ] && [ "$#" -gt 5 ] && { shift 5; echo >> "$td"; }
rm -f "$@"
' x {} +
rm "$td"
В bash:
ls -1 *.{gz,xz,ext4} | head -n-5 | xargs -r rm
Ключевым моментом является то, что head -n-5
выведет все строки, заканчивающиеся перед 5-й с конца (т.е. все строки, кроме последних 5). Думаю, остальное вам понятно.
Двойником для tail
будет tail -n+6
, который выведет все строки, начинающиеся с 6-й (т.е. все строки, кроме первых 5).