• 开发中常用linux命令


    1、创建目录mkdir

    创建目录命令,常用的参数-p,递归创建目录

    [root@web01 ~]# mkdir /data
    
    [root@web01 ~]# mkdir /data/a/b
    
    mkdir: cannot create directory ‘/data/a/b’: No such file or directory
    
    [root@web01 ~]# mkdir /data/a/b -p   #可以创建多级目录
    
    [root@web01 ~]#

     

    绝对路径   相对路径

    1、绝对路径  从根开始

          /data      /etc

    2、相对路径   不是从根开始的

           data

    2、 切换目录cd

    cd aa切换工作目录,cd ..返回上一级目录,cd / 返回根目录, cd 返回上次一的工作目录, cd~ 返回家目录。

    [root@web01 ~]# cd /opt   #切换到指定的目录下,   cd 目录 切换到当前的目录下的目录
    
    [root@web01 opt]# cd ..   #回到上一级
    
    [root@web01 /]# cd /   #返回根目录
    
    [root@web01 /]# cd -   返回上一次工作目录
    
    /
    
    [root@web01 /]# cd ~  #返回家目录
    
    [root@web01 ~]#

    3、 ls命令总结

    ls可以说是Linux系统最常用的命令之一,相当于windows下的dir命令。常用的参数如下:

    -a –all:列出目录下的所有文件,包括以 . 开头的隐含文件。

    -l 列出文件的详细信息也可以简写为ll

    total 32 代表当前目录下文件大小的总和为32K(每个目录的大小都按4K算)

    drwxr-xr-x 第一个字符有3种情况:-表示普通文件,d代表目录,l代表连接文件,b代表设备文件。

    后面的9个字符每3个为一组,分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限,若没有其中的任何一个权限则用-表示。执行的权限有两个字符可选x代表可执行,s代表套接口文件

    紧接着的数字2代表 aa这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。

    再接下来的root代表这个文件(目录)的属主为 用户root

    再接下来的root代表这个文件(目录)所属的用户组为 root

    28 代表文件的大小(字节数),目录的大小总是为28字节。

    Dec 28 20:13 代表文件(目录)的修改时间。

    c代表文件(目录)在名字。

     

    ~/.bashrc文件里添加export TIME_STYLE='+%Y/%m/%d %H:%M:%S' ,可修改ls -l命令里日期时间的显示格式,此操作只对当前用户生效。/etc/bashrc文件或者/etc/profile添加则对所有用户生效。

    -i 输出文件的 i 节点的索引信息。

    -d 将目录象文件一样显示,而不是显示其下的文件。

    -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
    文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
    接字(sockets)

    -r 对目录反向排序。

    -t 以时间排序。

    -u 以文件上次被访问的时间排序。

    -s 在每个文件名后输出该文件的大小。

    -S 以文件大小排序。

    -h 显示文件大小时增加可读性

    显示彩色目录列表
    打开/etc/bashrc, 加入如下一行:
    alias ls="ls --color"
    下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
    1.
    蓝色-->目录
    2.
    绿色-->可执行文件
    3.
    红色-->压缩文件
    4.
    浅蓝色-->链接文件
    5.
    灰色-->其他文件

    4、 pwd命令总结

    返回当前工作目录列表

    5、rmdir命令总结

    删除空目录

    6、文件创建命令touch

    用来修改文件时间戳,或者新建一个不存在的文件。

    -a   --time=atime--time=access--time=use  只更改存取时间。

    -d  使用指定的日期时间,而非现在的时间。

    -m   --time=mtime--time=modify  只更改变动时间。

    -t  使用指定的日期时间,而非现在的时间。

    [root@web01 data]# touch oldboy.txt
    
    [root@web01 data]# ll
    
    total 0
    
    drwxr-xr-x. 3 root root 14 Oct 11 00:41 a
    
    -rw-r--r--. 1 root root  0 Oct 11 01:09 oldboy.txt

    7、增加内容到文件vi 、echo

    方法1:使用vi命令打开vi编辑器,按i键进入编辑模式,可以输入内容,按esc键退出编辑模式,按:wq保存并退出,按:q退出,按:q!强制退出。

    方法2:使用echo命令

    echo命令打印内容到当前屏幕。

    [root@oldboyedu-sh01 ~]# echo "oldboyedu.com"
    
    oldboyedu.com
    
    [root@oldboyedu-sh01 ~]# echo "oldboyedu.com" >> /data/oldboy.txt
    
    [root@oldboyedu-sh01 ~]# cat  /data/oldboy.txt
    
    I am studying linux. at oldboyedu.com
    
    oldboyedu.com

    >>追加重定向  把内容追加到文件的结尾

    >  重定向     先把文件内容清空,把内容追加到文件的结尾

    [root@oldboyedu-sh01 ~]# echo "alex" >/data/oldboy.txt
    
    [root@oldboyedu-sh01 ~]# cat /data/oldboy.txt
    
    alex

    >> 1>>  追加重定向  把内容追加到文件的结尾

    >  1>   重定向     先把文件内容清空,把内容追加到文件的结尾

     

    2>> 错误追加重定向  把内容追加到文件的结尾

    2>  错误重定向     先把文件内容清空,把内容追加到文件的结尾

    [root@web01 data]# ech 2>> oldboy.txt
    
    [root@web01 data]# cat oldboy.txt
    
    alex
    
    -bash: ech: command not found
    
    [root@web01 data]# ech 2> oldboy.txt
    
    [root@web01 data]# cat oldboy.txt
    
    -bash: ech: command not found
    
    [root@web01 data]# ech >oldboy.txt
    
    -bash: ech: command not found
    
    [root@web01 data]# cat oldboy.txt

    8 、文件内容查看命令cat

    常用于读取、显示、拼接文件内容

    打印单个或多个文件内容

    将标准输入与文件内容合并显示(-被做为stdin文本的文件名)

    –s参数压缩相邻的空白行。

    –n参数显示行号

     

     

     

    9、 复制命令cp

    cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

    -f --force       强行复制文件或目录,不论目的文件或目录是否已经存在

     -i --interactive 覆盖文件之前先询问用户

     -p --preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间

    -r                  递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
    -a
    相当于-dpr

    有时候cp –f 还是提示是否覆盖,是因为别名的原因,可以通过alias命令查看,可以通过编辑~/.bashrc文件注释相关的内容,退出重新登录即可,此方法只对当前用户生效,修改/etc/bashrc文件或者/etc/profile文件对所有用户生效。也可以在cp命令加即可。

    [root@web01 data]# cp oldboy.txt /tmp/
    
    [root@web01 data]# ll /tmp/
    
    total 0
    
    -rw-r--r--. 1 root root  0 Oct 11 01:29 oldboy.txt

    10、 移动文件或者目录mv

    -f, --force   do not prompt before overwriting

    -i, --interactive  prompt before overwrite

    mv命令也可以用来给文件改名,

    11、 改名命令rename

    批量改名 ,rename需要提供三个参数,然后才能决定最终结果。第一个参数:被替换掉的字符串、第二个参数:替换成的字符串、第三个参数:匹配要替换的文件模式。

    rename .htm .html *.htm 将当前目录下所有的以.htm结尾的文件改名为以.hmtl结尾。

    12、 删除文件rm

    rm删除文件或者目录,生产场景尽量不要使用rm,非要使用的情况下,要先备份再删除。

    替代方法使用mv移动到临时目录,相当于回收站 。

    Find删除 :find /var/ -type f –exec rm {} ;

    exec处理查找的结果,rm对前面找到内容的处理命令,{}表示找到的内容,;转义

      

    常用参数如下:

    -f --force略过不存在的文件,不显示任何信息

    -d --directory删除可能仍有数据的目录

    -i --interactive 进行任何删除操作前必须先确认

    -r/R --recursive同时删除该目录下的所有目录层

    13、 查找命令find

    查找文件在一个目录里.命令格式:find 查找的位置 [OPTION]

    1)          列出目录及子目录下的所有文件及文件夹

    [root@oldboy ~]# find /opt

    /opt

    /opt/rh

    [root@oldboy ~]#

    [root@oldboy ~]# find /opt -print

    /opt

    /opt/rh

    [root@oldboy ~]#

    [root@oldboy ~]# find /opt -print0

    /opt/opt/rh[root@oldboy ~]#

    2)         -name参数指定了文件名所必须匹配的字符串。我们可以使用通配符*.txt-iname忽略文件名的大小写

    [root@oldboy oldboy]# ll

    total 0

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd1.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find . -name "*.log"

    ./oldboy3.log

    ./oldboy2.log

    ./oldboy1.log

    [root@oldboy oldboy]#

    3)         !否定参数

    [root@oldboy oldboy]# ll

    total 0

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd1.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find . ! -name "*.log"

    .

    ./wd1.txt

    ./wd4.txt

    ./wd3.txt

    ./wd2.txt

    [root@oldboy oldboy]#

    4)         -type根据文件类型搜索(d 目录 f 普通文件 s 套接字 l 符号连接 b 设备 c 字符设备等)

    [root@oldboy oldboy]# find /etc -type d |head -3

    /etc

    /etc/popt.d

    /etc/libreport

    [root@oldboy oldboy]#

    [root@oldboy oldboy]# find /etc -type l |head -3

    /etc/rc.d/rc4.d/S80postfix

    /etc/rc.d/rc4.d/K10psacct

    /etc/rc.d/rc4.d/K95rdma

    [root@oldboy oldboy]#

    5)         根据文件时间进行搜索

    -atime用户最近一次访问时间

    -mtime文件内容最后一次被修改时间

    -ctime文件元数据(例如权限或所有权)最后一次改变的时间

    以上三个都可以做为find的时间选项,它们可以用整数值指定,单位是天,还可以带“+ -,-表示小于,+表示大于

    -amin(访问时间)

    -mmin(修改时间)

    -cmin (变化时间)这三个参数的单位是分钟。

    [root@oldboy oldboy]# find . -type f -atime -7

    ./wd1.txt

    ./oldboy3.log

    ./oldboy2.log

    ./wd4.txt

    ./wd3.txt

    ./oldboy1.log

    ./wd2.txt

    [root@oldboy oldboy]# find . -type f -atime +7 

    [root@oldboy oldboy]# find . -type f -amin +7    

    ./wd1.txt

    ./oldboy3.log

    ./oldboy2.log

    ./wd4.txt

    ./wd3.txt

    ./oldboy1.log

    ./wd2.txt

    [root@oldboy oldboy]# find . -type f -amin -7

    ./wd1.txt

    [root@oldboy oldboy]#

    6)         -newer参数,指一个参考文件,然后找出比指定文件更新(修改时间)所有文件。

    [root@oldboy oldboy]# ll -t

    total 0

    -rw-r--r-- 1 root root 0 2016/03/08 12:15:49 wd1.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find . -type f -newer wd2.txt -exec ls -l {} ;

    -rw-r--r-- 1 root root 0 2016/03/08 12:15:49 ./wd1.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy3.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy2.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy1.log

    [root@oldboy oldboy]#

    7)         -size基于文件大小的搜索 –size +2k大于2k,-size -2M 小于2M  b-块、c-字节、w-字、k-1024字节、M-1024kG-1024M

    [root@oldboy oldboy]# ls -Slh

    total 712K

    -rw-r--r-- 1 root root 576K 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root root  68K 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root root  48K 2016/03/08 12:26:40 wd1.log

    -rw-r--r-- 1 root root 3.9K 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 root root  424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root root  292 2016/03/08 12:26:19 oldboy2.log

    -rw-r--r-- 1 root root  292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root root   21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 root root    0 2016/03/08 12:15:49 wd1.txt

    -rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find -type f -size +2k -exec ls -lS {} ;

    -rw-r--r-- 1 root root 68892 2016/03/08 12:27:03 ./wd4.log

    -rw-r--r-- 1 root root 3893 2016/03/08 12:26:29 ./oldboy3.log

    -rw-r--r-- 1 root root 48894 2016/03/08 12:26:40 ./wd1.log

    -rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 ./wd2.log

    [root@oldboy oldboy]#

    [root@oldboy oldboy]# find -type f -size -2M -exec ls -lSh {} ;

    -rw-r--r-- 1 root root 68K 2016/03/08 12:27:03 ./wd4.log

    -rw-r--r-- 1 root root 424 2016/03/08 12:26:54 ./wd3.log

    -rw-r--r-- 1 root root 0 2016/03/08 12:15:49 ./wd1.txt

    -rw-r--r-- 1 root root 3.9K 2016/03/08 12:26:29 ./oldboy3.log

    -rw-r--r-- 1 root root 292 2016/03/08 12:26:19 ./oldboy2.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd4.txt

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd3.txt

    -rw-r--r-- 1 root root 21 2016/03/08 12:26:03 ./oldboy1.log

    -rw-r--r-- 1 root root 48K 2016/03/08 12:26:40 ./wd1.log

    -rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd2.txt

    -rw-r--r-- 1 root root 576K 2016/03/08 12:26:45 ./wd2.log

    -rw-r--r-- 1 root root 292 2016/03/08 12:26:13 ./oldboyw.log

    [root@oldboy oldboy]#

    8)         -delete删除找到的文件

    [root@oldboy oldboy]# ll

    total 712

    -rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

    -rw-r--r-- 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root root  48894 2016/03/08 12:26:40 wd1.log

    -rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

    -rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root  68892 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

     [root@oldboy oldboy]# find -type f -name wd1.log -delete

    [root@oldboy oldboy]# ll

    total 664

    -rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

    -rw-r--r-- 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

    -rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root root  68892 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]#

    9)         -perm基本文件权限、-user基本于所有权匹配。

    [root@oldboy oldboy]# ll

    total 664

    -rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

    -rwxrwxrwx 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

    -rwxrwxrwx 1 root root 588902 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

    -rwxrwxrwx 1 root root  68892 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find -type f -perm 777 -exec ls -l {} ;

    -rwxrwxrwx 1 root root 68892 2016/03/08 12:27:03 ./wd4.log

    -rwxrwxrwx 1 root root 3893 2016/03/08 12:26:29 ./oldboy3.log

    -rwxrwxrwx 1 root root 588902 2016/03/08 12:26:45 ./wd2.log

    [root@oldboy oldboy]#

    [root@oldboy oldboy]# ll

    total 664

    -rw-r--r-- 1 oldboy oldboy     21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:19 oldboy2.log

    -rwxrwxrwx 1 oldboy oldboy   3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root   root        0 2016/03/08 12:15:49 wd1.txt

    -rwxrwxrwx 1 root   root   588902 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root   root      424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd3.txt

    -rwxrwxrwx 1 root   root    68892 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find . -type f -user oldboy -exec ls -l {} ;

    -rwxrwxrwx 1 oldboy oldboy 3893 2016/03/08 12:26:29 ./oldboy3.log

    -rw-r--r-- 1 oldboy oldboy 292 2016/03/08 12:26:19 ./oldboy2.log

    -rw-r--r-- 1 oldboy oldboy 21 2016/03/08 12:26:03 ./oldboy1.log

    -rw-r--r-- 1 oldboy oldboy 292 2016/03/08 12:26:13 ./oldboyw.log

    [root@oldboy oldboy]#

    10)      -exec:执行其他命令。{}是一个与-exec选项搭配使用的特殊字符串。表示一个匹配,对于每一个匹配的文件,{}会被替换成相应的文件名。-exec执行是每搜到一行就执行一次后面的命令,可以使用+参数,将搜索到的文件名形成列表做为命令参数,这样就可以少执行几次命令了。

    [root@oldboy oldboy]# ll

    total 664

    -rw-r--r-- 1 oldboy oldboy     21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:19 oldboy2.log

    -rwxrwxrwx 1 oldboy oldboy   3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root   root        0 2016/03/08 12:15:49 wd1.txt

    -rwxrwxrwx 1 root   root   588902 2016/03/08 12:26:45 wd2.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root   root      424 2016/03/08 12:26:54 wd3.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd3.txt

    -rwxrwxrwx 1 root   root    68892 2016/03/08 12:27:03 wd4.log

    -rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]# find -type f -name "wd*.log" -exec rm -f {} ;

    [root@oldboy oldboy]# ll

    total 16

    -rw-r--r-- 1 oldboy oldboy   21 2016/03/08 12:26:03 oldboy1.log

    -rw-r--r-- 1 oldboy oldboy  292 2016/03/08 12:26:19 oldboy2.log

    -rwxrwxrwx 1 oldboy oldboy 3893 2016/03/08 12:26:29 oldboy3.log

    -rw-r--r-- 1 oldboy oldboy  292 2016/03/08 12:26:13 oldboyw.log

    -rw-r--r-- 1 root   root      0 2016/03/08 12:15:49 wd1.txt

    -rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd2.txt

    -rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd3.txt

    -rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd4.txt

    [root@oldboy oldboy]#

    [root@oldboy oldboy]# find -type f -atime -2 -exec cp {} /tmp ;

    [root@oldboy oldboy]# cd /tmp/

    [root@oldboy tmp]# ll

    total 20

    -rw-r--r--  1 root root   21 2016/03/08 12:51:56 oldboy1.log

    -rw-r--r--  1 root root  292 2016/03/08 12:51:56 oldboy2.log

    -rwxr-xr-x  1 root root 3893 2016/03/08 12:51:56 oldboy3.log

    -rw-r--r--  1 root root  292 2016/03/08 12:51:56 oldboyw.log

    drwx------  2 root root 4096 2016/03/08 09:12:57 ssh-EAyLCQ1743

    -rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd1.txt

    -rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd2.txt

    -rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd3.txt

    -rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd4.txt

    -rw-------. 1 root root    0 2016/03/06 16:21:46 yum.log

    [root@oldboy tmp]#

    11)      -maxdepth n 查找的深度。

    [root@oldgirl oldboy]# find . -maxdepth 1 -type d ! -name "."

    ./ext

    ./test

    ./xiaofan

    ./xiaodong

    ./xingfujie

    [root@oldgirl oldboy]#

    14、 文件查看命令之head、tail 、more、less

    more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 more命令从前向后读取文件,因此在启动时就加载整个文件。

    +n      从笫n行开始显示

    常用操作命令

    Enter    向下n行,需要定义。默认为1行
    
    Ctrl+F   向下滚动一屏
    
    空格键  向下滚动一屏
    
    Ctrl+B  返回上一屏
    
    =       输出当前行的行号
    
    :f     输出文件名和当前行的行号
    
    V      调用vi编辑器
    
    !命令   调用Shell,并执行命令 
    
    q       退出more

    less命令更加弹性,功能更加强大,可以向前、向后翻看文件,同时还有更多的搜索功能,可以向上、向下搜索。

    常用操作命令:

    b  向后翻一页
    
    d  向后翻半页
    
    u  向前滚动半页
    
    y  向前滚动一行
    
    [pagedown]: 向下翻动一页
    
    [pageup]:   向上翻动一页
    
    Q  退出less 命令

    head取文件的前几行,如果不加参数默认取文件的前10行。常用参数-n后接数字,表示显示前n行,可以简写成head -5,取文件前5行。

    tail取文件的后几行,如果不加参数默认取文件的后10行。常用参数-n后接数字,表示显示后n行,可以简写成head -5,取文件前5行。-f参数用于接收文件尾部的变化,常用于查看日志文件更新。

    15、 检索命令grep

    grepLinux系统命令三剑客之一,用于文本搜索,能够接受正则表达式,生成各种各样的输出。常用于过虑检索,常用的参数如下:

    搜索包含特定模式的文本行:

    也可以像下面这样从stdin中读取

    单个grep 命令可以对多个文件时间进行搜索:

    —color选项可以在输出行中着重标记出匹配到的单词:

    grep 命令只解释match_test中的某些特殊字符,如果要使用正则表达式,需要使用-E参数,或者使用egrep命令。

    只输出文件中匹配到的文本部分,使用-o参数

    输出包含匹配到的行之外的所有行,使用-v参数

    统计匹配文件或者文本中匹配字符串的行数(只是行数而不是次数),使用-c参数

    输出包含匹配字符串的行号:

    搜索多个文件找出匹配文本位于那个文件之中,使用-l参数,-L结果相反。

    如果需要在多级目录中对文本进行递归搜索,使用参数-R –n

    忽略样式中的大小写,使用参数-i

    匹配多个样式,使用-e参数

    此外还可以将多个样式写在一个文件中,然后使用-f参数读取文件。

    在搜索中指定或排队文件

    可以搜索过程上指定(include)或排除(exclude)某些文件。要排队目录,可以使用—exclude-dir选项。

    输出匹配文本之前或者之后的几行,使用-A n(之后n行),-B n(之前n行),-C n(之前n行,之后n行)

    -E可以有多个匹配条件相当于egrep

    -i忽略大小写

    16、 三剑客之sed命令

    sedLinux系统命令三剑客之一,是流编辑器(stream editor),常用于取行及文本替换,常见用法如下:

    删除空行,用正则表达式^$配置空行,d表示删除符合模式的行:

    [root@oldboy oldboy]# cat test.txt

    My name is wd.

     

    I am stuty Linux.

     

    Line3

     

    Line4

     

    line5

    [root@oldboy oldboy]# sed '/^$/d' test.txt

    My name is wd.

    I am stuty Linux.

    Line3

    Line4

    line5

    [root@oldboy oldboy]#

    删除行首空格

    [root@oldboy oldboy]# cat test.txt

    My name is wd.

     

    I am stuty Linux.

     

      Line3

     

    Line4

     

       line5

    [root@oldboy oldboy]# sed 's#^ * ##g' test.txt

    My name is wd.

     

    I am stuty Linux.

     

    Line3

     

    Line4

     

    line5

    [root@oldboy oldboy]#

     

    打印文件2-5行及删除,p表示打印,打印某个选择的数据,通常与-n参数一起使用,-n参数是安静模式,只有经过sed处理的行才显示出来,其他不显示。

     [root@oldboy oldboy]# cat -n /etc/passwd | sed -n '2,5p'

         2       bin:x:1:1:bin:/bin:/sbin/nologin

         3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

         4       adm:x:3:4:adm:/var/adm:/sbin/nologin

         5       lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    [root@oldboy oldboy]# cat -n /etc/passwd |sed '2,20d'

         1       root:x:0:0:root:/root:/bin/bash

        21       saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

        22       postfix:x:89:89::/var/spool/postfix:/sbin/nologin

        23       sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

        24       tcpdump:x:72:72::/:/sbin/nologin

        25       oldboy:x:500:500::/home/oldboy:/bin/bash

        26       oldgirl:x:501:501::/home/oldgirl:/bin/bash

        27       msn:x:502:502::/home/msn:/bin/bash

    [root@oldboy oldboy]#

     

    在第2行后面添加一行内容“hello wd!”,a表示添加,后接字符串,添加到当前行的下一行。

    [root@oldboy oldboy]# cat -n /etc/passwd |sed '2a hello wd!'|head -5

         1       root:x:0:0:root:/root:/bin/bash

         2       bin:x:1:1:bin:/bin:/sbin/nologin

    hello wd!

         3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

         4       adm:x:3:4:adm:/var/adm:/sbin/nologin

     [root@oldboy oldboy]# cat -n /etc/passwd |sed '2a hello "wd! hell everyone"'|head -5

         1       root:x:0:0:root:/root:/bin/bash

         2       bin:x:1:1:bin:/bin:/sbin/nologin

    hello "wd!

    hell everyone"

         3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

    [root@oldboy oldboy]#

     

    在第2行这前添加一行内容“hello wd!,i表示插入,后接字符串,添加到当前行的上一行。

    [root@oldboy oldboy]# cat -n /etc/passwd |sed '2i hello wd! hell everyone'|head -5

         1       root:x:0:0:root:/root:/bin/bash

    hello wd!

    hell everyone

         2       bin:x:1:1:bin:/bin:/sbin/nologin

         3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

    [root@oldboy oldboy]# cat -n /etc/passwd |sed '2i hello "wd! hell everyone"'|head -5

         1       root:x:0:0:root:/root:/bin/bash

    hello "wd!

    hell everyone"

         2       bin:x:1:1:bin:/bin:/sbin/nologin

         3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

    [root@oldboy oldboy]#

     

    2-4内容替换成“I am study Linux.c表示替换,后接字符串,用它替换n1-n2之间的行。

    [root@oldboy oldboy]# cat -n /etc/passwd |sed '2,4c hello "I am study Linux."'|head -5

         1       root:x:0:0:root:/root:/bin/bash

    hello "I am study Linux."

         5       lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

         6       sync:x:5:0:sync:/sbin:/bin/sync

         7       shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    [root@oldboy oldboy]#

     

    -i参数将修改的结果保存到文件中。

    [root@oldboy oldboy]# cat wd.txt

    root:x:0:0:root:/root:/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

     

    [root@oldboy oldboy]# sed -i '2,3d' wd.txt

    [root@oldboy oldboy]# cat wd.txt

    root:x:0:0:root:/root:/bin/bash

    adm:x:3:4:adm:/var/adm:/sbin/nologin

    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    [root@oldboy oldboy]#

    test.txt文件中的wd替换成oldboys表示搜索,也可以替换

     [root@oldboy oldboy]# cat test.txt

    My name is wd.

     

    I am stuty Linux.

     

      Line3

     

    Line4

     

       line5

     

    [root@oldboy oldboy]# sed -i 's#wd#oldboy#g' test.txt

     

    [root@oldboy oldboy]# cat test.txt

    My name is oldboy.

     

    I am stuty Linux.

     

      Line3

     

    Line4

     

       line5

    [root@oldboy oldboy]#

     

     使用sed命令取本机IP

    [root@oldboy oldboy]# ifconfig| sed -n '2p'

              inet addr:192.168.33.128  Bcast:192.168.33.255  Mask:255.255.255.0

     

    [root@oldboy oldboy]# ifconfig| sed -n '2p'|sed 's#.*addr:##g'

    192.168.33.128  Bcast:192.168.33.255  Mask:255.255.255.0

     

    [root@oldboy oldboy]# ifconfig| sed -n '2p'|sed 's#.*addr:##g'|sed 's#Bca.*$##g'

    192.168.33.128 

    [root@oldboy oldboy]# ifconfig eth0|sed -n '2p'| awk -F[:" "]+ '{print $4}'

    192.168.33.128

     

    使用&符号标记匹配到的字符串,我们就可以在后面的替换中使用己匹配到的内容。

    [root@oldboy oldboy]# echo "This is a test"|sed 's#w+#[&]#g'

    [This] [is] [a] [test]

    pattern)用于匹配子串,对于匹配到的第一个子串,在后面可以1引用,以此类推,这种引用被称为后向引用。-r参数表示使用扩展的正则表达式。

    [root@oldboy oldboy]# echo "This is a test"|sed -r 's#This (.*) a (.*)$#1 2#g'

    is

    test

    [root@oldboy oldboy]#

     

    删除空行、注释、及行首空格

    [root@oldboy oldboy]# cat test.txt

    #My name is oldboy.

     

    I am stuty Linux.

     

      Line3

     

    Line4

     

       line5

    This is a test.

     

    [root@oldboy oldboy]# sed '/^$/d' test.txt |sed  '/^#.*$/d'|sed 's#^ * ##g'

    I am stuty Linux.

    Line3

    Line4

    line5

    This is a test.

    [root@oldboy oldboy]#

    注释passwd文件的前3行。

    [root@oldboy oldboy]# head -5 /etc/passwd|sed 's#^###g'

    #root:x:0:0:root:/root:/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

    [root@oldboy oldboy]#

     

    17、 三剑客之awk

    是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk做大的优势。awk常用于取列。

     

    
    

     

     

  • 相关阅读:
    国内首篇介绍JanOS物联网操作系统的文章
    安卓MonkeyRunner源码分析之与Android设备通讯方式
    MonkeyRunner源码分析之-谁动了我的截图?
    学习Swift写iOS?那写安卓和WinPhone呢?请看一石三鸟终极解决方案
    UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
    jdbc基础 (二) 通过properties配置文件连接数据库
    对于Servlet、Servlet容器以及一个Servlet容器-Tomcat
    5种分布式共享session的方法
    企业项目构建学习(一)maven
    SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
  • 原文地址:https://www.cnblogs.com/sui776265233/p/10192971.html
Copyright © 2020-2023  润新知