1、定义一个对所有用户都生效的命令别名,例如:lftps='lftp 172.168.0.1/pub'
echo "alias lp='cd /sss/sss/'" >> /etc/bashrc
2、显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" /etc/passwd
3、找出/etc/passwd文件中,包含二位数字或者三位数的行。
grep "\<[0-9]\{2,3\}\>" /etc/passwd
4、显示/proc/meminfo文件中以大写或小写S开头的行;用三种方式实现。
第一种:grep "^\<[sS]" /proc/meminfo
第二种:grep -E "^(s|S)" /proc/meminfo
第三种:grep -i "^s" /proc/meminfo
5、使用echo输出一个绝对路径,使用egrep取出路径名,类型执行dirname /etc/passwd 的结果。
echo "/etc/passwd" | egrep -o "^/etc"
6、找出ifconfig中的ip地址。要求结果只显示IP地址。
先查看网卡对应的信息:
[ouyang@localhost ~]$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.114 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::7bcd:9d41:364a:4ea0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:27:09:b2 txqueuelen 1000 (Ethernet)
RX packets 183 bytes 16893 (16.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 5309 (5.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
筛选出IP信息:ifconfig ens33 | cut -c 14-26 | sed -n '2p'
7、vim定制自动缩进四个字符。
echo "set tabstop=4" >> /root/.vimrc
8、编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和。
先生成脚本文件:touch uidadd.sh
添加执行权限:chmod +x uidadd.sh
编辑脚本:vim uidadd.sh
#!/bin/sh
id ac1 || useradd ac1
id ac2 || useradd ac2
id ac3 || useradd ac3
echo "$[$(id -u ac1)+$(id -u ac2)+$(id -u ac3)]"
运行脚本:./uidadd.sh
9、find用法以及常用用法的实例演示。
find 实时查找工具,通过遍历指定路径完成文件查找
工作特点:查找速度略慢;精确查找;实时查找;可能只搜索用户具备读取和执行权限的目录
语法:find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕
查找条件:
#指搜索层级
-maxdepth level 最大搜索目录深度,指定目录为第1级
-mindepth level 最小搜索目录深度
#先处理目录内的文件,再处理目录
-depth
#根据文件名和inode查找:
-name "文件名称":支持使用glob
*, ?, [], [^]
-iname "文件名称":不区分字母大小写
-inum n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regex “PATTERN” :以PATTERN匹配整个文件路径,而非文件名称
#根据属主、属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
#根据文件类型查找:
-type TYPE:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
#空文件或目录
-empty
find /app -type d -empty
#组合条件:
与: -a
或: -o
非: -not, !
#德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
#示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
#根据文件大小来查找:
-size [+|-]#UNIT
常用单位: k, M, G, c(byte)
#UNIT: (#-1, #]
-#UNIT: [0,#-1]
+#UNIT: (#,∞)
#根据时间戳:
以“天”为单位
-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime
-ctime
以“分钟”为单位
-amin
-mmin
-cmin
#根据权限查找:
-perm [/|-]MODE
MODE: 精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系, +
-MODE:每一类对象都必须同时拥有指定权限,与关系
find -perm 755 会匹配权限模式恰好是755的文件
只要当任意人有写权限时, find -perm +222就会匹配
只有当每个人都有写权限时, find -perm -222才会匹配
只有当其它人(other)有写权限时, find -perm -002才会匹配
处理动作
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l” 命令
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
实例:
查找 /var 目录下属主为root,且属组为mail的所有文件或目录
find /var -user root -a -group mail -ls
查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf”