Я столкнулся с этой проблемой также, хотя не так часто как каждый день.
Кому-то еще, у кого была подобная проблема, сказали отключить IPv6, и он, по-видимому, работал: http://ubuntuforums.org/showthread.php?t=1528202
Я пытаюсь сделать это также использующее более обновленные инструкции от: http://www.noobslab.com/2012/05/disable-ipv6-if-your-internet-is.html
Сообщите мне, работает ли это на Вас или если Вы нашли другое решение.
ОБНОВЛЕНИЕ: оказалось, что дефектный маршрутизатор вызывал проблему. Изменение маршрутизатора решило его для меня.
Если я читаю то право, Вы пытаетесь заменить наклонные черты вправо (/
) с завершенной наклонной чертой вправо (\/
)? Это становится намного легче обработать, если Вы не используете /
как Ваш разделитель в sed
:
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username
Вы собираетесь для некоторой сложности здесь, так как обратные косые черты интерпретируются
Во-первых, не используйте форму обратной галочки замены команды: его правила для кавычек внутри intrincate. Используйте долларовые круглые скобки, который имеет интуитивные правила — что, внутри обычно анализируется, с соответствием близкая круглая скобка, отмечающая конец подоболочки.
Затем Вы используете двойные кавычки для команды sed. Избегайте этого: Ваша команда sed не может быть записана буквально, необходимо защитить \
и $
и для оболочки и для sed. Используйте одинарные кавычки вместо этого.
Также у Вас есть наклонные черты в Вашем тексте замены. Sed не может знать, что эти наклонные черты не являются частью его синтаксиса, но буквенного текста, который Вы хотите включать. Можно использовать символ кроме /
разграничить s
, g
или m
команда. Используйте символ, который никогда не появляется в Вашем тексте замены (к счастью, здесь, это легко, потому что Вы знаете текст замены).
Я предполагаю это echo pwd
должен действительно быть pwd
(или echo "$PWD"
). Без потребности защитить наклонные черты, Вам не нужен вложенный вызов sed. Если действительно необходимо было преобразовать pwd
, рассмотреть использование $PWD
и средства обработки строк shelll вместо этого.
sed -i 's~^log.*$!log '"$PWD"'/redis/redis.log!' ./conf/redis.conf
Если Вам приходится нелегко с заключением в кавычки, используйте более легкий инструмент, такой как Perl. Perl сочетает функции sed и оболочки, таким образом, Вы не сталкиваетесь с заключением в кавычки проблем между двумя.
perl -MCwd -i -pe 'BEGIN {$PWD = cwd} s[^log.*][log $PWD/redis/redis.log]' conf/redis.conf
или
perl -MCwd -i -pe '$_ = cwd."/redis/redis.log" if /^log' conf/redis.conf
``
подоболочки были удержаны от использования в пользу$()
subshells-они являются намного лучше ведущими себя с вложением во многих отношениях. Приобретение знаний об использовании другогоsed
разделители также удалили много non-human-parseable 'частоколов' в некоторых моих сценариях. Довольный помочь! – DopeGhoti 16.01.2014, 20:57