dhclient

动态获取或释放IP地址

补充说明

dhclient命令 使用动态主机配置协议动态的配置网络接口的网络参数。

语法

1
dhclient(选项)(参数)

选项

1
2
3
4
0:指定dhcp客户端监听的端口号;
-d:总是以前台方式运行程序;
-q:安静模式,不打印任何错误的提示信息;
-r:释放ip地址。

参数

网络接口:操作的网络接口。

实例

1
2
dhclient -r     #释放IP
dhclient #获取IP

df

显示磁盘的相关信息

补充说明

df命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法

1
df(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。

参数

文件:指定文件系统上的文件。

大小格式

显示值以 --block-sizeDF_BLOCK_SIZEBLOCK_SIZEBLOCKSIZE 环境变量中的第一个可用 SIZE 为单位。 否则,单位默认为 1024 个字节(如果设置 POSIXLY_CORRECT,则为512)。

SIZE是一个整数和可选单位(例如:10M是10 1024 1024)。 单位是K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB,…(1000的幂)。

实例

查看系统磁盘设备,默认是KB为单位:

1
2
3
4
5
6
[root@LinServ-1 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
/dev/sda1 1019208 62360 904240 7% /boot
tmpfs 1032204 0 1032204 0% /dev/shm
/dev/sdb1 2884284108 218826068 2518944764 8% /data1

使用-h选项以KB以上的单位来显示,可读性高:

1
2
3
4
5
6
[root@LinServ-1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 140G 27G 106G 21% /
/dev/sda1 996M 61M 884M 7% /boot
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sdb1 2.7T 209G 2.4T 8% /data1

查看全部文件系统:

1
2
3
4
5
6
7
8
9
10
[root@LinServ-1 ~]# df -a
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
/dev/sda1 1019208 62360 904240 7% /boot
tmpfs 1032204 0 1032204 0% /dev/shm
/dev/sdb1 2884284108 218826068 2518944764 8% /data1
none 0 0 0 - /proc/sys/fs/binfmt_misc

显示 public 目录中的可用空间量,如以下输出中所示:

1
2
3
df public
# Filesystem 1K-blocks Used Available Use% Mounted on
# /dev/loop0 18761008 15246924 2554392 86% /d Avail

depmod

分析可载入模块的相依性

补充说明

depmod命令 可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。

语法

1
depmod(选项)

选项

1
2
3
4
5
6
7
8
9
-a或--all:分析所有可用的模块;
-d或debug:执行排错模式;
-e:输出无法参照的符号;
-i:不检查符号表的版本;
-m<文件>或system-map<文件>:使用指定的符号表文件;
-s或--system-log:在系统记录中记录错误;
-v或--verbose:执行时显示详细的信息;
-V或--version:显示版本信息;
--help:显示帮助。

实例

1
depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a
  • /home/windsome/EMMA3PF-KernelSource-20080626/install_pos是我make mod_install后,所有模块的存放路径。
  • ./boot/System.mapmake linux后生成,我拷贝到此目录的。
  • 2.6.18_pro500-bcm91250-mips2_fp_be是我build的linux的版本。

编译linux过程及执行depmod的例子:

1
2
3
4
5
6
7
8
9
10
11
12
genkernel.sh (at linux-2.6.18_pro500)
#######
export INSTALL_ROOT_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos"
export INSTALL_MOD_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos"
rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/lib -rf
rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/* -rf
cd <linux_src_dir>
make
make modules_install
cp vmlinux System.map /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/ -p
cd /home/windsome/EMMA3PF-KernelSource-20080626/install_pos
depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a

其他用法:

在linux桌面系统中,当你编译了新的驱动,为了能够用modprobe ***加载模块, 你需要先将模块拷贝到/lib/modules /2.6.31-20-generic目录下,然后运行sudo depmod -a将模块信息写入modules.dep、modules.dep.bin、modules.alias.bin、modules.alias和modules.pcimap文件中。

如,我编译了一个新的wifi驱动r8192se_pci.ko,将其拷贝到/lib/modules/2.6.31-20-generic/wireless下,然后到/lib/modules/2.6.31-20-generic运行depmod -a,之后可以在任意目录运行modprobe r8192se_pci。

declare

声明或显示shell变量

补充说明

declare命令 用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。

语法

1
declare(选项)(参数)

选项

1
2
3
4
5
+/-:"-"可用来指定变量的属性,"+"则是取消变量所设的属性;
-f:仅显示函数;
r:将变量设置为只读;
x:指定的变量会成为环境变量,可供shell以外的程序来使用;
i:[设置值]可以是数值,字符串或运算式。

参数

shell变量:声明shell变量,格式为“变量名=值”。

实例

首先使用declare命令定义shell变量”test”,并且将其值设置为”wangchujiang.com”,输入如下命令:

1
declare test='wangchujiang.com'    #定义并初始化shell变量

上面的命令执行后,再使用echo命令将该shell变量值输出,输入如下命令:

1
echo $test                        #输出shell变量的值

上面的指令执行后,其输出的结果如下:

1
wangchujiang.com

dd

复制文件并对原文件的内容进行转换和格式化处理

补充说明

dd命令 用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。

建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。

语法

1
dd(选项)

选项

1
2
3
4
5
6
7
8
9
10
11
bs=<字节数>:将ibs(输入)与obs(输出)设成指定的字节数;
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
count=<区块数>:仅读取指定的区块数;
ibs=<字节数>:每次读取的字节数;
obs=<字节数>:每次输出的字节数;
of=<文件>:输出到文件;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
--help:帮助;
--version:显示版本信息。

实例

1
2
3
4
5
6
7
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

[root@localhost text]# du -sh sun.txt
1.1M sun.txt

该命令创建了一个1M大小的文件sun.txt,其中参数解释:

  • if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。
  • of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。
  • bs 代表字节为单位的块大小。
  • count 代表被复制的块数。
  • /dev/zero 是一个字符设备,会不断返回0值字节(\0)。

块大小可以使用的计量单位表

单元大小 代码
字节(1B) c
字节(2B) w
块(512B) b
千字节(1024B) k
兆字节(1024KB) M
吉字节(1024MB) G

以上命令可以看出dd命令来测试内存操作速度:

1
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

生成随机字符串

我们甚至可以使用 /dev/urandom 设备配合 dd 命令 来获取随机字符串。

1
2
3
4
5
[root@localhost ~]# dd if=/dev/urandom bs=1 count=15|base64 -w 0
15+0 records in
15+0 records out
15 bytes (15 B) copied, 0.000111993 s, 134 kB/s
wFRAnlkXeBXmWs1MyGEs

date

显示或设置系统时间与日期

补充说明

date命令 是显示或设置系统时间与日期。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

语法

1
date(选项)(参数)

选项

1
2
3
4
5
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。

参数

<+时间日期格式>:指定显示时使用的日期时间格式。

日期格式字符串列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分(00~59)
%p 显示出上午或下午
%r 时间,12小时制
%s 从1970年1月1日0点到目前经历的秒数
%S 秒(00~59)
%T 时间(24小时制)(hh:mm:ss)
%X 显示时间的格式(%H时%M分%S秒)
%Z 按字母表排序的时区缩写
%a 星期名缩写
%A 星期名全称
%b 月名缩写
%B 月名全称
%c 日期和时间
%d 按月计的日期(01~31)
%D 日期(mm/dd/yy)
%h 和%b选项相同
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%x 显示日期的格式(mm/dd/yy)
%y 年份的最后两个数字(1999则是99)
%Y 年份(比如1970、1996等)
%C 世纪,通常为省略当前年份的后两位数字
%U 一年中的第几周,以周日为每星期第一天
%e 按月计的日期,添加空格,等于%_d

实例

格式化输出:

1
2
date +"%Y-%m-%d"
2009-12-07

输出昨天日期:

1
2
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

2秒后输出:

1
2
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

传说中的 1234567890 秒:

1
2
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

普通转格式:

1
2
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

apache格式转换:

1
2
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

格式转换后时间游走:

1
2
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37

加减操作:

1
2
3
4
5
6
7
date +%Y%m%d                   //显示前天年月日
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期

设定时间:

1
2
3
4
5
6
7
date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间

有时需要检查一组命令花费的时间,举例:

1
2
3
4
5
6
7
8
#!/bin/bash

start=$(date +%s)
nmap wangchujiang.com &> /dev/null

end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.

cut

连接文件并打印到标准输出设备上

补充说明

cut 命令 用来显示行中的指定部分,删除文件中指定字段。cut 经常用来显示文件的内容,类似于 type 命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数 file 所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件 fl 和 f2 的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件 f3 中。

当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用 more 等命令分屏显示。为了控制滚屏,可以按 Ctrl+S 键,停止滚屏;按 Ctrl+Q 键可以恢复滚屏。按 Ctrl+C(中断)键可以终止该命令的执行,并且返回 Shell 提示符状态。

语法

1
cut(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter= 字段分隔符:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。

参数

文件:指定要进行内容过滤的文件。

实例

例如有一个学生报表信息,包含 No、Name、Mark、Percent:

1
2
3
4
5
[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98

使用 -f 选项提取指定字段(这里的 f 参数可以简单记忆为 --fields的缩写):

1
2
3
4
5
[root@localhost text]# cut -f 1 test.txt
No
01
02
03
1
2
3
4
5
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68

–complement 选项提取指定字段之外的列(打印除了第二列之外的列):

1
2
3
4
5
[root@localhost text]# cut -f2 --complement test.txt
No Mark Percent
01 69 91
02 71 87
03 68 98

使用 -d 选项指定字段分隔符:

1
2
3
4
5
[root@localhost text]# cat test2.txt
No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98
1
2
3
4
5
[root@localhost text]# cut -f2 -d";" test2.txt
Name
tom
jack
alex

指定字段的字符或者字节范围

cut 命令可以将一串字符作为列来显示,字符字段的记法:

  • N- :从第 N 个字节、字符、字段到结尾;
  • N-M :从第 N 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段;
  • -M :从第 1 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段。

上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:

  • -b 表示字节;
  • -c 表示字符;
  • -f 表示定义字段。

示例

1
2
3
4
5
6
[root@localhost text]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

打印第 1 个到第 3 个字符:

1
2
3
4
5
6
[root@localhost text]# cut -c1-3 test.txt
abc
abc
abc
abc
abc

打印前 2 个字符:

1
2
3
4
5
6
[root@localhost text]# cut -c-2 test.txt
ab
ab
ab
ab
ab

打印从第 5 个字符开始到结尾:

1
2
3
4
5
6
[root@localhost text]# cut -c5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz

curl

利用URL规则在命令行下工作的文件传输工具

补充说明

curl命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

语法

1
curl(选项)(参数)

选项







































































































-a/–append上传文件时,附加到目标文件
-A/–user-agent 设置用户代理发送给服务器
-anyauth可以使用“任何”身份验证方法
-b/–cookie <name=string/file>cookie字符串或文件读取位置
–basic使用HTTP基本验证
-B/–use-ascii使用ASCII /文本传输
-c/–cookie-jar 操作结束后把cookie写入到这个文件中
-C/–continue-at 断点续传
-d/–data HTTP POST方式传送数据
–data-ascii 以ascii的方式post数据
–data-binary 以二进制的方式post数据
–negotiate使用HTTP身份验证
–digest使用数字身份验证
–disable-eprt禁止使用EPRT或LPRT
–disable-epsv禁止使用EPSV
-D/–dump-header 把header信息写入到该文件中
–egd-file 为随机数据(SSL)设置EGD socket路径
–tcp-nodelay使用TCP_NODELAY选项
-e/–referer来源网址
-E/–cert cert:[passwd]客户端证书文件和密码 (SSL)
–cert-type 证书文件类型 (DER/PEM/ENG) (SSL)
–key 私钥文件名 (SSL)
–key-type 私钥文件类型 (DER/PEM/ENG) (SSL)
–pass 私钥密码 (SSL)
–engine 加密引擎使用 (SSL). “–engine list” for list
–cacert CA证书 (SSL)
–capath CA目录 (made using c_rehash) to verify peer against (SSL)
–ciphers SSL密码
–compressed要求返回是压缩的形势 (using deflate or gzip)
–connect-timeout 设置最大请求时间
–create-dirs建立本地目录的目录层次结构
–crlf上传是把LF转变成CRLF
-f/–fail连接失败时不显示http错误
–ftp-create-dirs如果远程目录不存在,创建远程目录
–ftp-method [multicwd/nocwd/singlecwd]控制CWD的使用
–ftp-pasv使用 PASV/EPSV 代替端口
–ftp-skip-pasv-ip使用PASV的时候,忽略该IP地址
–ftp-ssl尝试用 SSL/TLS 来进行ftp数据传输
–ftp-ssl-reqd要求用 SSL/TLS 来进行ftp数据传输
-F/–form <name=content>模拟http表单提交数据
–form-string <name=string>模拟http表单提交数据
-g/–globoff禁用网址序列和范围使用{}和[]
-G/–get以get的方式来发送数据
-H/–header 自定义头信息传递给服务器
–ignore-content-length忽略的HTTP头信息的长度
-i/–include输出时包括protocol头信息
-I/–head只显示请求头信息
-j/–junk-session-cookies读取文件进忽略session cookie
–interface 使用指定网络接口/地址
–krb4 使用指定安全级别的krb4
-k/–insecure允许不使用证书到SSL站点
-K/–config指定的配置文件读取
-l/–list-only列出ftp目录下的文件名称
–limit-rate 设置传输速度
–local-port强制使用本地端口号
-m/–max-time 设置最大传输时间
–max-redirs 设置最大读取的目录数
–max-filesize 设置最大下载的文件总量
-M/–manual显示全手动
-n/–netrc从netrc文件中读取用户名和密码
–netrc-optional使用 .netrc 或者 URL来覆盖-n
–ntlm使用 HTTP NTLM 身份验证
-N/–no-buffer禁用缓冲输出
-o/–output把输出写到该文件中
-O/–remote-name把输出写到该文件中,保留远程文件的文件名
-p/–proxytunnel使用HTTP代理
–proxy-anyauth选择任一代理身份验证方法
–proxy-basic在代理上使用基本身份验证
–proxy-digest在代理上使用数字身份验证
–proxy-ntlm在代理上使用ntlm身份验证
-P/–ftp-port
使用端口地址,而不是使用PASV
-q作为第一个参数,关闭 .curlrc
-Q/–quote 文件传输前,发送命令到服务器
-r/–range 检索来自HTTP/1.1或FTP服务器字节范围
–range-file读取(SSL)的随机文件
-R/–remote-time在本地生成文件时,保留远程文件时间
–retry 传输出现问题时,重试的次数
–retry-delay 传输出现问题时,设置重试间隔时间
–retry-max-time 传输出现问题时,设置最大重试时间
-s/–silent静默模式。不输出任何东西
-S/–show-error显示错误
–socks4 <host[:port]>用socks4代理给定主机和端口
–socks5 <host[:port]>用socks5代理给定主机和端口
–stderr
-t/–telnet-option <OPT=val>Telnet选项设置
–trace 对指定文件进行debug
–trace-ascii Like –跟踪但没有hex输出
–trace-time跟踪/详细输出时,添加时间戳
-T/–upload-file 上传文件
–url Spet URL to work with
-u/–user <user[:password]>设置服务器的用户和密码
-U/–proxy-user <user[:password]>设置代理用户名和密码
-w/–write-out [format]什么输出完成后
-x/–proxy <host[:port]>在给定的端口上使用HTTP代理
-X/–request 指定什么命令
-y/–speed-time放弃限速所要的时间,默认为30
-Y/–speed-limit停止传输速度的限制,速度时间

实例

文件下载

curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用yum install curl安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。

1
curl URL --silent

这条命令是将下载文件输出到终端,所有下载的数据都被写入到stdout。

使用选项-O将下载的数据写入到文件,必须使用文件的绝对地址:

1
curl http://wangchujiang.com/text.iso --silent -O

选项-o将下载数据写入到指定名称的文件中,并使用--progress显示进度条:

1
2
curl http://wangchujiang.com/test.iso -o filename.iso --progress
######################################### 100.0%

断点续传

curl能够从特定的文件偏移处继续下载,它可以通过指定一个便宜量来下载部分文件:

1
2
3
4
curl URL/File -C 偏移量

#偏移量是以字节为单位的整数,如果让curl自动推断出正确的续传位置使用-C -:
curl -C -URL

使用curl设置参照页字符串

参照页是位于HTTP头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页A中的某个连接,那么用户就会跳转到B网页,网页B头部的参照页字符串就包含网页A的URL。

使用--referer选项指定参照页字符串:

1
curl --referer http://www.google.com http://wangchujiang.com

用curl设置cookies

使用--cookie "COKKIES"选项来指定cookie,多个cookie使用分号分隔:

1
curl http://wangchujiang.com --cookie "user=root;pass=123456"

将cookie另存为一个文件,使用--cookie-jar选项:

1
curl URL --cookie-jar cookie_file

用curl设置用户代理字符串

有些网站访问会提示只能使用IE浏览器来访问,这是因为这些网站设置了检查用户代理,可以使用curl把用户代理设置为IE,这样就可以访问了。使用--user-agent或者-A选项:

1
2
curl URL --user-agent "Mozilla/5.0"
curl URL -A "Mozilla/5.0"

其他HTTP头部信息也可以使用curl来发送,使用-H“头部信息” 传递多个头部信息,例如:

1
curl -H "Host:wangchujiang.com" -H "accept-language:zh-cn" URL

curl的带宽控制和下载配额

使用--limit-rate限制curl的下载速度:

1
curl URL --limit-rate 50k

命令中用k(千字节)和m(兆字节)指定下载速度限制。

使用--max-filesize指定可下载的最大文件大小:

1
curl URL --max-filesize bytes

如果文件大小超出限制,命令则返回一个非0退出码,如果命令正常则返回0。

用curl进行认证

使用curl选项 -u 可以完成HTTP或者FTP的认证,可以指定密码,也可以不指定密码在后续操作中输入密码:

1
2
curl -u user:pwd http://wangchujiang.com
curl -u user http://wangchujiang.com

只打印响应头部信息

通过-I或者-head可以只打印出HTTP头部信息:

1
2
3
4
5
6
7
8
[root@localhost text]# curl -I http://wangchujiang.com
HTTP/1.1 200 OK
Server: nginx/1.2.5
date: Mon, 10 Dec 2012 09:24:34 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: http://wangchujiang.com/xmlrpc.php

get请求

1
2
3
4
curl "http://www.wangchujiang.com"    # 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i "http://www.wangchujiang.com" # 显示全部信息
curl -l "http://www.wangchujiang.com" # 只显示头部信息
curl -v "http://www.wangchujiang.com" # 显示get请求全过程解析

post请求

1
curl -d "param1=value1&param2=value2" "http://www.wangchujiang.com"

json格式的post请求

1
curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://wangchujiang.com/apis/users.json

获取本机外网ip

1
curl ipecho.net/plain

cupsenable

启动指定的打印机

补充说明

cupsenable命令 用于启动指定的打印机。

语法

1
cupsenable(选项)(参数)

选项

1
2
3
4
-E:当连接到服务器时强制使用加密;
-U:指定连接服务器时使用的用户名;
-u:指定打印任务所属的用户;
-h:指定连接的服务器名和端口号;

参数

目标:指定目标打印机。

cupsdisable

停止指定的打印机

补充说明

cupsdisable命令 用于停止指定的打印机。

语法

1
cupsdisable(选项)(参数)

选项

1
2
3
4
5
6
-E:当连接到服务器时强制使用加密;
-U:指定连接服务器时使用的用户名;
-u:指定打印任务所属的用户;
-c:取消指定打印机的所有打印任务;
-h:指定连接的服务器名和端口号;
-r:停止打印机的原因。

参数

目标:指定目标打印机。