В оболочке Korn, как и в оболочке Bourne, кавычки и обратные кавычки (архаичная форма подстановки команд )может быть непревзойденной, и вы должны помочь токенизатору определить, где заканчиваются обратные кавычки. Внутри обратных кавычек есть еще один уровень обработки обратной косой черты.
echo "`date"
работает и совпадает с:
echo "`date`"
echo "$(date)"
И:
echo `echo "foo`
работает и совпадает с:
echo `echo "foo"`
echo $(echo "foo")
Если да:
grep "`date +"%b %d"`"
Это взято как grep
слово, а затем"`date +"
(незакрытые обратные кавычки внутри двойных кавычек )объединены с %b
и затем %d
объединены с другими незакрытыми обратными кавычками внутри двойных -кавычек:"`"
. Так что это как
grep "$(date +)"%b %d"$()"
(за исключением того, что по какой-то причине, в то время как echo "``"
или echo "$()"
не вызвали бы ошибку, в echo "`"
оболочка попытается выполнить команду с пустым именем (, как если бы вы написали echo "$("")"
).
Итак, здесь вам нужно использовать обратную косую черту, чтобы помочь синтаксическому анализатору:
grep "`date +\"%b %d\"`"
Эти обратные косые черты фактически удалены. Именно date +"%b %d"
оценивается подоболочкой при подстановке команд.
Здесь, поскольку ksh
принимает незакрытые кавычки, вы могли бы также сделать:
grep "`date +\"%b %d"
(не то чтобы я бы советовал это делать ).
Таким же образом можно получить вложенные обратные кавычки, как в:
echo "`echo \"\`echo \\\"a b\\\"\`\"`"
Хороший пример того, почему никто никогда не использует этот синтаксис и использует $(...)
более новую форму (, введенную ksh
в начале 80-х):
echo "$(echo "$(echo "a b")")"
Теперь, что касается вашей конкретной проблемы, похоже, вы хотите перечислить ABC.LOG*
файлы в текущем каталоге, которые последний раз -изменялись сегодня. Для этого вы можете сделать:
touch -t "$(date +%Y%m%d0000)".start-of-day &&
find. ! -name. -prune -name 'ABC.LOG.*' \
-newer.start-of-day -type f -exec ls -lrtd {} + &&
rm -f.start-of-day
Вы должны указать, что Вы хотите. Мост не выполняет NAT, и Интернет не работает, как Ethernet, где работает мост.
Если вы хотите иметь интернет-шлюз с Nat и пересылать свои пакеты в соответствии с таблицами IP-маршрутизации ваших ящиков Linux, ваши маршруты iptables выглядят вполне нормально. Вам просто нужно убедиться, что IP-переадресация включена на этом блоке, а для ноутбука установлен шлюз по умолчанию с адресом eth1 блока Linux.
Так что после Ваших обновлений :Вам бридж не нужен. Достаточно шлюза.
1. убедитесь, что интерфейсы linux box находятся в разных подсетях. Или, в качестве альтернативы, убедитесь в его таблицах маршрутизации, что он имеет маршрут по умолчанию на eth0 через интернет-маршрутизатор шлюза, а другой трафик для локальной сети (, в которой находится ваш ноутбук, например ), отправляется в eth1.
2, создайте статическую IP-конфигурацию на своем ноутбуке с IP-адресом в той же сети, что и eth1, и с маршрутизатором по умолчанию, настроенным на адрес интерфейса, если eth1. Или настройте dhcp-сервер на Linux для того же.
3. Убедитесь, что IP-переадресация включена на вашем компьютере с Linux.
можешь попробовать
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
iptables –A FORWARD –i eth0 –o eth1 –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
затем сохраните правила ip-таблиц
iptables-save
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables.service
затем откройте файл iptables и отредактируйте правила, переместите эти правила над правилами отклонения
iptables –A FORWARD –i eth0 –o eth1 –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
A FORWARD -o vibr0 -j REJECT --reject-with icmp-port-unreachable
A FORWARD -i vibr0 -j REJECT --reject-with icmp-port-unreachable