linux基础学习-第十天(文件查找和压缩)

2016-08-12

授课内容:

shell的流程控制

文件查找和压缩

shell的流程控制:

过程式编程语言:

顺序执行

选择执行

循环执行(未讲)

顺序执行:

if语句:

单分支

if 判断条件; then

条件为真的分支代码

fi

双分支

if 判断条件; then

条件为真的分支代码

else

条件为假的分支代码

fi

多分支

if CONDITION1; then

if-true

elifCONDITION2; then

if-ture

elifCONDITION3; then

if-ture

...

else

all-false

fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

注意,当then与if一行时,需要用;隔开,另起一行,则不需要添加;

例子:

[[email protected] shells]# cat createuser.sh 
#!/bin/bash
#Version:1.0
#Create time:2016-08-12 11:09:20
#Description:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
read -p "please input a username: " USERNAME
#`id $USERNAM` &> /dev/null
if id $USERNAME &> /dev/null ; then
echo "the user exist" 
exit 100
else
useradd $USERNAME &> /dev/null 
echo "the user add sucessfully and its info is:`id $USERNAME`"
exit 99
fi
unset USERNAME

选择执行:

case语句

case 变量引用 in

PART1)

COMMAND

;;

PART2)

COMMAND

;;

*) #其他情况

COMMAND

;;

esac

case支持glob风格的通配符:

*: 任意长度任意字符

?: 任意单个字符

[]:指定范围内的任意单个字符

a|b: a或b

例子:

[[email protected] shells]# cat yesorno.sh 
#!/bin/bash
#Version:1.0
#Create time:2016-08-12 11:24:09
#Description:写一个脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
read -p "please input yes or no: " STRING
case $STRING in 
‘yes‘|‘y‘|‘Y‘|‘YES‘)
echo "your answer is yes"
exit 100
;;
‘no‘|‘n‘|‘N‘|‘no‘|‘n0‘)
echo "your answer is no"
exit 99
;;
*)
echo "your answer is other"
exit 98
esac
unset STRING

文件查找:

locate、find(注意,grep和sed是文本(文件内容)查找工具,不是文件查找)

两者的区别:locate是非实时查找(依赖于事先构建的数据库索引),find是实时的遍历查找

locate:

locate [OPTION]... PATTERN...

查询系统上预建的文件索引数据库

/var/lib/mlocate/mlocate.db

依赖于事先构建的索引;

索引的构建是在系统较为空闲时自动进行(周期性任务);管理员手动更新数据库(updatedb);

索引构建过程需要遍历整个根文件系统,极消耗资源;

工作特点:

查找速度快;

模糊查找;

非实时查找

搜索的是文件的全路径,不仅仅是文件名

可能只搜索用户具备读取和执行权限的目录

find:实时的遍历查找

find [OPTION]... [查找路径] [查找条件] [处理动作]

[查找路径]:指定具体目标路径;默认为当前目录

[查找条件]:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

[处理动作]:对符合条件的文件做操作,默认输出至屏幕

查找条件:

1、文件名和inode号

-name “filename”  支持使用glob *, ?, [], [^]

-iname “filename” 忽略文件名大小写

-inum 按照inode号来查找

-samefile “filenam” 相同inode号的文件

-links n :查找链接数为n的文件

-regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

2、根据属主、属组查找:

-user “username”

-group “groupname”

-uid “uid”

-gid “gid”

-nouser:查找没有属主的文件,指的是用户已删除,但其文件还没有删除

-nogroup:

3、根据文件类型查找:

-type

f:普通文件

d:目录文件

b:

c:

p:

s:

l:

4、根据文件大小来查找:【理解数值的范围】

-size [+|-]#size

常用单位:k, M, G

#UNIT: (#-1, #],如:6k

-#UNIT:[0,#-1], 如:-6k

+#UNIT:(#,∞), 如:+6k

5、按照文件的时间戳查找:【理解数值的范围】

以“天”为单位;

-atime[+|-]#,

#: [#,#+1)

+#: [#+1,∞]

-#: [0,#)

-mtime

-ctime

