ftp网站程序-Linux下curl命令下载文件

# curl -D cookied.txt http://www.linux.com

复制

执行后,cookie信息存储在cookied.txt中

注意:-c(小写)生成的cookie与上面-D生成的cookie不同。

5.3:使用cookie 许多网站都会监控您的cookie信息,以确定您是否按要求访问过他们的网站ftp网站程序,因此我们需要使用保存的cookie信息。 内置选项:-b

# curl -b cookiec.txt http://www.linux.com

复制

6、模拟浏览器 有些网站需要使用特定的浏览器才能访问ftp网站程序,有些还需要使用个别特定的版本。 Curl外部选项:-A允许我们指定浏览器访问网站

# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com

复制

这样服务器就会认为是使用IE8.0访问的

7、假referer(盗链) 很多服务器都会检测http访问的referer来控制访问。 例如:您先访问主页,然后访问主页上的电子邮件页面。 这里访问邮件的Referer地址就是成功访问首页后的页面地址。 如果服务器发现邮件页面访问的referer地址不是主页的地址,就会判断是curl中被盗的外部选项:-e允许我们设置referer

# curl -e "www.linux.com" http://mail.linux.com

复制

这将使服务器认为您来自点击链接

8、下载文件 8.1:使用curl下载文件。 #使用外部选项:-o(小写)

# curl -o dodo1.jpg http:www.linux.com/dodo1.JPG

复制

#使用外部选项:-O(大写)

# curl -O http://www.linux.com/dodo1.JPG

复制

这将使用服务器上的名称将文件保存在本地

8.2:循环下载有时下载的图片可能后面部分同名,但最后尾部名称不同

# curl -O http://www.linux.com/dodo[1-5].JPG

复制

这样,dodo1、dodo2、dodo3、dodo4、dodo5都会被保存下来

8.3: 下载重命名

# curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG

复制

因为下载的hello和bb中的文件名分别是dodo1、dodo2、dodo3、dodo4、dodo5。 因此,第二次下载会覆盖第一次下载,因此需要重命名该文件。

# curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG

复制

这样,hello/dodo1.JPG中下载的文件就会变成hello_dodo1.JPG,其他文件以此类推,从而有效防止文件被覆盖

8.4:分块下载 有时下载的东西会比较大。 这时候我们就可以分段下载了。 使用外部选项:-r

# curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
# curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
# curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
# cat dodo1_part* > dodo1.JPG

复制

这样就可以查看dodo1.JPG的内容

8.5:通过ftp下载文件curl可以通过ftp下载文件,curl提供两种从ftp下载的句型

# curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
# curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG

复制

8.6:显示下载进度条

# curl -# -O http://www.linux.com/dodo1.JPG

复制

8.7:不会显示下载进度信息

# curl -s -O http://www.linux.com/dodo1.JPG

复制

9、断点续传 在Windows中,我们可以使用迅雷等软件来断点续传。 Curl也可以通过外部选项:-C来达到同样的疗效。 如果在下载dodo1.JPG的过程中机器突然死机,可以使用下面的形式继续下载

# curl -C -O http://www.linux.com/dodo1.JPG

复制

10、上传文件curl不仅可以下载文件,还可以上传文件。通过外部选项实现:-T

# curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/

复制

这会将文件 dodo1.JPG 上传到 ftp 服务器

11.显示抓取错误

# curl -f http://www.linux.com/error

复制

了解 sed 的基础知识,然后下载我们的备忘单,以快速轻松地参考 Linux 流编辑器。

很少有 Unix 命令像 sed、grep 和 awk 这样出名网站程序复制,它们经常被组合在一起,可能是因为它们奇怪的名称和强大的文本解析功能。 它们在句子结构和逻辑上也有一些相似之处。 虽然它们都可以用于文本解析,但它们都有其特殊性。 本文研究 sed 命令,它是一个流编辑器。

我之前写过关于 sed 及其远亲 ed 的文章。 要熟悉 sed,了解一点 ed 知识会有所帮助,因为它可以帮助您熟悉缓冲区的概念。 本文假设您熟悉 sed 的基础知识,这意味着您至少已经运行过经典的 s/foo/bar 风格的查找和替换命令。

安装 sed

如果您使用的是 Linux、BSD 或 macOS,那么它们已经安装了 GNU 或 BSD 的 sed。 这些是原始 sed 命令的奇特重新实现。 尽管它们很相似,但还是有一些细微的差别。 本文已在 Linux 和 NetBSD 版本上进行了测试,因此您可以使用计算机上找到的任何 sed,但对于 BSD sed,您必须使用短选项(例如 -n 而不是 --quiet)。

GNU sed 通常被认为是功能最丰富的 sed,因此无论您是否运行 Linux,您都可能想尝试一下。 如果您在 Ports 树中找不到 GNU sed(在非 Linux 系统上通常称为 gsed),您可以从 GNU 网站下载源代码。 安装 GNU sed 的好处是你可以使用它的额外功能,但如果你需要可移植性,你也可以限制它违反 sed 的 POSIX 规范。

