bzip2
bzip2的常用选项:
-k(keep) 在压缩或解压时,保留输入文件; -d(decompress) 将压缩文件进行解压缩;
1) 压缩文件
$ bzip2 -k mypwd.1 得到一个.bz2后缀的压缩文。
2) 解压文件
$ bzip2 -kd mypwd.1.bz2
注意:
1)如果bzip2不加任何选项,此时为压缩
压缩完该文件会生成后缀为.bz2的压缩文件, 并删除原来的文件。
所以说,推荐使用bzip2 -k 来压缩文件,这样可以保留原来的文件。
2)bzip2只能压缩单个文件,不能压缩目录。
单个文件的压缩使用gzip或bzip2, 压缩有两个参数:
1)压缩时间
2)压缩比。
一般情况下,小文件使用gzip来压缩,大文件使用bzip2来压缩。bzip2的的压缩率更高。
tar
tar常用选项:
-c(create):表示创建用来生成文件包 。 -x:表示提取,从文件包中提取文件。 -t:可以查看压缩的文件。 -z:使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。 -j:使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。 -v(verbose):详细报告tar处理的信息。 -f(file):表示文件,后面接着一个文件名。 -C <指定目录> 解压到指定目录。
例1:tar打包、gzip压缩
1)把目录dira压缩、打包为dira.tar.gz文件:
$ tar czvf 压缩文件名 目录名 $ tar czvf dira.tar.gz dira
注意:“tar –czvf”与“tar czvf”是一样的效果,所以说,后面统一取消“-”。
2)查看压缩文件:
$ tar tvf dira.tar.gz
3) 解压文件,可以用-C 指定解压到哪个目录:
$ tar xzvf dira.tar.gz //解压到当前目录 $ tar xzvf dira.tar.gz -C /home/book //解压到/home/book。
例2:tar打包、bzip2压缩
1)把目录dira压缩、打包为dira.tar.bz2文件
$ tar cjvf dira.tar.bz2 dira
2)查看压缩文件
$ tar tvf dira.tar.bz2
3)解压文件,可以用-C 指定解压到哪个目录
$ tar xjvf dira.tar.bz2 //解压到当前目录: $ tar xjvf dira.tar.bz2 -C /home/book //解压到/home/book
3.3.6 网络命令
ifconfig
查看网络、设置IP。ifconfig常用选项:
-a :显示所有网卡接口
up:激活网卡接口
down:关闭网卡接口
address:xxx.xxx.xxx.xxx,IP地址
示例:
1)ifconfig:查看当前正在使用的网卡
$ ifconfig ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.137 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::4f45:59fb:ddb7:c274 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ab:1d:05 txqueuelen 1000 (Ethernet) RX packets 998794 bytes 176687882 (176.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 801210 bytes 138020387 (138.0 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2)ifconfig -a:查看所有网卡
$ ifconfig -a ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.137 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::4f45:59fb:ddb7:c274 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ab:1d:05 txqueuelen 1000 (Ethernet) RX packets 998889 bytes 176699569 (176.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 801287 bytes 138033739 (138.0 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=8<LOOPBACK> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 51460 bytes 3249553 (3.2 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 51460 bytes 3249553 (3.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3)设置网IP:
$ sudo ifconfig ens160 192.168.1.137
route和DNS
确保Windows和Ubuntu的网络能互相ping通之后,如果Ubuntu无法上网,原因通常有2个:路由没设置好,DNS没设置好。
如果执行以下命令不成功,表示路由没设置好:
$ ping 8.8.8.8 connect: Network is unreachable
如果“ping 8.8.8.8”成功,但是“ping www.baidu.com”不成功,则是DNS没设置好:
$ ping www.baidu.com ping: unknown host www.baidu.com
DNS的设置比较简单,8.8.8.8是好记好用的DNS服务器,修改Ubuntu中的/etc/resolv.conf文件,内容如下:
nameserver 8.8.8.8
路由信息使用route命令查看,其输出信息可以参考链接:
https://akaedu.github.io/book/ch36s05.html
摘录如下:
假设某主机上的网络接口配置和路由表如下:
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:7E inet addr:192.168.10.223 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:420 (420.0 b) Interrupt:10 Base address:0x10a0 eth1 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:88 inet addr:192.168.56.136 Bcast:192.168.56.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:603 errors:0 dropped:0 overruns:0 frame:0 TX packets:110 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:55551 (54.2 Kb) TX bytes:7601 (7.4 Kb) Interrupt:9 Base address:0x10c0 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:37 errors:0 dropped:0 overruns:0 frame:0 TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3020 (2.9 Kb) TX bytes:3020 (2.9 Kb) $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 * 255.255.255.0 U 0 0 0 eth0 192.168.56.0 * 255.255.255.0 U 0 0 0 eth1 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
上述route命令输出信息中各项的含义请看下表:
Destination 目标网段或者主机 Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。一些可能的标记如下: U - 路由是活动的 H - 目标是一个主机 G - 路由指向网关 R - 恢复动态路由产生的表项 D - 由路由的后台程序动态地安装 M - 由路由的后台程序修改 ! - 拒绝路由 Metric 路由距离,到达指定网络所需的中转数 Ref 路由项引用次数 Use 此路由项被路由软件查找的次数 Iface 该路由表项对应的输出接口
在上面的例子中,这台主机有两个网络接口:
① 一个网络接口连到192.168.10.0/24网络 ② 另一个网络接口连到192.168.56.0/24网络。
如果要发送的数据包的目的地址是192.168.56.3,跟第一行的子网掩码做与运算得到192.168.56.0,与第一行的目的网络地址不符,再跟第二行的子网掩码做与运算得到192.168.56.0,正是第二行的目的网络地址,因此从eth1接口发送出去,由于192.168.56.0/24正是与eth1接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发。
如果要发送的数据包的目的地址是202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由条目,从eth0接口发出去,首先发往192.168.10.1路由器,再让路由器根据它的路由表决定下一跳地址。
可以使用route命令管理路由。
示例:
1)添加路由:首先得确定网关IP,假设为192.168.1.1
$ sudo route add default gw 192.168.1.1 $ ping 8.8.8.8 // 验证 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=19.8 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=19.8 ms
2)删除路由:
$ sudo route del default gw 192.168.1.1
3.3.7 vi编辑器
vi是一个命令,也是一个命令行下的编辑器,它有如下功能:
a. 打开文件、新建文件、保存文件
b. 光标移动
c. 文本编辑
d. (多行间|多列间)复制、粘贴、删除
e. 查找和替换
很多人不习惯在命令行下编辑文件,实际开发中也不会经常在命令行下编辑文件。但是在Linux系统中对文件做些简单修改时,使用vi命令的效率非常高。并且在很多时候,比如现场调试时,并没有GUI形式的编辑工具,vi是唯一选择。
模式
vi编辑器有三种模式,各个模式侧重点不一样:
a. 一般模式(光标移动、复制、粘贴、删除)
b. 编辑模式(编辑文本)
c. 命令行模式(查找和替换)
vi编辑器的三种模式间切换如下图所示
注意:
a. 当不知道处于何种模式时,按ESC键返回到一般模式。
b. wq(write quit)
c. i(insert)
文件的打开、新建、保存
打开文件、新建文件,命令如下(如果文件存在则打开文件,否则新建文件并打开):
$ vi 文件名
修改结束之后,输入“:” 进入命令行模式,再输入“wq”保存退出:
:wq 保存并退出文件
注意:如果文件不存在,也需要输入“:wq”才可以保存新文件,否则不会新建文件。
在编辑完成时,返回一般模式,方法如下:
a. 输入“:w”则保存文件,如果已经保存文件,输入“:q”则退出文件
b. 直接输入“:wq”保存并退出
c. 如果不想保存被修改的内容,则输入“:q!”强制退出。
这些命令列表如下:
命令 描述
x 保存当前文档并且退出。
q 退出。
w 保存文档 。
q! 退出 vi/vim,不保存文档。
编辑文件
打开文件后,默认处于“一般模式”,这时可以输入以下字母:
指令 描述
i 在当前光标所在字符的前面,转为编辑模式。
I 在当前光标所在行的行首转换为编辑模式。
a 在当前光标所在字符的后面,转为编辑模式。
A 在光标所在行的行尾,转换为编辑模式。
o 在当前光标所在行的下方,新建一行,并转为编辑模式。
O 在当前光标所在行的上方,新建一行,并转为编辑模式。