curl(1) -fsSLJO
transfer a URL
-f, --fail
       (HTTP)  Fail  silently  (no  output at all) on server errors. This is mostly done to better enable
       scripts etc to better deal with failed attempts. In normal cases  when  a  HTTP  server  fails  to
       deliver  a  document,  it  returns an HTML document stating so (which often also describes why and
       more). This flag will prevent curl from outputting that and return error 22.

       This method is not fail-safe and there are occasions where non-successful response codes will slip
       through, especially when authentication is involved (response codes 401 and 407).
-s, --silent
       Silent or quiet mode. Don't show progress meter or error messages.  Makes Curl mute.
-S, --show-error
       When used with -s it makes curl show an error message if it fails.
-L, --location
       (HTTP/HTTPS) If the server reports that the requested page  has  moved  to  a  different  location
       (indicated  with  a Location: header and a 3XX response code), this option will make curl redo the
       request on the new place. If used together with -i, --include or  -I,  --head,  headers  from  all
       requested pages will be shown. When authentication is used, curl only sends its credentials to the
       initial host. If a redirect takes curl to a different host, it won't  be  able  to  intercept  the
       user+password.  See  also  --location-trusted  on  how to change this. You can limit the amount of
       redirects to follow by using the --max-redirs option.

       When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will
       do  the  following  request  with a GET if the HTTP response was 301, 302, or 303. If the response
       code was any other 3xx code, curl will re-send the following request  using  the  same  unmodified
       method.
-J, --remote-header-name
       (HTTP) This option tells the  -O,  --remote-name  option  to  use  the  server-specified  Content-
       Disposition filename instead of extracting a filename from the URL.
-O, --remote-name
       Write output to a local file named like the remote file we get. (Only the file part of the  remote
       file is used, the path is cut off.)

       The remote file name to use for saving is extracted from the given URL, nothing else.

       Consequentially,  the  file  will  be saved in the current working directory. If you want the file
       saved in a different directory, make sure you change current working directory before  you  invoke
       curl with the -O, --remote-name flag!

       You may use this option as many times as the number of URLs you have.
source manpages: curl