wgetコマンドで../../../を保持

wgetコマンドで../../../を保持

../../../wgetコマンドでURLと共に使用すると削除されます。以下をご覧ください:

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 $ 

2行目と3行目は無視しても構いません(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コマンドの内容を保存する方法。

ベストアンサー1

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.  */

おすすめ記事