Сохраните команду ../../../ в команде wget

../../../ удаляется, когда я использую его с URL-адресом в команде wget . PLease см. Ниже:

 user $ wget http://n0t.meaning.anything:20000/../../../some/folder/file --2015-10-29 16:48:13-- http://n0t.meaning.anything:20000/some/folder/file Resolving n0t.meaning.anything (n0t.meaning.anything)... failed: Name or service not known. wget: unable to resolve host address 'n0t.meaning.anything' user $ 

Вы можете игнорировать вторую и третью строку (потому что URL-адрес на самом деле не существует). Но в первой строке вы видите:

 --2015-10-29 16:48:13-- http://n0t.meaning.anything:20000/some/folder/file 

Но моя команда была

 wget http://n0t.meaning.anything:20000/../../../some/folder/file 

Таким образом, вы можете видеть, что ../../../ был удален моей оболочкой (или командой wget).

Как сохранить команду ../../../ в команде wget.

Я не думаю, что вы можете без кодирования URL-адресов. wget src/url.c удаляет их; насколько я могу судить по очень кратким взглядам на источник, нет никакого способа обойти это.

 /* Resolve "." and ".." elements of PATH by destructively modifying PATH and return true if PATH has been modified, false otherwise. The algorithm is in spirit similar to the one described in rfc1808, although implemented differently, in one pass. To recap, path elements containing only "." are removed, and ".." is taken to mean "back up one element". Single leading and trailing slashes are preserved. For example, "a/b/c/./../d/.." will yield "a/b/". More exhaustive test examples are provided below. If you change anything in this function, run test_path_simplify to make sure you haven't broken a test case. */ 

RFC3986 §5.4.2 (thanks @phk) гласит:

Парсеры должны быть осторожны при обработке случаев, когда в ссылке относительного пути больше сегментов «..», чем в базовом URI-пути есть иерархические уровни. Обратите внимание, что синтаксис «..» не может использоваться для изменения компонента полномочий URI.

  "../../../g" = "http://a/g" "../../../../g" = "http://a/g" 

В приведенных выше примерах используется базовый URI http://a/b/c/d;p?q

http://a/b/c/d/../../../../g (второй пример) эквивалентен http://a/../g , который (согласно RFC ) должны быть разрешены как http://a/g .

Таким образом, парсер URI wgetfirefox на то пошло) корректен при удалении ведущих компонентов ../