2.glob通配符及正则表达式使用方法

**1、定义一个对所有用户都生效的命令别名,例如:lftps=lftp172.168.0.1/pub

[root@localhost /lianxi/tmp]#vi /etc/profile 
#在profile文件末尾添加如下
alias lftps='lftp 172.168.0.1/pub'
#最后保存退出
[centos@localhost ~]$lftps
cd `ftp://172.168.0.1/pub' [Connecting...]

2、显示/etc/passwd文件中不以/bin/bash结尾的行

[centos@localhost ~]$cat /etc/passwd|grep -v "/bin/bash$"  
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
..........

3、找出/etc/passwd文件中,包含二位数字或者三位数的行。

[centos@localhost ~]$grep "[0-9]\{2,3\}" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
................

4、显示/proc/meminfo文件中以大写或小写s开头的行;用三种方式实现。

[centos@localhost ~]$grep "^[sS]" /proc/meminfo   
SwapCached:         4572 kB
SwapTotal:       2097148 kB
SwapFree:        2038544 kB
Shmem:              9084 kB
Slab:             101332 kB
SReclaimable:      38748 kB
SUnreclaim:        62584 kB
[centos@localhost ~]$grep -i "^s" /proc/meminfo 
SwapCached:         4572 kB
SwapTotal:       2097148 kB
SwapFree:        2038544 kB
Shmem:              9084 kB
Slab:             101332 kB
SReclaimable:      38748 kB
SUnreclaim:        62584 kB
[centos@localhost ~]$egrep "^[sS]" /proc/meminfo 
SwapCached:         4584 kB
SwapTotal:       2097148 kB
SwapFree:        2038544 kB
Shmem:              9096 kB
Slab:             101332 kB
SReclaimable:      38748 kB
SUnreclaim:        62584 kB

5、使用echo输出一个绝对路径,使用egrep取出路径名,类型执行dirname/etc/passwd的结果

[centos@localhost ~]$echo "/etc/rc.d/init.d/functions" |egrep -o '/.*[^/]'|egrep -o '/.*/'
/etc/rc.d/init.d/

6、找出 ifconfig中的ip地址。要求结果只显示IP地址。

[centos@localhost ~]$ifconfig ens33| grep "inet "|cut -d" " -f10
192.168.164.138

7、vim定制自动缩进四个字符。

在末行模式下:set shiftwidth=4

8、编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和。

#!/bin/bash 
[ "$#" -ne 3 ] && echo "the arg number is not 3" && exit         
uid1=`grep "^$1" /etc/passwd |cut -d: -f3 |tail -n 1`
uid2=`grep "^$2" /etc/passwd |cut -d: -f3 |tail -n 1`
uid3=`grep "^$3" /etc/passwd |cut -d: -f3 |tail -n 1`
let sum=uid1+uid2+uid3
echo $sum
[centos@localhost ~/scripts/new_scripts]$./uid_sum.sh centos Gentoo nginx
3025

9、find用法以及常用用法的实例演示。
find:实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;

find [OPTIONS]  [查找起始路径]  [查找条件]  [处理动作]

查找起始路径:

指定具体搜索目标起始路径;默认为当前目录;

查找条件:

指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件;

处理动作:

对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;

查找条件:

根据文件名查找:
-name “pattern”
-iname “pattern”(不区分大小写)

find /etc -name "passwd"

根据文件从属关系查找:
-user USERNAME:查找属主指定用户的所有文件

find /etc -user root

-group GRPNAME:查找属组指定组的所有文件;

-uid UID:查找属主指定的UID的所有文件;

-gid GID:查找属组指定的GID的所有文件;

-nouser:查找没有属主的文件;

-nogroup:查找没有属组的文件;

根据文件的类型查找:
-type TYPE:

-f: 普通文件

d: 目录文件

 find /etc -type d

l:符号链接文件

b:块设备 文件

c:字符设备文件

p:管道文件

s:套接字文件

组合测试:
与:-a, 默认组合逻辑;找出符合所有条件的内容
或:-o

 [centos@localhost ~]$find /etc -user root | -type d -ls

非:-not, !

 [centos@localhost ~]$find /etc -not -user root -ls

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

根据文件的大小查找:
-size [+|-]#UNIT (-size 174k)

常用单位:k, M, G

#UNIT:(#-1, #] 174 指173-174

-#UNIT:[0,#-1] -174 指0-173

+#UNIT:(#, oo) +174 指 174-无穷大

根据时间戳查找:肯定是以前的时间
以“天”为单位:

-atime [+|-]#

#:[#, #-1) 1天 大于24,小于48小时

-#:(#, 0] 1天 小于24,大于0

+#:(oo, #-1] 1天 大于24到24

找一个7天前访问过的文件

 find /etc -atime +7 -ls

根据权限查找:
-perm [/|-]mode

find /etc -perm 644 -ls  (可以是644,/644,-644) 

mode:精确权限匹配;

/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;
9位权限之间存在“或”关系;

-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;
9位权限之间存在“与”关系;

处理动作:
-print:输出至标准输出;默认的动作;

-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;

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

-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;

-ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;{}为引用的作用

-exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;重命名可以写出{} {}.dwef

注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:
find | xargs COMMAND

你可能感兴趣的:(2.glob通配符及正则表达式使用方法)