以“分钟”为单位:

-amin

-mmin

-cmin

6、根据权限查找:

-perm [/|-]mode

-perm 664:精确查找文件权限为664的文件

-perm /664:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,【即属主6,属组6,其他4,只要满足任意一个即可】

-perm -664:每一类对象都必须同时拥有指定权限,与关系,0 表示不关注,【即属主拥有6,属组拥有6,其他拥有4,必须满足三个】

动作处理:

-print:默认的处理动作,显示至屏幕;

-ls:类似于对查找到的文件执行“ls -l”命令

-delete:删除查找到的文件;

-flsfile:查找到的所有文件的长格式信息保存至指定文件中

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;对于每个文件执行命令之前,都会交互式要求用户确认

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令

{}: 用于引用查找到的文件名称自身

有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题

find | xargs COMMAND

组合条件:

与:-a

或:-o

非:-not, !

德·摩根定律:

非(P 且Q) = (非P) 或(非Q)

非(P 或Q) = (非P) 且(非Q)

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

文件压缩:

目的:压缩后的文件大小会减少,减少磁盘空间支出

大致原理:如文本love,会标记为一个字符记号,这样就可以大大缩减了文件大小,所以压缩对纯文本会特别明显

压缩格式:

.Z .gz .bz2 .xz

以上的压缩工具只对单个文件进行压缩,不能对整个目录进行压缩

压缩工具:

1、compress(其压缩文件后缀是.Z,默认压缩后删除原文件)

compress [-dfvcVr] [-b maxbits] [file ...]

-d:解压缩,相当于uncompress

-c:结果输出至标准输出,不删除原文件

uncompress:解压缩

由于此压缩工具压缩效果不理想,已被淘汰

2、gzip(其压缩文件后缀是.gz,默认压缩后删除原文件)

gzip [OPTION]... FILE ...

-d:解压,相当于gunzip

-c:结果输出至标准输出,不删除原文件

gunzip:解压缩

zcat file..:再不解压原文件的情况下临时查看压缩文件的内容

3、bzip2(其压缩文件后缀是.bz2,默认压缩后删除原文件)

bzip2 [OPTION]... FILE ...

-d:解压,相当于bunzip2

-c:结果输出至标准输出,不删除原文件

-k:保留原文件

bunzip2:解压缩

bzcat:不显式解压缩的前提下查看文本文件内容

4、xz(其压缩文件后缀是.xz,默认压缩后删除原文件)

-d:解压,相当于unxz

-c:结果输出至标准输出,不删除原文件

-k:保留原文件

xzcat:不显式解压缩的前提下查看文本文件内容

归档(打包)工具tar:

tar [options] [新的打包文件名] [需要打包的文件...]

-c:创建归档文件

-f “filename”:打包的文件名前必须要加-f参数

-z:以gzip方式压缩归档文件

-x:展开归档文件

-t:不解归档的情况下查看归档的文件列表

-zcf: 归档并调用gzip压缩

-zxf: 调用gzip解压缩并展开归档,-z选项可省略

-jcf: 归档并调用bzip2压缩

-jxf:调用bzip2解压缩并展开归档,-j选项可省略

-Jcf: 归档并调用xz压缩

-Jxf:调用xz解压缩并展开归档,-J选项可省略

时间: 2024-08-18 21:12:23

linux基础学习-第十天(文件查找和压缩)的相关文章

linux基础学习第十九天-系统启动流程(cenots6)以及配置系统服务(chkconfig)

内容:   CentOS 的启动流程   服务管理(chkconfig)   手动制定系统开机服务脚本 一.centos6系统启动流程 综述过程: POST-->BIOS(Boot Sequence)-->MBR(grub,446)-->Kernel-->initramfs(虚根文件)-->(ROOTFS)/sbin/init(/etc/inittab) 步骤详解: 1.POST: POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分.负责完

linux基础学习-第十五天 磁盘管理(SWAP、dd、quota、RAID、LVM)

