1.定义一个对所有用户都生效的命令别名,例如:lftps='lftp 172.168.0.1/pub'
在/etc/profile文件的最后写入命令别名:
alias lftps='lftp 172.168.0.1/pub'
由于此文件会在所有用户登录时执行,所以重新登录的用户就会生效此命令别名。
2.显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" /etc/passwd
-v 选项表示过滤去掉符合条件的行,$表示锚定行尾位置。
3.找出/etc/passwd文件中,包含二位数字或三位数的行。
grep '\<[0-9]\{2,3\}\>' /etc/passwd
[0-9]表示一个数字。
\{2,3\}表示数字字符有2位或3位
前后的'\<.....\>'表示锚定词首和词尾。避免把4位数字的行也搜索出来。
4.显示/proc/meminfo文件中以大写或小写S开头的行;用三种方式实现
grep -E '^s|^S' /proc/meminfo
-E表示使用扩展正则表达式,
^表示锚定行首
'^s|^S' 表示行首为大写S或小写s
grep -i '^s' /proc/meminfo
-i表示忽略大小写
grep '^[sS]' /proc/meminfo
[sS]使用范围语法字符来表示大写S或小写s
awk '/^[sS]/{print $0}' /proc/meminfo
awk命令也可以实现搜索匹配的功能
sed -n '/^[sS]/p' /proc/meminfo
sed命令也有搜索显示符合条件的行的功能。
5.使用echo输出一个绝对路径,使用egrep取出路径名,类型执行 dirname /etc/passwd的结果
一个绝对路径可能是一个文件或一个目录。而且目录的后最后可以/结尾也可以不以/结尾。
echo "/Absolute/path/to/file"|egrep -o ".*/\<"
echo "/Absolute/path/to/dir/"|egrep -o ".*/\<"
上面两个语句的显示结果为/Absolute/path/to/
-o 表示只显示符合匹配条件的内容,不会显示整行内容
.* 表示匹配任何字符任意次,也包含了路径分隔符
\< 表示锚定单词的词首位置,"/\<"表示"/”号后是某个单词的词首位置,即"/"之后一定要有一个单词。这个可以避免最右边的“/"后面为行尾的情况,
6.找出ifconfig中ip地址,要求结果只显示IP地址
ifconfig |grep -Po "[\d.]+(?= netmask)"|grep -v "127.0.0.1"
-P表示使用perl正则表达式来解析
[\d.]+ 表示一个或多个[\d.]范围字符,即一个或多个数字或"."号的字符
(?= netmask) :表示其后跟着“两个空格+netmask”字符,(?=...)表示这里的内容不会被匹配到结果中去。
由于有一个"lo“的回路IP127.0.0.1不是我们需要的所以要把它过滤掉。
7.vim定制自动缩进四个字符。
全局定制:/etc/vimrc
用户个人定制:~/.vimrc
在文件尾部加入两行:
set ai #设置自动缩进
set ts=4 #设置缩进的字符数
保存文件退出,对于后面打开vim程序会发现设置已生效
8.编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和
#!/bin/bash
add_user()
{
userName=$1
id $userName && userdel -r $userName
useradd $userName
echo "123456"|passwd --stdin $userName
}
add_user "user1"
add_user "user2"
add_user "user3"
echo -e "The three user's UID Summation:\c"
cat /etc/passwd|grep "^user[1-3]:"|awk -F: '{sum+=$3}END{print sum}'
创建用户前先检查用户是否存在,如果存在就先删除用户然后再创建。
9.find用法以及常用用法的实例演示。
find命令是在目录层级结构中查找符合条件的文件,所以它可以同时查指定目录及其子目录。同时它还可以对搜索结果执行一定的文件处理操作。
命令语法:
find [选项] [查找路径]... [查找条件] [处理操作]
其中:
(1)查找路径:缺省值为当前路径,路径可有有多个,路径之间以空格隔开
(2)查找条件:
-name "文件名称”,支持通配符
-iname "文件名称“ ,与name基本相同,但是它忽略字母大小写
-user username 查找指定用户属主的文件,同样还有-uid UID
-group groupName查找属于指定组的文件,同样还有-gid GID
-type filetype:根据文件类型查找,常用的类型为"f"普通文件,"d"目录文件
-size [+|-]数字单位:常用单位为k、M、G,+号表示大于,-号表示小于等于,无符号则以10M为例,表示9M<文件大小<=10M。
-atime [+|-]数字 :表示文件的最后被访问时间,以天为单位,+号表示大于等于天数+1,-号表示小于天数,无符号则以10为例,表示 10<=文件最后访问时间<11 。同样还有-mtime表示文件内容数据的最后修改时间,-ctime表示文件的元数据的最后修改时间
-amin表示文件的最后被访问时间,以分钟为单位,规则与-atime一样。同样还有-mmin表示文件内容数据的最后修改时间 和-cmin 表示文件的元数据最后修改时间
-perm [+|-] MODE 表示根据文件的访问权限为条件。
-a表示前后两个条件要同时满足(与的关系)
-o表示前后两个条件满足一个即可(或的关系)
-not 或 !表示后面的条件取反。
(3)处理操作
-print 显示结果在屏幕上,这是默认操作
-ls 对结果文件使用ls -l 长格式显示有屏幕上。
-delete: 删除查找到的文件
-fls /路径/结果文件名 : 把结果以长格式信息保存到指定的文件中
-exec 命令 {} \; :表示对查找到的文件执行相应的命令,{}表示查找到的文件在命令中的占位符。
-ok 命令 {} \; :与exec相同,但是对每个文件进行操作前,会弹出提示信息等用户确认。
常用用法的实例演示如下:
$find /etc -name hosts
在目录/etc中查找文件hosts
$find / -size +204800
在根目录下查找大于100MB的文件,size是以块为单位,2块=1K
$find /tmp -user user1
在/tmp目录下查找所有者为user1的文件
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
$ find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
$ find /etc -name hosts -exec ls -l {} \;
在/etc下查找hosts文件并显示其详细信息