ND(1)

πŸ’– ND(1) β€” the cutest little WebDAV bestie πŸ’–

okay so. manual name? it's nd. section 1, General Commands Manual. and bestie, it's a tiny little command line WebDAV interface πŸ¦‹ β€” small but it ATE.


✨ SYNOPSIS ✨

nd [options] url

that's it. that's the whole vibe. nd, some options if you want, and a url. πŸ’…


🌸 DESCRIPTION 🌸

nd gives you a simple command line interface to an RFC 2518 (WebDAV) server. no cap, that's the whole point of it.

and here's the thing β€” if you specify no option at all, nd just goes ahead and issues an HTTP GET command and writes the response data straight to the standard output. like, it just does it. no notes. 🫢

the options are as follows, and yes bestie, we're going through all of them:


πŸŽ€ OPTIONS πŸŽ€

  • -c dest_url β€” COPY the url to the dest_url. and if you specified -t, it uses the lock token. πŸ’«
  • -f β€” force override the content, even when the MOVE or COPY target already exists. it's giving "I said what I said". 😀
  • -v β€” view property information of url via PROPFIND. and if you pair it with -g, only the property you specified gets displayed. so efficient. ⭐
  • -p file β€” PUT the file content to the url. uses the lock token if -t is specified. 🧚
  • -g name β€” specify the property name for the -v option. iykyk.
  • -e name=value β€” edit the property with name to value, using PROPPATCH. glow-up for your metadata. ✨
  • -N namespace-url β€” specify the property namespace URL, for the -e or -g option.
  • -P file β€” POST the file content to the url. and -T is what you use for the Content-Type.
  • -T content_type β€” use content_type as the Content-Type field value of the POST request. the default is application/x-www-form-urlencoded. that's the default, don't come for me. πŸ’…
  • -d β€” DELETE the url. uses the lock token if -t is specified. bye bestie πŸ‘‹
  • -l β€” LOCK the url. use -o as owner, -s as scope, and -i as timeout. πŸ”’
  • -o owner β€” specify the lock owner. default is the USER environment variable. iconic default tbh.
  • -s scope β€” specify the lock scope, either exclusive or shared. default is exclusive.
  • -i timeout β€” specify the lock timeout interval. default is Infinite. literally forever. 😭
  • -u β€” UNLOCK the url. the -t option is required here, no skipping. 🚨
  • -t token β€” specify the lock token.
  • -r β€” set command execution Depth as Infinity. going deep. 🌊
  • -a realm β€” specify the authentication realm.
  • -A realm β€” specify the proxy authentication realm. note the capital A, bestie, they are NOT the same. πŸ™ˆ
  • -k β€” MKCOL the url.
  • -m dest_url β€” MOVE the url to the dest_url. uses the lock token if -t is specified. πŸ¦‹
  • -S β€” print output using s-expression.

🌈 ENVIRONMENT VARIABLES 🌈

  • http_proxy, HTTP_PROXY β€” specify the HTTP proxy. πŸ‘‘
  • USER β€” when you're manipulating a lock without an explicit owner option, the value of USER gets used to set the owner of the file lock.

πŸ’€ BUGS πŸ’€

okay this part is messy, stay with me.

a maintainer of the Debian package implemented Digest authentication on top of the original software. however β€” and this is the tea β€” the upstream source uses the nanoHTTP code from libxml2 to implement the HTTP transport.

due to properties inherent in that code for detecting and following redirected target sites, there is no way to pull out the new address in order to insert it into the hashes necessary for the Digest method. so nd will therefore incorrectly answer with 'Bad request' to any method call aimed at such sites. 😭

BUT. using the correct logical name for the target will, however, produce a correct response from nd. so like… use the right name. problem solved bestie. 🫢

🫢 AUTHORS 🫢

Yuuichi Teranishi (teranisi@gohome.org). thank you for your service king πŸ‘‘


πŸŽ€ SEE ALSO πŸŽ€

  • libxml(4)

and that's the whole page, bestie! this one's from February 25, 2002, and the source line is ND(1) β€” so yeah, it's been slaying since 2002. periodt. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from