Linux 下基础命令(二)
1.1 解压缩命令介绍
Linux 下最常用的打包程序是 tar 命令,使用 tar 打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以.tar 结尾的,生成 tar 包后,就可以用其它的程序来进行压缩了。
1.1.1 tar 命令介绍
功能:tar 是一个压缩解压工具。利用 tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux 上的 tar 是 GNU 版本的。
语法:tar [主选项+辅选项] <目标文档> <源文件或者目录>
使用该命令时,主选项是必须要有的,它告诉 tar 要做什么事情,辅选项是辅助使用的,可以选用。
参数:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。
注意:c/x/t 仅能存在一个!不可同时存在!
辅助选项:
b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为 20(20*512 bytes)。
f 使用档案文件或设备,这个选项通常是必选的。请留意,在 f 之后要立即接档名喔!不要再加参数!
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告 tar 处理的文件信息。如无此选项,tar 不报告文件信息。
w 每一步都要求确认。
z 用 gzip 来压缩/解压缩文件,后缀名为.gz,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
j 用 bzip2 来压缩/解压缩文件,后缀名为.bz2,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
1.1.2 tar 命令解压/压缩使用范例
(1) 将/test 目录下的所有文件打包为 test.tar 文件。
注意:如果打包的文件或者目录是绝对路径,可能会出现提示:tar: 从成员名中删除开头的“/”
在参数中加上-P 即可消除。
示例:
(2) 解压打包的.tar 文件
(3) 更新文件
就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
(4) 列出已经打包的文件,可以用于查看已经备份了哪些文件。
(5) 使用 gzip 来压缩/解压缩文件
(6) 使用 bzip2 来压缩/解压缩文件
1.1.3 ZIP 格式压缩/解压
linux 下提供了 zip 和 unzip 程序对 ZIP 格式压缩包进行处理,zip 是压缩程序,unzip 是解压程序。它们的参数选项很多,下面只做简单介绍。
(1) 将所有.jpg 的文件压缩成一个 zip 包
(2) 将 all.zip 中的所有文件解压出来
常用参数:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理。
(3) 压缩指定目录下的所有文件
1.2 磁盘操作相关命令介绍
1.2.1 fdisk 命令:磁盘分区
Linux 下的 fdisk 功能是极其强大的,用它可以划分出最复杂的分区。
1 查看设备的详细信息。# fdisk -l
在 console 上输入 fdisk/dev/sda,可进入分割硬盘模式。
1 输入 m 显示所有命令列示。
2 输入 p 显示硬盘分割情形。
3 输入 a 设定硬盘启动区。
4 输入 n 设定新的硬盘分割区。
a) 输入 e 硬盘为[延伸]分割区(extend)。
b) 输入 p 硬盘为[主要]分割区(primary)。
5 输入 t 改变硬盘分割区属性。
6 输入 d 删除硬盘分割区属性。
7 输入 q 结束不存入硬盘分割区属性。
8 输入 w 结束并写入硬盘分割区属性。
1.2.2 dd 命令:磁盘备份命令
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是将一个指定文件拷贝到磁盘的指定块。可以用于磁盘备份、程序烧写等应用。
基本语法: dd iflag=dsync oflag=dsync if=<输入文件> of=<输出的文件> seek=<跳过的块数量>
dd 命令的主要选项:
注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512 ,k=1024
运用实例
修复硬盘
当硬盘较长时间(比如 1,2 年)放置不使用后,磁盘上会产生 magnetic flux point(磁通点)。当磁头读到这些区域时会遇到困难,并可能导致 I/O 错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。
清除磁盘数据
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/sdb 将无法挂载,创建和拷贝操作无法执行。 其中的/dev/urandom 是产生随机数的文件。
也可以直接获取随机数据:
其中 bs 表示每一个块的大小是 1024kb。count 就表示块数量。 加起来就会拷贝(1024*2)kb 的数据。
磁盘备份
将磁盘数据备份到当前目录的 disk.img 文件。备份之后可以使用压缩软件打开。如果需要恢复直接将参数变换个位置。
\
从光盘拷贝 iso 镜像
拷贝光盘数据到 root 文件夹下,并保存为 cd.iso 文件。
程序烧写
将 123.bin 文件拷贝到/dev/sdb 设备中,seek 表示跳过 1057 个块之后再进行拷贝。
1.2.3 mount 命令:挂载硬盘或镜像
mount 命令用于挂载磁盘分区或者网络文件系统。
语法:mount -t [文件系统类型] [将要挂载的设备] [-o 选项] [挂载的目标目录]
注: 通过-t 这个参数,我们来指定文件系统的类型,一般的情况下不指定也能自动识加。-t 后面跟 ext3 、ext2 、reiserfs、vfat 、ntfs、nfs 等;可以通过查看 mount 的帮助文档进行查看详细信息。
-o 主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
运用实例
(1) 挂载 SD 卡分区到指定目录
将 sdb2 设备挂载到/test 目录下。
如果挂载之后需要取消,可以使用 umount 命令。
(2) 挂载光盘映像文件到指定目录
将 123.iso 文件当成硬盘挂载到/test 目录下。
(3) 将一个目录挂载到另一个目录下
相当于使用 ln 建立链接一样效果。
(4) 使用 mount 命令挂载 NFS 网络文件系统
如果挂载提示设备资源上锁,可以使用下面方式进行挂载:
其中 192.168.11.123 表示服务器的 IP 地址,/work 表示 NFS 服务器共享的目录。/test/表示本地挂载的目录。
搭建 NFS 服务器方法
(1) 首先设置将要共享的路径。编辑/etc/exports 文件,示例:
(2) 重启 NFS 服务器
1.3 文件搜索与修改
1.3.1 find 命令:搜索文件
命令功能:用于在文件树种查找文件,并作出相应的处理。
语法:find [查找的路径] [选项] [表达式]
命令选项
使用实例
(1) 根据文件名查找文件
在/work 目录下查找名称为 123.c 的文件。
(2) 根据通配符进行查找文件
在/work 目录下查找以.c 为后缀的文件。注意:该查找方式区分大小写。
不区分大小写的方式:
(3) 同时查找多个文件
在/work 目录下查找以.c、.txt、.h 为后缀的文件。 主要参数是-o。
(4) 匹配路径或者文件
在/work 目录下查找包含 mplayer 字符的文件和目录。
(5) 根据正则表达式查找
(6) 否定参数
在/work 目录下查找不是以.c 为后缀的文件。
(7) 根据文件类型搜索
在/work 目录下查找类型为 f 的普通文件。
常用的类型:f 普通文件、 l 符号连接、 d 目录、 c 字符设备、 b 块设备、 s 套接字、 p Fifo 管道文件
(8) 根据文件大小进行匹配
在/work 目录下查找类型为 f 的普通文件,并且文件的大小为 200k。
文件大小单元:
b —— 块(512 字节)
c —— 字节
w —— 字(2 字节)
k —— K 字节
M —— 兆字节
G —— G 字节
常用大小搜索方式:
(9) 根据文件时间戳进行搜索
UNIX/Linux 文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
(10) 查找并删除指定文件
在 work 目录下查找以.c 为后缀的文件,并将其删除。
(11) 根据权限进行查找
在/work 目录下搜索出权限为 777 的文件。
借助-exec 选项与其他命令结合使用
(1) 查找并删除指定的文件
在 work 目录下查找以.txt 为后缀的文件,将其全部删除。
其中-ok 和-exec 行为一样,不过-ok 会给出提示,是否执行相应的操作,而-exec 不会提示,直接执行。
{} 用于与-exec 和-ok 选项结合使用来匹配所有文件。
(2) 查找并拷贝文件
在 work 目录下查找以.txt 为后缀的文件,将其全部拷贝到/opt 目录下。
(3) 执行多条命令的方法
因为单行命令中-exec 参数中无法使用多个命令,我们可以将命令写成脚本,然后使用-exec 进行调用。
{}是匹配所有文件,传递给脚本之后,在脚本中使用 $1 获取传入的参数信息。
脚本文件中的代码示例: echo $1
1.3.2 grep 命令:文本搜索工具
Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
语法:grep [选项] [文件]
主要选项:
pattern 正则表达式主要参数:
使用实例
(1) 搜索文本并添加文本
在/work/test.txt 文件中搜索 12345 这个字符串数据,如果有就不执行||后面的代码,如果没有,就执行||后面的代码。-q 在这里是将 grep 变为类似于 if 的效果。
(2) 同时搜索多个文件
在 work 目录下以.c 后缀的文件中搜索 A 这个数据,如果搜索成功,会将 A 出现的行打印到屏幕上。
(3) 搜索输出行与行号
在 123.c 文件中搜索 data 数据,搜索成功后将 data 所在的行与行号全部打印出来。
(4) 大小写敏感
输出所有含有 data 或 DAT 的字符串的行。
1.3.3 sed 命令:在线编辑器
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
Sed 本质上是一个编辑器,但是它是非交互式的,这点与 VIM 不同;同时它又是面向字符流的,输入的字符流经过 Sed 的处理后输出。这两个特性使得 Sed 成为命令行下面非常有用的一个处理工具。
sed 的处理流程,简化后是这样的:
a) 读入新的一行内容到缓存空间;
b) 从指定的操作指令中取出第一条指令,判断是否匹配 pattern;
c) 如果不匹配,则忽略后续的编辑命令,回到第 2 步继续取出下一条指令;
d) 如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第 2 步继续取出下一条指令;
e) 当所有指令都应用之后,输出缓存行的内容;回到第 1 步继续读入下一行内容;
f) 当所有行都处理完之后,结束;
语法:
sed [-hnV][-e<script>][-f<script 文件>][文本文件]
参数说明:
-e<script>或--expression=<script> 以选项中指定的 script 来处理输入的文本文件。
-f<script 文件>或--file=<script 文件> 以选项中指定的 script 文件来处理输入的文本文件。
-h 或--help 显示帮助。
-n 或--quiet 或--silent 仅显示 script 处理后的结果。
-V 或--version 显示版本信息。
动作说明:
元字符集
\
运行实例
(1) 删除指定行
删除 123.c 文件的第 2 行。其中 d 表示删除命令,2 表示行号。123.c 是处理的文件。修改成功会将结果打印到终端。注意:以上代码修改是不会改变源文件的代码。
直接修改源文件示例:
(2) 替换指定的数据
将 123.c 文件中全部的 std 字符替换为 inc 字符。如果没有 g 标记,则只有每行第一个匹配的 std 被替换成 inc。
(3) 查找并追加数据
将 123.c 文件中 192.168.1.1 数据的后面加上:8080。替换之后的效果为: 192.168.1.1:8080
&符号表示替换换字符串中被找到的部份。
(4) #号分隔符
“#”在这里表示是分隔符,代替了默认的“/”分隔符。表示把所有 1234 替换成 5678。
(5) 替换所有文件
将当前目录下所有以.c 为后缀文件中的 8080 替换为 88888。这样可以大大提高我们的工作效率。
1.3.4 awk 命令:文本分析工具
awk 是一个强大的文本分析工具,相对于 grep 的查找,sed 的编辑,awk 在其对数据分析并生成报告时,显得尤为强大。简单来说 awk 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk 有 3 个不同版本: awk、nawk 和 gawk,未作特别说明,一般指 gawk,gawk 是 AWK 的 GNU 版本。
AWK 拥有自己的语言: AWK 程序设计语言。它允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
语法:awk '{pattern + action}' {filenames}
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern 就是要表示的正则表达式,用斜杠括起来。
awk 语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk 抽取信息后,才能进行其他文本操作。完整的 awk 脚本通常用来格式化文本文件中的信息。
通常,awk 是以文件的一行为处理单位的。awk 每接收文件的一行,然后执行相应的命令,来处理文本。
\
1.4 网络相关命令介绍
1.4.1 ifconfig 命令:设置网卡 IP 地址
功能
ifconfig 用于查看和更改网络接口的地址和参数,包括 IP 地址、网络掩码、广播地址,使用权限是超级用户。
语法:fconfig -interface [options] address
主要参数
应用说明
ifconfig 是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给 eth0 接口 IP 地址 207.164.186.2,并且马上激活它,使用下面命令:
该命令的作用是设置网卡 eth0 的 IP 地址、网络掩码和网络的本地广播地址。若运行不带任何参数的 ifconfig 命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用 ifconfig 命令配置的网络设备参数,机器重新启动以后将会丢失。
(1) 查看网卡的 IP 地址信息
(2) 关闭与启动网卡
(4) 修改网卡 MAC 地址
(5) 在一张网卡上绑定多个 IP 地址
在 Linux 下,可以使用 ifconfig 方便地绑定多个 IP 地址到一张网卡。
例如,eth0 接口的原有 IP 地址为 192.168.0 .254,可以执行下面命令:
\
1.4.2 ping 命令
功能:ping 检测主机网络接口状态,使用权限是所有用户。
语法:ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP 地址
主要参数
ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用 ICMP 协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法 ping 通,这是因为一些网站处于安全考虑安装了防火墙。
使用实例
1.4.3 网卡启动与关闭
除了使用 ifconfig 配置之外,也可以使用 ifup、ifdown 命令来实现。
1.4.4 关闭防火墙
在红帽系统中,可以直接使用 setup 命令关闭防火墙。
通过命令方式关闭防火墙:
版权声明: 本文为 InfoQ 作者【DS小龙哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ffe9c26ee1c9f4f8a1244511】。文章转载请联系作者。
评论