初识Linux及常用指令
Linux简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。
Linux特点:
大量的可用软件及免费软件
Linux 系统上有着大量的可用软件,且绝大多数是免费的,比如声名赫赫的 Apache、Samba、PHP、MySQL 等,
良好的可移植性及灵活注
Linux 系统有良好的可移植性,它几乎支持所有的 CPU 平台,这使得它便于裁剪和定制。我们可以把 Linux 放在 U 盘、光盘等存储介质中,也可以在嵌入式领域广泛应用。
优良的稳定性和安全性
Linux 开放源代码,将所有代码放在网上,全世界的程序员都看得到,有什么缺陷和漏洞,很快就会被发现,从而成就了它的稳定性和安全注。
支持几乎所有的网络协议及开发语言
Linux 支持 TCP/IP 协议,支持现现今主流的语言C 、PHP、Java、C++ 、python等
UNIX与Linux的关系
二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。
二者也有两个大的区别:
- UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
- UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。
常见Linux发行版本有哪些?
从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将 Linux 内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
Linux 的发行版本可以大体分为两类:
商业公司维护的发行版本,以著名的 Red Hat(红帽) 为代表;产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)。
社区组织维护的发行版本,以 Debian 为代表。产品有 Ubuntu 。
其他的一些发型版本
版本名称 | 网 址 | 特 点 | 软件包管理器 |
---|---|---|---|
Debian Linux | www.debian.org | 开放的开发模式,且易于进行软件包升级 | apt |
Fedora Core | www.redhat.com | 拥有数量庞人的用户,优秀的社区技术支持. 并且有许多创新 | up2date(rpm),yum (rpm) |
CentOS | www.centos.org | CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞 | rpm |
SUSE Linux | www.suse.com | 专业的操作系统,易用的 YaST 软件包管理系统 | YaST(rpm),第三方 apt (rpm)软件库(repository) |
Mandriva | www.mandriva.com | 操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持 NTFS 分区的大小变更 | rpm |
KNOPPIX | www.knoppix.com | 可以直接在 CD 上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用 | apt |
Gentoo Linux | www.gentoo.org | 高度的可定制性,使用手册完整 | portage |
Ubuntu | www.ubuntu.com | 优秀已用的桌面环境,基于 Debian 构建 | apt |
linux的重要的二级目录
bin:放Linux上常用的命令
dev:放设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下创建属于自己的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录,光盘自动挂载到media目录下
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录
常用的linux指令
命令的基本格式
[root@localhost ~]# 命令[选项][参数]
命令格式中的 [] 代表可选项,也就是有些命令可以不写选项或参数,也能执行。
ls
list,用于列举一个目录或者文件
a:所有的:列举包含隐藏文件
l:long list
ls -l = ll
示例:
不加选项和参数:
test@1:~/UA/3.0/shell$ ls
1 1.txt 2 test
加选项不加参数
test@1:~/UA/3.0/shell$ ls -l
total 8
-rw-rw-r-- 1 test test 0 Aug 18 23:53 1
-rw-rw-r-- 1 test test 14 Aug 19 02:10 1.txt
-rw-rw-r-- 1 test test 0 Aug 18 23:53 2
drwxrwxr-x 3 test test 4096 Aug 18 22:59 test
加选项和参数
test@1:~/UA/3.0/shell$ ls -l test/
total 4
drwxrwxr-x 3 test test 4096 Aug 18 22:54 1
-rw-rw-r-- 1 test test 0 Aug 19 02:12 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 3.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 6.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 t.txt
多个参数组合
test@1:~/UA/3.0/shell$ ls -lah test/
total 12K
drwxrwxr-x 3 test test 4.0K Aug 19 02:12 .
drwxrwxr-x 3 test test 4.0K Aug 19 02:09 ..
drwxrwxr-x 3 test test 4.0K Aug 18 22:54 1
-rw-rw-r-- 1 test test 0 Aug 19 02:12 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 3.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 6.txt
-rw-rw-r-- 1 test test 0 Aug 19 02:12 t.txt
pwd
Print Working Directory (打印工作目录)的缩写,功能是显示用户当前所处的工作目录
test@1:~/UA/3.0/shell$ pwd
/home/test/UA/3.0/shell
cd
Change Directory 的缩写,用来切换工作目录。
命令格式:
cd [相对路径或绝对路径]
示例:
绝对路径:绝对路径一定是由根目录 / 开始写起
test@1:~/UA/3.0/shell$ cd /home/test/UA/3.0/shell/
test@1:~/UA/3.0/shell$ pwd
/home/test/UA/3.0/shell
test@1:~/UA/3.0/shell$
相对路径:相对路径是相对于当前所在目录而言的
test@1:~/UA/3.0/shell$ cd test/
test@1:~/UA/3.0/shell/test$ pwd
/home/test/UA/3.0/shell/test
cd 命令后面可以跟一些特殊符号
~: 代表当前登录用户的主目录
~用户名:表示切换至指定用户的主目录
-:代表上次所在目录
..:代表上级目录
. :代表当前目录
test@1:~/UA/3.0/shell/test$ pwd
/home/test/UA/3.0/shell/test
test@1:~/UA/3.0/shell/test$ cd ../
test@1:~/UA/3.0/shell$ pwd
/home/test/UA/3.0/shell
test@1:~/UA/3.0/shell$ cd ./test/
test@1:~/UA/3.0/shell/test$ cd ../../
test@1:~/UA/3.0$ ls
mkdir
make directories 的缩写,用于创建新目录
mkdir [-mp] 目录名
-m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
-p 选项递归创建所有目录
示例:
test@1:~/UA/3.0/shell$ ls
test@1:~/UA/3.0/shell$ mkdir test
test@1:~/UA/3.0/shell$ ls
test
test@1:~/UA/3.0/shell$ mkdir -m 722 test1
test@1:~/UA/3.0/shell$ ls -l
total 8
drwxrwxr-x 2 test test 4096 Aug 19 02:21 test
drwx-w--w- 2 test test 4096 Aug 19 02:21 test1
test@1:~/UA/3.0/shell$ mkdir -p A/B/C
test@1:~/UA/3.0/shell$ ls -l A/B/C/
total 0
test@1:~/UA/3.0/shell$ ls -l A/B/
total 4
drwxrwxr-x 2 test test 4096 Aug 19 02:21 C
test@1:~/UA/3.0/shell$
rmdir
和 mkdir 命令(创建空目录)恰好相反,rmdir(remove empty directories 的缩写)命令用于删除空目录
rmdir [-p] 目录名
示例:
test@1:~/UA/3.0/shell$ mkdir -p A/B/C
test@1:~/UA/3.0/shell$ ls
A
test@1:~/UA/3.0/shell$ rmdir -p A/B/C/
test@1:~/UA/3.0/shell$ ls
test@1:~/UA/3.0/shell$
touch
创建文件
touch [选项] 文件名
示例:
test@1:~/UA/3.0/shell$ touch 1.txt
test@1:~/UA/3.0/shell$ ls
1.txt
test@1:~/UA/3.0/shell$ touch {1,2,3}.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
ln
命令用于给文件创建链接
软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。
ln [选项] 源文件 目标文件
-s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件;
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件;
示例:
硬链接,相当于复制
test@1:~/UA/3.0/shell$ touch 1.txt
test@1:~/UA/3.0/shell$ ls
1.txt
test@1:~/UA/3.0/shell$ ln 1.txt 2.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt
test@1:~/UA/3.0/shell$ sha1sum 1.txt 2.txt
da39a3ee5e6b4b0d3255bfef95601890afd80709 1.txt
da39a3ee5e6b4b0d3255bfef95601890afd80709 2.txt
软链接,相当于创建快捷方式
test@1:~/UA/3.0/shell$ ln -s ../img/ img
test@1:~/UA/3.0/shell$ ls -l
total 0
-rw-rw-r-- 2 test test 0 Aug 19 02:28 1.txt
-rw-rw-r-- 2 test test 0 Aug 19 02:28 2.txt
lrwxrwxrwx 1 test test 7 Aug 19 02:30 img -> ../img/
cp
用来复制文件和目录
cp [选项] 源文件 目标文件
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用
示例:
基本使用
test@1:~/UA/3.0/shell$ touch test
test@1:~/UA/3.0/shell$ cp test ^C
test@1:~/UA/3.0/shell$ touch test
test@1:~/UA/3.0/shell$ mkdir 1
test@1:~/UA/3.0/shell$ ls
1 test
test@1:~/UA/3.0/shell$ cp test 1/
test@1:~/UA/3.0/shell$ ls -l 1/
total 0
-rw-rw-r-- 1 test test 0 Aug 19 02:32 test
改名复制(复制后的路径后加自己想改的名字)
test@1:~/UA/3.0/shell$ cp test 1/test1
test@1:~/UA/3.0/shell$ ls -l 1/
total 0
-rw-rw-r-- 1 test test 0 Aug 19 02:32 test
-rw-rw-r-- 1 test test 0 Aug 19 02:35 test1
rm
强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。在使用 rm 命令删除文件或目录时,系统不会产生任何提示信息。
rm[选项] 文件或目录
-f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
-i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
-r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。
test@1:~/UA/3.0/shell$ ls
1 test
test@1:~/UA/3.0/shell$ rm 1/
rm: cannot remove '1/': Is a directory
test@1:~/UA/3.0/shell$ rm -r 1
test@1:~/UA/3.0/shell$ ls
test
test@1:~/UA/3.0/shell$ touch 1.txt
test@1:~/UA/3.0/shell$ mkdir -p a/B/C
test@1:~/UA/3.0/shell$ touch a/B/C/2.txt
test@1:~/UA/3.0/shell$ rm -r a
test@1:~/UA/3.0/shell$ ls
1.txt test
test@1:~/UA/3.0/shell$ rm -r test
test@1:~/UA/3.0/shell$ ls
1.txt
test@1:~/UA/3.0/shell$
使用正则匹配要删除的文件
test@1:~/UA/3.0/shell$ touch {1,3,4,5,f,w2,hfh,sda}.txt
test@1:~/UA/3.0/shell$ ls
1.txt 3.txt 4.txt 5.txt f.txt hfh.txt sda.txt w2.txt
test@1:~/UA/3.0/shell$ rm -rf *.txt
test@1:~/UA/3.0/shell$ ls
test@1:~/UA/3.0/shell$
mv
move 的缩写,既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。
mv 【选项】 源文件 目标文件
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-v:显示文件或目录的移动过程;
-u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级;
同 rm 命令类似,mv 命令也是一个具有破坏性的命令
示例:
常规移动
test@1:~/UA/3.0/shell$ ls
test@1:~/UA/3.0/shell$ touch 1
test@1:~/UA/3.0/shell$ mkdir 2
test@1:~/UA/3.0/shell$ ls
1 2
test@1:~/UA/3.0/shell$ mv 1 2/
test@1:~/UA/3.0/shell$ ls
2
移动并重命名
test@1:~/UA/3.0/shell$ touch 3
test@1:~/UA/3.0/shell$ mv 3 2/4
test@1:~/UA/3.0/shell$ ^C
test@1:~/UA/3.0/shell$ ls 2/
1 4
test@1:~/UA/3.0/shell$
clear
用于清屏 快捷键:Ctrl+l
history
用于查看自己运行过的命令
test@1:~/UA/3.0/shell$ history
1180 ls
1181 cd 1/
1182 cd META-INF/com/
1183 ls
1184 sz updater-script
1185 cd ../../../tmp/
1186 cd META-INF/com/
1187 ls
1188 sz updater-script
1189 ls
1190 sudo vim updater-script
1191 cd ../../
1192 zip -ry ../test.zip *
1193 sudo zip -ry ../test.zip *
1194 cd ../
1195 sudo python3 ua1.py
1196 vim xml/rawinst.xml
man
取的是manual手册的意思,可以详细的列出指令的所有参数和使用方法
man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
"> ,>>"
重定向
">" 覆盖里面的内容
test@1:~/UA/3.0/shell$ echo "321312231" > 1.txt
test@1:~/UA/3.0/shell$ cat 1.txt
321312231
test@1:~/UA/3.0/shell$ echo "311111" > 1.txt
test@1:~/UA/3.0/shell$ cat 1.txt
311111
">>" 追加 在之前的内容之后
test@1:~/UA/3.0/shell$ echo "dsasadsad" >> 1.txt
test@1:~/UA/3.0/shell$ cat 1.txt
311111
dsasadsad
test@1:~/UA/3.0/shell$
压缩和解压
tar
命令做打包解包操作
tar [选项] 源文件或目录
-c 将多个文件或目录进行打包。
-A 追加 tar 文件到归档文件。
-f 包名 指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v 显示打包文件过程;
-x 对 tar 包做解打包操作
-C 指定解打包位置。
-z 压缩和解压缩 ".tar.gz" 格式;
-j 压缩和解压缩 ".tar.bz2"格式。
在使用 tar 命令指定选项时可以不在选项前面输入“-”。例如,使用“cvf”选项和 “-cvf”起到的作用一样
*.tar格式
打包
多个文件逐一列出,使用-
test@1:~/UA/3.0/shell$ touch {1,2,3}.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ tar -cvf test.tar 1.txt 2.txt 3.txt
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test.tar
test@1:~/UA/3.0/shell$
多个文件逐一列出,不使用-
test@1:~/UA/3.0/shell$ tar cvf test1.tar 1.txt 2.txt 3.txt
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test1.tar test.tar
*代表通配符所有文件
test@1:~/UA/3.0/shell$ tar cvf test2.tar *.txt
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test1.tar test2.tar test.tar
test@1:~/UA/3.0/shell$
解压
test@1:~/UA/3.0/shell$ mkdir test1
test@1:~/UA/3.0/shell$ tar xvf test1.tar -C test1/
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls -l test1
total 4
-rw-rw-r-- 1 test test 17 Aug 19 03:27 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 3.txt
test@1:~/UA/3.0/shell$
*.tar.gz
打包
第一种方法:
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ tar cvf test.tar *
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test.tar
test@1:~/UA/3.0/shell$ gzip test.tar
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test.tar.gz
test@1:~/UA/3.0/shell$
第二种方法:
test@1:~/UA/3.0/shell$ tar zcvf test1.tar.gz 1.txt 2.txt 3.txt
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test1.tar.gz test.tar.gz
test@1:~/UA/3.0/shell$
解压
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test1.tar.gz test.tar.gz
test@1:~/UA/3.0/shell$ mkdir test
test@1:~/UA/3.0/shell$ tar -zxvf test.tar.gz -C test/
1.txt
2.txt
3.txt
test@1:~/UA/3.0/shell$ ls -l test
total 12
-rw-rw-r-- 1 test test 10240 Aug 19 03:31 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 3.txt
test@1:~/UA/3.0/shell$
*.tar.bz2
打包
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test
test@1:~/UA/3.0/shell$ tar -jcvf test2.tar.bz2 *
1.txt
2.txt
3.txt
test/
test/2.txt
test/3.txt
test/1.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test test2.tar.bz2
解压
test@1:~/UA/3.0/shell$ mkdir test2
test@1:~/UA/3.0/shell$ tar jxvf test2.tar.bz2 -C test2/
1.txt
2.txt
3.txt
test/
test/2.txt
test/3.txt
test/1.txt
test@1:~/UA/3.0/shell$ ls -l test2
total 16
-rw-rw-r-- 1 test test 10240 Aug 19 03:31 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 3.txt
drwxrwxr-x 2 test test 4096 Aug 19 03:34 test
test@1:~/UA/3.0/shell$
zip
zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。
zip [选项] 压缩包名 源文件或源目录列表
-r 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-v 显示详细的压缩过程信息。
-q 在压缩的时候不显示命令的执行过程。
-压缩级别 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u 更新压缩文件,即往压缩文件中添加新文件。
-y 压缩软硬链接
示例:
压缩
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ zip test.zip *
adding: 1.txt (deflated 99%)
adding: 2.txt (stored 0%)
adding: 3.txt (stored 0%)
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test.zip
test@1:~/UA/3.0/shell$ mkdir test
-r 递归
test@1:~/UA/3.0/shell$ zip -r test1.zip *
adding: 1.txt (deflated 99%)
adding: 2.txt (stored 0%)
adding: 3.txt (stored 0%)
adding: test/ (stored 0%)
adding: test/2.txt (stored 0%)
adding: test/3.txt (stored 0%)
adding: test/1.txt (deflated 99%)
adding: test.zip (stored 0%)
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt test test1.zip test.zip
test@1:~/UA/3.0/shell$
unzip
-d 目录名 将压缩文件解压到指定目录下。
-n 解压时并不覆盖已经存在的文件。
-o 解压时覆盖已经存在的文件,并且无需用户确认。
-v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。
-t 测试压缩文件有无损坏,但并不解压。
-x 文件列表 解压文件,但不包含文件列表中指定的文件。
解压
test@1:~/UA/3.0/shell$ unzip test.zip -d test
Archive: test.zip
inflating: test/1.txt
extracting: test/2.txt
extracting: test/3.txt
test@1:~/UA/3.0/shell$ ls -l test
total 12
-rw-rw-r-- 1 test test 10240 Aug 19 03:31 1.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 2.txt
-rw-rw-r-- 1 test test 0 Aug 19 03:27 3.txt
test@1:~/UA/3.0/shell$
gzip
gzip 命令只能用来压缩文件,不能压缩目录
gzip [选项] 源文件
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩。
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6。
进本使用,压缩是会将源文件删除
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ gzip 1.txt
test@1:~/UA/3.0/shell$ ls
1.txt.gz 2.txt 3.txt
保留源文件
test@1:~/UA/3.0/shell$ ls
1.txt.gz 2.txt 3.txt
test@1:~/UA/3.0/shell$ gzip -c 2.txt > 2.txt.gz
test@1:~/UA/3.0/shell$ ls
1.txt.gz 2.txt 2.txt.gz 3.txt
test@1:~/UA/3.0/shell$
gunzip
一个使用广泛的解压缩命令,它用于解压被 gzip 压缩过的文件
gunzip [选项] 文件
-r 递归处理,解压缩指定目录下以及子目录下的所有文件。
-c 把解压缩后的文件输出到标准输出设备。
-f 强制解压缩文件,不理会文件是否已存在等情况。
-l 列出压缩文件内容。
-v 显示命令执行过程。
-t 测试压缩文件是否正常,但不对其做解压缩操作。
普通解压
test@1:~/UA/3.0/shell$ ls
1.txt.gz 2.txt 2.txt.gz 3.txt
test@1:~/UA/3.0/shell$ gunzip 1.txt.gz
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 2.txt.gz 3.txt
test@1:~/UA/3.0/shell$
解压缩目录下的压缩包(-r)
test@1:~/UA/3.0/shell$ ls -l test/
total 12
-rw-rw-r-- 1 test test 125 Aug 19 03:31 1.txt.gz
-rw-rw-r-- 1 test test 26 Aug 19 03:27 2.txt.gz
-rw-rw-r-- 1 test test 26 Aug 19 03:27 3.txt.gz
test@1:~/UA/3.0/shell$ gunzip -r test/
test@1:~/UA/3.0/shell$ ls test/
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$
bzip2
同 gzip 命令类似,只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件
bzip2 [选项] 源文件 #源文件指的要压缩或解压缩的文件
-d 执行解压缩,此时该选项后的源文件应为标记有 .bz2 后缀的压缩包文件。
-k bzip2 在压缩或解压缩任务完成后,会删除原始文件,若要保留原始文件,可使用此选项。
-f bzip2 在压缩或解压缩时,若输出文件与现有文件同名,默认不会覆盖现有文件,若使用此选项,则会强制覆盖现有文件。
-t 测试压缩包文件的完整性。
-v 压缩或解压缩文件时,显示详细信息。
-数字 这个参数和 gzip 命令的作用一样,用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高
test@1:~/UA/3.0/shell$ touch {1,2,3}.txt
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ bzip2 1.txt 2.txt 3.txt
test@1:~/UA/3.0/shell$ ls
1.txt.bz2 2.txt.bz2 3.txt.bz2
test@1:~/UA/3.0/shell$
bunzip2
使用和 gunzip 命令大致相同,bunzip2 命令只能用于解压文件
bunzip2 [选项] 源文件
-k 解压缩后,默认会删除原来的压缩文件。若要保留压缩文件,需使用此参数。
-f 解压缩时,若输出的文件与现有文件同名时,默认不会覆盖现有的文件。若要覆盖,可使用此选项。
-v 显示命令执行过程。
-L 列出压缩文件内容。
".bz2" 格式也可以使用 "bzip2 -d 压缩包" 命令来进行解压缩
test@1:~/UA/3.0/shell$ ls
1.txt.bz2 2.txt.bz2 3.txt.bz2
test@1:~/UA/3.0/shell$ bunzip2 1.txt.bz2
test@1:~/UA/3.0/shell$ bzip2 -d 2.txt.bz2
test@1:~/UA/3.0/shell$ ls
1.txt 2.txt 3.txt.bz2
test@1:~/UA/3.0/shell$
查看相关指令
cat
可以用来显示文本文件的内容,适合查看小文件
cat [选项] 文件名
-A 相当于 -vET 选项的整合,用于列出所有隐藏符号;
-E 列出每行结尾的回车符 $;
-n 对输出的所有行进行编号;
-b 同 -n 不同,此选项表示只对非空行进行编号。
-T 把 Tab 键 ^I 显示出来;
-V 列出特殊字符;
-s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行。
cat 命令本身非常简单,我们可以直接查看文件的内容
test@1:~/UA/3.0/shell$ touch 1.txt
test@1:~/UA/3.0/shell$ echo "2131223213123" > 1.txt
test@1:~/UA/3.0/shell$ cat 1.txt
2131223213123
使用 "-n" 选项,则会显示行号
test@1:~/UA/3.0/shell$ echo "2131223213123" > 1.txt
test@1:~/UA/3.0/shell$
test@1:~/UA/3.0/shell$ ls
1.txt
test@1:~/UA/3.0/shell$ cat -n 1.txt
1 2131223213123
test@1:~/UA/3.0/shell$
将文件 file1.txt 和 file.txt 的内容合并后输出到文件 file3.txt 中
test@1:~/UA/3.0/shell$ echo "212321" > file.txt
test@1:~/UA/3.0/shell$ echo "wdasda" > file1.txt
test@1:~/UA/3.0/shell$ cat file.txt file1.txt > file3.txt
test@1:~/UA/3.0/shell$ cat file3.txt
212321
wdasda
test@1:~/UA/3.0/shell$
more
命令可以分页显示文本文件的内容,适合查看大文件
more [选项] 文件名
-f 计算行数时,以实际的行数,而不是自动换行过后的行数。
-p 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。
-c 跟 -p 选项相似,不同的是先显示内容再清除其他旧资料。
-s 当遇到有连续两行以上的空白行时,就替换为一行的空白行。
-u 不显示下引号(根据环境变量 TERM 指定的终端而有所不同)。
+n 从第 n 行开始显示文件内容,n 代表数字。
-n 一次显示的行数,n 代表数字。
more 命令的执行会打开一个交互界面
h 或 ? 显示 more 命令交互命令帮助。
q 或 Q 退出 more。
回车键 向下移动一行。
空格键 向下移动一页。
= 显示当前行的行号。
d 向下移动半页。
b 向上移动一页。
示例:
常规使用
test@1:~/UA/3.0/shell$ more ua.py
每 10 行显示一屏,同时清楚屏幕
more -c -10 ua.py
head
显示指定文件前若干行的文件内容
head [选项] 文件名
-n K 这里的 K 表示行数,该选项用来显示文件前 K 行的内容;如果使用 "-K" 作为参数,则表示除了文件最后 K 行外,显示剩余的全部内容。
-v 显示文件名;
常规使用
head ua.py #默认显示前10行
显示开头指定多少行
head -n 15 ua.py #第一种
head -15 ua.py #第二种
tail
和 head 命令正好相反,它用来查看文件末尾的数据
tail [选项] 文件名
-n K 这里的 K 指的是行数,该选项表示输出最后 K 行,在此基础上,如果使用 -n +K,则表示从文件的第 K 行开始输出。
-f 输出文件变化后新增加的数据。
常规使用 默认显示后10行
tail ua.py
指定显示行数
tail -n 5 ua.py
tail 命令有一种比较有趣的用法,可以使用 "-f" 选项来监听文件的新増内容
test@1:~/UA/3.0/shell$ tail -f 1.txt
2131223213123
追加
test@1:~/UA/3.0/shell$ echo "2eqwewqewqeq" >> 1.txt
test@1:~/UA/3.0/shell$ echo "2eqwewqewqeq" >> 1.txt
test@1:~/UA/3.0/shell$ echo "2eqwewqewqeq" >> 1.txt
test@1:~/UA/3.0/shell$ echo "2eqwewqewqe1q" >> 1.txt
此时-f 显示 #光标不会退出文件,而会一直监听在文件的结尾处
test@1:~/UA/3.0/shell$ tail -f 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
grep
grep 命令是用来在每一个文件或中(或特定输出上)搜索特定的模式
grep [选项] 模式 文件名
通配符
. 将匹配任何一个字符,且只能是一个字符。
[xyz] 匹配方括号中的任意一个字符。
[^xyz] 匹配除方括号中字符外的所有字符。
^ 锁定行的开头。
$ 锁定行的结尾。
选项
-c 仅列出文件中包含模式的行数。
-i 忽略模式中的字母大小写。
-l 列出带有匹配行的文件名。
-n 在每一行的最前面列出行号。
-v 列出没有匹配模式的行。
常规使用
test@1:~/UA/3.0/shell$ grep 1 *
1.txt:2131223213123
1.txt:2eqwewqewqe1q
file3.txt:212321
file.txt:212321
test@1:~/UA/3.0/shell$ grep 1 1.txt
2131223213123
2eqwewqewqe1q
多个条件
test@1:~/UA/3.0/shell$ grep -e "1" -e "2" 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
test@1:~/UA/3.0/shell$ grep [1,2,e] 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
test@1:~/UA/3.0/shell$
不区分大小写
test@1:~/UA/3.0/shell$ grep -i E 1.txt
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
打印行号
test@1:~/UA/3.0/shell$ grep -i E -n 1.txt
2:2eqwewqewqeq
3:2eqwewqewqeq
4:2eqwewqewqeq
5:2eqwewqewqe1q
不包含的行号
test@1:~/UA/3.0/shell$ cat 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
test@1:~/UA/3.0/shell$ grep -v e 1.txt
2131223213123
test@1:~/UA/3.0/shell$
匹配行首
test@1:~/UA/3.0/shell$ cat 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
test@1:~/UA/3.0/shell$ grep ^21 1.txt
2131223213123
test@1:~/UA/3.0/shell$
匹配行尾
test@1:~/UA/3.0/shell$ cat 1.txt
2131223213123
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqeq
2eqwewqewqe1q
test@1:~/UA/3.0/shell$ grep 1q$ 1.txt
2eqwewqewqe1q
test@1:~/UA/3.0/shell$
passwd
passwd [选项] 用户名
[root@localhost ~]#passwd
#passwd直接回车代表修改当前用户的密码
Changing password for user vbird2.
Changing password for vbird2
(current) UNIX password: <==这里输入『原有的旧口令』
New password: <==这里输入新口令
BAD PASSWORD: it is WAY too short <==口令检验不通过,请再想个新口令
New password: <==这里再想个来输入吧
Retype new password: <==通过口令验证!所以重复这个口令的输入
passwd: all authentication tokens updated successfully. <==成功修改用户密码
chgrp
用于修改文件(或目录)的所属组。
chgrp [-R] 所属组 文件名(目录名)
修改文件所属的组为root
test@1:~/UA/3.0/shell$ touch 1.txt
test@1:~/UA/3.0/shell$ ls -l
total 0
-rw-rw-r-- 1 test test 0 Aug 19 04:54 1.txt
test@1:~/UA/3.0/shell$ sudo chgrp root 1.txt
test@1:~/UA/3.0/shell$ ls -l 1.txt
-rw-rw-r-- 1 test root 0 Aug 19 04:54 1.txt
test@1:~/UA/3.0/shell$
chown
用于修改文件(或目录)的所有者
chown [-R] 所有者 文件或目录
root@localhost ~]# sudo touch file
#由root用户创建file文件
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 Apr 17 05:12 file
#文件的所有者是root,普通用户test对这个文件拥有只读权限
[root@localhost ~]# chown test file
#修改文件的所有者
[root@localhost ~]# ll file
-rw-r--r--. 1 test root 0 Apr 17 05:12 file
#所有者变成了test用户,这时test用户对这个文件就拥有了读、写权限
chmod
通过 chmod 命令即可。chmod 命令设定文件权限的方式有 2 种,分别可以使用数字或者符号来进行权限的变更
Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r --> 4
w --> 2
x --> 1
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5
所以,此权限对应的权限值就是 765。
chmod [-R] 权限值 文件名
示例
数字的形式修改权限
test@1:~/UA/3.0/shell$ touch 1
test@1:~/UA/3.0/shell$ ls -l
total 0
-rw-rw-r-- 1 test test 0 Aug 19 05:42 1
test@1:~/UA/3.0/shell$ chmod 777 1
test@1:~/UA/3.0/shell$ ls -l 1
-rwxrwxrwx 1 test test 0 Aug 19 05:42 1
使用字母修改文件权限
基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。
如果我们要设定 test 文件的权限为 rwxr-xr-x,则可执行如下命令:
test@1:~/UA/3.0/shell$ chmod u=rwx,go=rx test
test@1:~/UA/3.0/shell$ ls -l 1
-rwxr-xr-x 1 test test 0 Aug 19 05:42 test
test@1:~/UA/3.0/shell$
要增加 test 文件的每种用户都可做写操作的权限
test@1:~/UA/3.0/shell$ ls -l test
---x--x--x 1 test test 0 Aug 19 05:42 test
test@1:~/UA/3.0/shell$ chmod a+w test
test@1:~/UA/3.0/shell$ ls -l test
--wx-wx-wx 1 test test 0 Aug 19 05:42 test
test@1:~/UA/3.0/shell$
su、sudo、su - root
su和sudo的区别
共同点:都是root用户权限;
不同点:su只获得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全获得root的权限和root的工作环境。
sudo:表示获取临时的root权限执行命令。
sudo执行命令的流程:
1、当前用户切换到root(或其他指定切换到的用户), 2、以root(或其他指定的切换到的用户)身份执行命令, 3、执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
su - root和su root区别
su - root:以root身份登录
su root:与root建立一个连接,通过root执行命令。
最直接的区别是su目录还是原先用户目录,su - root后目录就变为root用户的主目录。
df
用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
df [选项] [目录或文件名]
-a 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-m 以 MB 为单位显示容量;
-k 以 KB 为单位显示容量,默认以 KB 为单位;
-h 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
-T 显示该分区的文件系统名称;
-i 不用硬盘容量显示,而是以含有 inode 的数量来显示。
默认情况 (kb 单位)
test@1:~/UA/3.0/shell$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4004004 0 4004004 0% /dev
tmpfs 806904 9516 797388 2% /run
/dev/sda2 479089456 31510584 423219448 7% /
tmpfs 4034516 264 4034252 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4034516 0 4034516 0% /sys/fs/cgroup
/dev/sda1 523248 3760 519488 1% /boot/efi
tmpfs 806904 48 806856 1% /run/user/1000
本例中,由 df 命令显示出的各列信息的含义分别是:
- Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
- 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
- Used:表示用掉的硬盘空间大小;
- Available:表示剩余的硬盘空间大小;
- Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
- Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。
du
统计目录或文件所占磁盘空间大小的命令。
du [选项] [目录或文件名]
-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量
常规使用
统计当前目录的总磁盘占用量大小,同时会统计当前目录下所有子目录的磁盘占用量大小,不统计子文件
磁盘占用量的大小。默认单位为KB
test@1:~/UA/3.0/shell$ du
194084 ./img
194088 .
另外2种
test@1:~/UA/3.0/shell$ du -s
194088 .
test@1:~/UA/3.0/shell$ du -sh
190M .
test@1:~/UA/3.0/shell$
mount
挂载,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统
mount -l 会显示出系统中已挂载的设备信息,使用 -l 选项,会额外显示出卷标名称
test@1:~/UA/3.0/shell$ mount -l
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=4004004k,nr_inodes=1001001,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=806904k,mode=755)
/dev/sda2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup
mount [-t 系统类型] [-L 卷标名] [-o 特殊选项] [-n] 设备文件名 挂载点
-t 系统类型:指定欲挂载的文件系统类型。
-L 卷标名:除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
-n:在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
-o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则使用默认值(defaults)
rw/ro 是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev 是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto 是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid 设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec 设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser 设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount 重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
示例:
test@1:~/UAWORK/file/source/_temp_$ mkdir system
test@1:~/UAWORK/file/source/_temp_$ mount -o loop -t ext4 my_sparse.img system/
mount: only root can use "--options" option
test@1:~/UAWORK/file/source/_temp_$ sudo mount -o loop -t ext4 my_sparse.img system/
[sudo] password for test:
test@1:~/UAWORK/file/source/_temp_$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4004004 0 4004004 0% /dev
tmpfs 806904 9516 797388 2% /run
/dev/sda2 479089456 31704684 423025348 7% /
tmpfs 4034516 264 4034252 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4034516 0 4034516 0% /sys/fs/cgroup
/dev/sda1 523248 3760 519488 1% /boot/efi
tmpfs 806904 52 806852 1% /run/user/1000
/dev/loop0 5078656 1503364 3558908 30% /home/test/UAWORK/file/source/_temp_/system
umount
用于卸载已经挂载的硬件设备
umount 设备文件名或挂载点
test@1:~/UAWORK/file/source/_temp_$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4004004 0 4004004 0% /dev
tmpfs 806904 9516 797388 2% /run
/dev/sda2 479089456 31704684 423025348 7% /
tmpfs 4034516 264 4034252 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4034516 0 4034516 0% /sys/fs/cgroup
/dev/sda1 523248 3760 519488 1% /boot/efi
tmpfs 806904 52 806852 1% /run/user/1000
/dev/loop0 5078656 1503364 3558908 30% /home/test/UAWORK/file/source/_temp_/system
test@1:~/UAWORK/file/source/_temp_$ sudo umount system/
test@1:~/UAWORK/file/source/_temp_$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4004004 0 4004004 0% /dev
tmpfs 806904 9516 797388 2% /run
/dev/sda2 479089456 31704708 423025324 7% /
tmpfs 4034516 264 4034252 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4034516 0 4034516 0% /sys/fs/cgroup
/dev/sda1 523248 3760 519488 1% /boot/efi
tmpfs 806904 52 806852 1% /run/user/1000
md5sum
md5校验
test@1:~/UA/3.0/shell$ md5sum img/xaa
6b1a340fd2dc81aba3192db5e9b6477e img/xaa
test@1:~/UA/3.0/shell$ cp img/xaa img/aaaaa
test@1:~/UA/3.0/shell$ md5sum img/aaaaa
6b1a340fd2dc81aba3192db5e9b6477e img/aaaaa
test@1:~/UA/3.0/shell$
sha1sum
sha1校验
test@1:~/UA/3.0/shell$ sha1sum img/xaa
39f420fabcf83c60c36b4a133e43ce423fb8afb4 img/xaa
test@1:~/UA/3.0/shell$ cp img/xaa img/aaaaa
test@1:~/UA/3.0/shell$ sha1sum img/aaaaa
39f420fabcf83c60c36b4a133e43ce423fb8afb4 img/aaaaa
test@1:~/UA/3.0/shell$