linux常用命令grep、find、vim、alias

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文件并显示其详细信息

你可能感兴趣的:(linux常用命令grep、find、vim、alias)