2016-08-26: 授课内容: 1.SWAP交换分区的创建 2.dd命令的使用 3.设定文件系统配额 4.设定和管理软RAID设备 5.配置逻辑卷 1.swap (1)SWAP分区:模拟内存,当物理内存不足时,进程需要内存资源是,内存会把一部分没有在用的进程分页挪到硬盘的模拟内存中,腾出空间被现在需要使用内存资源的进程 即其作用是可以允许内存过载使用,windows系统也有类似的机制,由于虚拟内存空间是建立在硬盘之上,所以其速度和性能会大打折扣,所以适合临时使用 (2)创建SWAP分区: 相

linux基础学习-第十六、十七天(网络基础)

一.OSI七层模型 二.TCP/IP模型 三次握手原理 三.常见服务的默认端口 四.IP地址.子网划分基础知识 通信原理:一般数据的交互产生是在应用层(TCP/IP模型),应用层以下可以看成是搬运工,不同层的协议定义了不同的搬运工的工作内容,直到最后,把数据传输到另外一个主机的应用程序上. 一.OSI七层模型: 1.基本模型: 2.七层结构是为方便学习和直观了解,实际应用中多以TCP/IP五层结果为主 3.通信时,由上层的数据包进行包头封装,每经过一层,就会在数据包头部加上该层的报头,最后到达物

linux基础学习(十)

##软件的安装 ##1.软件名称识别## [abrt-addon-ccpp]-[2.1.11-19].[e17].[x86_64].rpm        ##rpm结尾的适用于redhat操作系统 ||            ||        ||       || 软件名称     软件版本  软件适用系统 64位 ##2.如何安装软件## 1.rpm rpm         -i        name.rpm        ##安装 -v        name.rpm        #

linux基础学习(十五)系统故障恢复及DNS服务配置

系统故障恢复 一:7.0以后的启动级别是通过链接/usr/lib/systemd/system/******.target /etc/systemd/system/default.target  即可更改启动级别如果删除了/etc/systemd/system/default.target,再把/usr/lib/systemd/system/reboot.target链接到default.target,那么系统将循环重启,无法启动解决方式:在进入系统的选择界面时按e进入编辑模式,把内核配置删除到

linux基础学习(十二) linux自动安装系统

##自动安装系统 ### kickstart脚本 kickstart脚本是自动应答系统在安装过程中一切问题的脚本文件 这个文件可以实现系统的自动安装 在系统安装完毕后会在系统的root家目录中生成 anaconda-ks.cfg 这个文件就是以此系统为模版生成的kickstart脚本 ###kickstart脚本的制作 系统中安装system-config-kickstart工具即可以以图形的方式制作kickstart yum install system-config-kickstart -y

linux基础学习(十四)nfs、vsftpd服务等

####文件共享####1.安装共享访问客户端yum install samba-client  -y 2.识别共享服务器共享目录smbclient  -L  //172.25.254.253 3.访问共享命令访问)smbclient //172.25.254.253/westos 挂载访问)mount //172.25.254.253/westos /mnt -o username=guest 4.自动挂载方法1)vim /etc/fstab//172.25.254.253/westos  

linux基础学习(十六)DNS服务器的相关配置

DNS高速缓存 什么是DNS高速缓存? DNS 服务器可以高速缓存从其他 DNS 服务器收到的 DNS 记录. 也可以在 DNS 客户服务中使用高速缓 存,将其作为 DNS 客户端保存在最近的查询过程中得到的信息高速缓存的方法. 总的来说就是提高解 析速度. 我们需要两台虚拟机,一台服务端,一台客户端 服务端: 安装DNS服务 yum install bind -y 运行DNS服务 systemctl start named 在火墙中添加DNS服务 firewall-cmd  --list-al

linux基础正则表达式、shell基础、文件查找和压缩

linux基础正则表达式.shell基础.文件查找和压缩 1.shell编程显示电脑的基本信息,初级基础脚本.只适合6.7版本的. COLOR="\033[1;36m" COLOREND="\033[0m" echo -e "CPU type is $COLOR `lscpu |grep 'Model name'|tr -s ' '|cut -d: -f2`$COLOREND" echo -e "Disk space is $COLOR