1.定义一个对所有用户都生效的命令别名,例如:lftps=‘lftp 172.168.0.1/pub’
以bash shell 为例,用户命令别名生效的顺序,用户登录bash后首先读取当前用户目录中的 .bashrc 文件,然后读取 /etc/bashrc 文件,最后读取所有 /etc/profile.d/*.sh脚本。因此在/etc/profile.d/目录中新建一个.sh脚本,然后在脚本中写入需要的命令别名。
2.显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v '/bin/bash$' /etc/passwd
3.找出/etc/passwd文件中,包含二位数字或者三位数字的行
grep -E '[0-9]{2,3}' /etc/passwd
4.显示/proc/meminfo文件中以大写或小写S开头的行(用三种方式实现)
#方法一:
grep '^[Ss]' /proc/meminfo
#方法二:
sed -n '/^[sS]/p' /proc/meminfo
#方法三:
awk '/^[sS]/{print}' /proc/meminfo
5.使用echo输出一个绝对路径,使用egrep取出路径名,类似执行dirname /etc/passwd 的结果
这个题目暂时这样实现,更好的实现我觉得应该编写脚本
echo /etc/passwd | egrep -o '^/.*/'
6.找出ifcofnig中的ip地址(要求结果只显示IP地址)
下面的正则表达式并不能准确匹配IP,但是在这个题目中能满足要求
ifconfig | grep -woE '([0-9]{1,3}\.){3}[0-9]{1,3}'
7.vim定制自动缩进四个字符
在用户家目录中的.vimrc 配置文件中添加 下面的行
set autoindent
set shiftwidth=4
8.编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和
echo newuser1 newuser2 newuser3 | xargs -n1 useradd &>/dev/null
declare -i uid1=$(id -u newuser1)
declare -i uid2=$(id -u newuser2)
declare -i uid3=$(id -u newuser3)
declare -i sum=$uid1+$uid2+$uid3
echo "the three new users uid's sum is $sum"
9.find用法以及常用用法的示例演示
它是实时查找工具,通过遍历指定的路径来完成文件的查找。注意:一个命令作用在多个条件时,要加括号,否则命令将默认只作用在相邻的条件上。
语法规则如下:
find [option]… [查找路径] [查找条件] [处理动作]
查找条件 | 解释 |
---|---|
-name | 后接文件名称,支持使用通配符 * 、?、[]、[^] |
-iname | 后接文件名,不区分大小写 |
-inum | 后接inode号 |
-samefile | 后接文件名,查找与之相同inode号的文件 |
-links | 后接连接数,查找连接数为n的文件 |
-regex | 以pattern匹配整个文件路径字符串 |
-user | 查找属主为指定用户的文件 |
-group | 查找属组是指定组的文件 |
-uid | 查找属主为指定uid的文件 |
-gid | 查找属主为指定gid的文件 |
-nouser | 查找没有属主的文件 |
-nogroup | 查找没有属组的文件 |
-type | 后接文件类型,常见类型有:f,d,l,s,b,c,p |
-a | 组合条件关系,表示与的关系 |
-o | 组合条件关系,表示或的关系 |
-not | 组合条件关系,表示非的关系 |
-size | 后接 +或者- n Unit ,这个值表示的是一个区间。-n 表示的区间是 [0,n-1],n 表示的区间是(n-1,n], +n 表示的区间是 (n,∞)。常用单位是:k,M,G,c(byte) |
-atime | 以天为单位查询文件时间。-n 表示[0,n) ,n 表示 [n,n+1),+n 表示[n+1,∞) |
-mtime | 查找文件的修改时间 |
-ctime | 查找文件的状态时间 |
-amin | 以分钟为单位查询文件时间。-n 表示[0,n) ,n 表示 [n,n+1),+n 表示[n+1,∞) |
-mmin | 查找文件的修改时间 |
-cmin | 查找文件的状态时间 |
-perm | 后接权限模式,常用数字格式的权限模式。755 表示匹配的权限恰好是755,/755 只要ugo任意一个中任何一个rwx位权限能匹配就OK,-755 ugo都必须要拥有对应的权限,可以大于这个权限。 |
处理动作 | 解释 |
---|---|
默认的处理动作 | |
-ls | 类似于 ls -l 结果 |
-delete | 删除查找到的文件,慎用 |
-fls | 后接文件,将查找到的结果保存到文件中 |
-ok cmd {} \; | 对查找到每个文件执行cmd |
-exec cmd {} \; | 同上就是不会每一个都询问了 |
常见用法:
用法 | 解释 |
---|---|
find / -name file -type [f|d] | 根据名字从根目录开始查找文件或目录 |
find / -user username | 根据用户名查找 |
find -name ‘*.[ch]’ | 使用通配符模糊查找时,一定要单引号括起来 |
find -iname snow.png | 忽略大小写 |
find -user joe -group joe | 指定用户和组 |
find -user joe -o -user jane | 指定用户名或组 |
find -not \ ( -user joe -o -user jane \ ) | 查找既不是joe也不是jane用户的文件,标记的地方中间是没有空格,博客的原因如没有空格显示有问题 |
find / -user joe -o -uid 500 | 在/ 下查找属主是joe或者uid是500的文件 |
find /tmp \ ( -not -user root -a -not -name ‘f*’ \ ) -ls | 找出/tmp目录下,属主不是root,且文件名不以f开头的文件 |
find /etc -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” | 查找etc目录中除了sane.d目录,其他以conf结尾的文件 |
find -perm 755 | 查找当前目录中权限是755的文件 |
find /tmp -ctime +3 -user joe -ok rm {} \; | 提示删除存在时间超过3天以上的joe的临时文件 |
find ~ -perm -002 -exec chmod o-w {} \; | 在你的主目录中寻找可被其它用户写入的文件 |