MacOS 用户可以在 MacPorts 或 Homebrew 上找到 GNU sed。

在 Windows 上,您可以通过 Chocolatey 安装 GNU sed。

了解模式空间和保留空间

sed 一次只能处理一行。 由于它没有视觉模式,因此会创建一个模式空间,它是视频内存中的一个空间,其中包含输入流中的当前行(删除了所有尾随换行符)。 填充模式空间后,sed 将执行您的指令。 当命令完成执行时,sed 将模式空间的内容复制到输出流,默认情况下是标准输出,但可以使用 --in- 将输出重定向到文件,甚至重定向到同一个文件place=.bak 选项。

然后,循环再次从下一个输入行开始。

为了在遍历文件时提供一点灵活性,sed 还提供了一个保留空间(有时称为保留缓冲区),即 sed 内存中保留用于临时数据存储的空间。 您可以将保留空间视为剪贴板,事实上,这就是本文演示的内容:如何使用 sed 进行复制/剪切和粘贴。

首先,创建一个包含以下内容的示例文本文件:

Line one
Line three
Line two

将数据复制到保留空间

要将内容放入 sed 的保留空间,请使用 h 或 H 命令。 小写的 h 告诉 sed 覆盖当前保留空间中的内容,而小写 H 则告诉 sed 将数据附加到保留空间中已有的内容。

单独使用网站程序复制,什么也看不到:

$ sed --quiet -e '/three/ h' example.txt
$

--quiet(缩写为 -n)选项严格抑制所有输出,但 sed 执行了我的搜索需求。 在这些情况下,sed 选择包含字符串 3 的任何行并将其复制到保留空间中。 我没有告诉 sed 打印任何内容,因此没有输出。

从保留空间复制数据

要了解保留空间,您可以从保留空间复制内容,然后使用 g 命令将其转储到模式空间,然后看看会发生什么:

$ sed -n -e '/three/h' -e 'g;p' example.txt
Line three
Line three

第一个空行是因为当 sed 第一次将内容复制到模式空间时,保留空间是空的。

ftp网站程序-Linux下curl命令下载文件

接下来的两行包含第三行,因为这是第二行的保留空间。

该命令使用两个独特的脚本 (-e) 纯粹是为了提高可读性和组织性。 将步骤分隔为单独的脚本可能很有用,但从技术上讲,以下命令与一个脚本句子一样有效:

$ sed -n -e '/three/h ; g ; p' example.txt
Line three
Line three

将数据附加到模式空间

G命令会将换行符和保留空间的内容添加到模式空间中。

$ sed -n -e '/three/h' -e 'G;p' example.txt
Line one
Line three
Line three
Line two
Line three

该输出的前两行包含模式空间(第一行)的内容和一个空的保持空间。 接下来的两行与搜索文本(三)匹配,因此它包含模式空间和保留空间。 第三行的保留空间没有改变,因此模式空间(第二行)的末尾是保留空间(仍然是第三行)。

使用 sed 剪切和粘贴

ftp网站程序-Linux下curl命令下载文件

现在您已经知道如何将字符串从模式空间移动到保留空间并再次返回,您可以设计一个 sed 脚本来复制、删除和粘贴文档中的行。 例如,将示例文件的第三行移动到第三行,sed可以解决这个问题:

$ sed -n -e '/three/ h' -e '/three/ d' 
-e '/two/ G;p' example.txt
Line one
Line two
Line three

任务完成。

使用 sed 编写脚本

再次强调,使用单独的脚本句子纯粹是为了视觉和心理上的简单性。 剪切和粘贴命令也可以作为脚本使用:

$ sed -n -e '/three/ h ; /three/ d ; /two/ G ; p' example.txt
Line one
Line two
Line three

它甚至可以写在专用的脚本文件中:

#!/usr/bin/sed -nf
/three/h
/three/d
/two/ G
p

ftp网站程序-Linux下curl命令下载文件

要运行该脚本,请将其设为可执行,然后使用示例文件进行尝试:

$ chmod +x myscript.sed
$ ./myscript.sed example.txt
Line one
Line two
Line three

当然,您需要解析的文本越可预测,使用 sed 解决问题就越容易。 为 sed 操作(例如复制和粘贴)发明“配方”通常是不切实际的,因为触发操作的条件可能因文件而异。 但是,您对 sed 命令越熟练,就越容易根据需要解析的输入设计复杂的操作。

重要的是识别不同的操作,知道 sed 何时移动到下一行,并预测模式和保留空间包含的内容。

下载备忘单

sed 很复杂。 虽然它只有十几个命令,但其灵活的语法和本机功能意味着它具有无限的潜力。 为了充分利用 sed,我之前参考过一些简洁的俏皮话,但直到我开始发明(有时是重新发明)自己的解决方案时,我才觉得自己真正在学习 sed。 如果您正在寻找有关命令提示符和语法的有用提示,请下载我们的 sed 备忘单并开始一劳永逸地学习 sed!

通过:

作者:Seth Kenlon 题目:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux China Honor 首发

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 ftp网站程序-Linux下curl命令下载文件 https://www.wkzy.net/game/136022.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务