Linux命令总结

命令总结

 1、mkdir  建立目录    ( rmdir (鸡肋) 删除空目录 )   

     mkdir  ab  cd   创建俩个目录

     mkdir-p          mkdir -p  /aa/bb/cc       递归创建目录    

     cd  /  ;  mkdir  555       分号 分割 两个命令能够一起执行.

 2、ls   列印  ,显示

     ls  -l   列印目录以长格式; 

     ls  -a   所有 ;包括隐含 文件 

     ls   -l  /etc  |more  管道符在后面,分页显示  ;

     ls   -d   查看目录 ; 

     ls  -ld ; 参数组合 

     ll = ls -l  

     ls -t     修改时间排序

     ls -r     倒序排序

     ls -i      显示 inod 节点

     ls -l /etc |grep "^d"     显示 目录    ^表示 以这个开头

     ls -l --time-style=long-iso /etc     标准 时间 输出


 3、cd    进入目录  change directory

     相对路径

     相对路径是针对当前路径来说的

     .      代表当前路径,    

     cd date  当前目录的 =./date

     cd .        进入当前路径 ,执行结果当前路径不变    

     cd  ..      进入上一级路经

     cd  /      直接进根

     绝对路径 

     从根开始算 

     cd /       进入 根

     cd  /aa/bb/cc   进入 cc

     pwd       print word  directory    打印当前目录  显示当前目录 

4、touch  创建文件

     touch /data/aa.txt   创建文件

     ls       /data             显示data下文件

     touch stu{1..100}      创建 stu 开头的 100个文件

5、Vi    编辑  

     a、 i 进入编辑模式 

     esc 退出到命令模式   

    :qw  写入退出  

    :q直接退出

    :q! 强行 直接退出

 6、cat    看文件内容

      cat   /aa/old.txt

      cat >old.txt         创建文件并记入内容。或者替换原来文件内容
       iam 

       ctrl +c 

       cat >>old.txt<<oo       追加 内容 不替换 。两对相同字母夹起的部分 。
       > dafafafsafdfsa 

       > oo

       cat  /aa.txt -n  显示行号

 7、echo   打印  

     echo “I am robin” 〉old.txt     >重定向追加文本覆盖到文件。如果没有文件 会创建,如果有会清空内容覆盖成新的内容

     echo “I am robin” >>             >>追加重定向文本不覆盖到文件

                                                        <

                                                        <<

                                                        箭头是数据的流向。

     > old.txt    清空 old.txt

      echo 1 2 3 4 > old.txt      加入内容       
      xargs -n 2 <old.txt          分成 两组      将old.txt内容 给  xargs 处理 

      1 2                                  结果

      3 4

      输入 0+小于号(0可不加)            0< (<输入重定向)  0<<  (<<输入追加重定向)

      正常输出  1+大于号(1可不加)    1>  ( >输出重定向 )   1>>    (>>输出追加重定向)

      正常输出  2+大于号(2必需加)    2>  ( 错误输出重定向 )     2>>    (错误输出追加重定向)

      echo old >c.txt 2>&1    ====    echo  old >c.txt   2>c.txt

8、xargs   从标注输入获取内容创建和执行命令    -n 数字   分组

     echo 1 2 3 4 5 6 7 8 >old.txt ; xargs -n 4 <old.txt

     分号 分割 两个命令 ,1  将内容 输进 old.txt   2 分组

    1 2 3 4

    5 6 7 8

    find . -type f |xargs sed -i 's#robin#lubin#g'

  9、printf  打印


10、ifconfig  -a   查看所有 网卡,包括未激活

11、lspci | grep Ethernet 检查计算机上的以太网卡设备是否被内核检测到

 

12、ifconfig eth0 up    激活 eth0 网卡

 

13、;分隔多个命令

 

14、cp  拷贝文件   cp [-aipru]   源文件  目标文件 

      -a  = -pdr

      -d  若源文件为链接文件,link file ,则复制链接文件属性而非档案本身;

      -f   强制,若目标文件已经存在,且无法开启,则移除后再试;

      -i   若目标文件已经存在时,在覆盖时先询问

      -r   递归 ,用于复制目录;

      -u  若目标存在,则目标文件比源文件旧才复制。

      -p  连同档案属性一同拷贝过去,而非使用默认属性

        若源文件时多个,则目标文件在最后,且时目录。

         cp -a /cptest/new/* /cptest/old  将 目录new 下的所有文件和目录 考到 目录old 下 

         rm -r /cptest/old/*                      删除 old 下所有文件目录

         rm -r /cptest/old                        删除 old 目录

         cp -a /cptest/new  /cptest/old 或 cp -a /cptest/new/  /cptest/old  将 目录new 考到 目录old 下

         * --通配符,代表所有

         cp  /dev/文件    /tmp/     

          \cp /mnt/test.txt  /tmp             如目标文件夹存在 同名文件 +\则无提示直接覆盖  (忽略别名)    

           /bin/cp /mnt/test.txt  /tmp      如目标文件夹存在 同名文件 +\则无提示直接覆盖  (忽略别名)

           unalias  cp                               取消  cp的别名。

  15、mv   移动文件或目录     mv /dev/oldboy.txt  /

        mv  [-ifu]  [源文件/源目录]  [目标文件/目标目录]

       -i 如果目标存在,询问是否覆盖

       -f 强制,不询问

       -u若目标存在,源文件新才会移动 

        mv  /aaa  /bbb   ==== 改名  

        mv `find /data -type f -name "*.txt"` /tmp

        查找到 /data 下的 文本文件 然后 移动到  /tmp

16、rm   删除文件      rm -f  不提示直接删除 

       rm-fr  删除目录(有文件的)  谨慎用   -r递归删除 

       find /da -type f -name "robin" -exec rm {} \;    用find删除.

17、 ..上级目录 .当前目录   cd..

18、which  ls    显示命令所在目录 

19、head显示文件头部    

       head -2  /dev/t .txt     -2 取文档前 两行  默认10行  前面10行

20、tail   显示文件尾部  

       tail -1 robin.txt     显示 文档 尾部 一行 

21、path   环境变量   命令指明所在目录 ,否则系统找不到 。

       PATH="$PATH:/oldboy"   如要永久生效要加在配置文件里

22、whereis  whereis ls  

23、yum install tree -y  安装 tree 命令

24、tree  /dev 显示目录结构

        tree -Ld 1 /oldboy      仅显示 一级目录    L 层数   d 目录  1一层

/oldboy
├── ext
├── test
├── xiaodong
├── xiaofan
└── xingfujie


25、man 命令帮助  man mkdir   --help  mkdir --help

26、网卡开机链接启动  vi/etc/sysconfig/network-scripts/目录下ifcfg-eth0这个文件,把ONBOOT="no"改为yes  

27、find 查找   

       -type     f (file ) d(dierctory)  c(character)  

       -name    ""

        -mtime   按修改时间

        -atime    访问时间

         -ctime   改变时间、文件属性改变  

         find / -type d -name "etc"

28、|  管道

   find /data -type d -name "cc" -mtime 1 |xargs rm -fr    

   从   /data  目录 查找  类型是目录的 名字为 cc 的  时间为 在一天之内改动的 目录 然后管道至 xargs 强制删除 

29、 alias 别名  

        显示和设置系统别名     

        \ 和使用全路径,忽略别名。

30、seq   打序列。

      seq   1(开始)   3公差    10 (结束)

       1
       4
       7
      10

       seq 100 > aa.txt

       head -30 aa.txt| tail -11

      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30

31、

33、date -s '20180201 01:01:01'  修改时间 

34、 cat /etc/redhat-release                    查看版本
                     CentOS release 6.9 (Final)
        uname -r                                         查看内核
                      2.6.32-696.20.1.el6.x86_64
        uname -m                                       查看  32  /64 位
                      x86_64
35、ps -ef |grep ssh   查看shh进程
root      7948     1  0 21:27 ?        00:00:00 /usr/sbin/sshd
root      8171  7948  0 22:01 ?        00:00:00 sshd: root@pts/0 
root      8283  8175  0 23:03 pts/0    00:00:00 grep ssh

36、netstat -lntup |grep ssh   

      查看 ssh 进程监听过程

37、  /etc/init.d/iptables stop  关闭防火墙

38、 /etc/init.d/sshd restart   重启动 ssh 

39、rz 传送文件

       rz -y  强行覆盖。

40、sz  下载文件

41、useradd lu  增加用户

42、passwd    修改密码

43、whoami   查看当前用户

44、hostname  显示和设置主机名

       hostname robin  临时设置主机名为robin

       vi /etc/sysconfig/network  永久修改主机名.

45、su - root   切换至 root 用户

46、sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

      关闭selinux 步骤  

      vi /etc/selinux/config 

      cp /etc/selinux/config  /etc/selinux/configold  

      sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

      sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

      getenforce

      setenforce  0    不重启生效   Permissive

47、vi /etc/inittab   查看和更改运行级别   (永久要vi)

      Default runlevel. The runlevels used are:

#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

     init 0  关机

     init 6  重起

     runlevel   看运行级别。

50、shutdown  –h now   关机命令

Init  0

halt

reboot    重启

shutdown  –r

init  6

51、  /etc/init.d/iptables  stop  临时停防火墙

/etc/init.d/iptables  status  查看状态

Chkconfig  iptables  off    永久停防火墙

52、echo ‘LANG=”zh_CN.UTF-8”’>/ect/sysconfig/i18n

.  /ect/sysconfig/i18n   生效

更改字符集 vi或 echo

53、history 察看历史  –c 清空历史 –d 铲除指定的。

54、export TMOUT=10  10秒钟退出登录

55、exportHISTORY=5   命令行历史记录5个 

56、exportHISFILESIZE=5   命令行文件历史记录5个~/.bash_history

57、echo ‘exportTMOUT=300’>>/etc/profile   永久生效

echo ‘exportHISTSIZE=5’>>/etc/profile

echo ‘exportHISTFILESIZE=5’>>/etc/profile

source/etc/profile   此命令使配置生效,不用重新启动系统。

58、>/etc/issue.net

>/etc/issue

清除版本信息。

59、mount 挂载

Mount  /dev/cdrom /mnt

df –h  察看设备挂载点

60、关闭selinux

      getenforce  查看     enforcing

      setenforce 0   临时关闭    Permissive   这个为 提示但不干预状态 

      sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 

     (或  sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  )

      这个时候  getenforce  查看   仍为 Permissive

      vi 发现已经文件内容 改变 (或 grep SELINUX=disable /etc/selinux/config) ,重启动生效。    

61、配置 rsync 服务(部分记录)


rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

uid=rsync
gid=rsync
use chroot=no
max connections=200
timeout=300
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log
[backup]
path=/backup
ignore errors
read only=false
list=false
hosts allow=172.16.1.0/24
#hosts deny=0.0.0.0/32(allow 和deny 只要一个 )
auth users = rsync_backup

secrets file = /etc/rsync.password     

61、date -s '2018/02/08 11:15:00'  

62、nl  nginx.conf    nl 为显示行号 命令。

   

     1  stu01
     2  stu02
     3  stu03
     4  stu04
     5  stu05
     6  stu06
     7  stu07
     8  stu08
     9  stu09
    10  stu10
    11  stu11
    12  stu12
    13  stu13
    14  stu14
    15  stu15
    16  stu16
    17  stu17
    18  stu18
    19  stu19

63、more   (或less,好些)一屏一屏显示文件内容  

       more   /etc/robin.txt

       less    /etc/robin.txt

64、wc -l  /etc/services    显示行号 。

       wc -L   最长行长度。

65、vi /etc/sysconfig/i18n   更改语言环境(字符集) 

6.5默认以下 

LANG="en_US.UTF-8"              

SYSFONT="latarcyrheb-sun16"  

可以优化为: 

LANG="zh_CN.UTF-8"
UTF-8 是编码方式en_US.UTF-8 和 zh_CN.UTF-8 是语言环境,也就是字符集
en_US.UTF-8 和 zh_CN.UTF-8 包含的字符数量是基本上一样的,大概是七万个汉字,编码都是 UTF-8 编码,字符集是 Unicode,版本是 4.1 吧?zh_CN.GB18030 和 zh_CN.GBK 的字符集都与 Unicode 3 是等价的,记得应该是这样 

语言环境的差别就是另一回事了,中国人和外国人表示时间啦,数字啦,习惯都不一样,所以必须区分开。大部分程序根据语言环境变量来选择界面的语言是中文还是英文。

 所以一般linux系统的语言环境设置成:export LANG=zh_CN.UTF-8,代表中国人使用的unicode字符集

en_US.UTF-8:你说英语,你在美国,字符集是utf-8     

 zh_CN.UTF-8:你说中文,你在中国,字符集是utf-8

如果你的LANG环境变量是en_US.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是英文的。
如果你的LANG环境变量是zh_CN.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是中文的。

66、chkconfig  查看和设置开机自启动的命令

       --list          列表自启动 

       --level       级别 

        chkconfig --list sshd   查看指定服务 启动级别

        chkconfig sshd off     关服务 。

        chkconfig --add  oldboyd   添加某脚本到chkconfig 控制    添加文件一般在 /etc/init.d/  并经过编辑                                                                             “chkconfig: 2345 55 25”行。

67、 ntsysv  编辑开机自启动服务。 setup 选项也可以。

68、 stat   显示 文件属性  

        stat  aa

  File: "aa"
  Size: 0               Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d      Inode: 261635      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-09 11:20:18.276990504 +0800
Modify: 2018-02-09 11:20:11.848996812 +0800

Change: 2018-02-09 11:20:11.848996812 +0800

69、dumpe2fs /dev/sda1 |grep -i "inode size"   显示 inode 大小  inode = index node  存放 文件属性 ,可以查看大小 。
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               128

70、 df -i    查看 inode  总量和使用情况    
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      2469152 56573 2412579    3% /
tmpfs           185499     1  185498    1% /dev/shm
/dev/sda1        51200    38   51162    1% /boot

 71、df -h    查看磁盘使用量   (block)   

 df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        37G  1.5G   34G   5% /
tmpfs           725M     0  725M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot

 磁盘空间是否满了 ,是两项参数 ,inode  一个是block 满了 。

 72、file   显示文件类型       普通文件分为(文本、数据、二进制程序) 

        file /etc/rc.d/rc1.d/K16abrtd

        file /etc/ld.so.conf

        /etc/ld.so.conf: ASCII text     文本

        file /var/log/wtmp                   

        /var/log/wtmp: data             数据

         file /bin/ls                         
         /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped                                       二进制 可执行文件

        file grub.conf                       连接文件

        grub.conf: symbolic link to `../boot/grub/grub.conf'

73、last   显示登陆信息 

 74、lastlog   显示最后的登陆信息 

75、ln     创建硬连接文件

       ln -s  创建软连接文件

76、id  查看用户信息。

       id root

       uid=0(root) gid=0(root) groups=0(root)

77、du 查看文件 和目录大小 

       du -sh   s大小  h人类可读

       du /etc -sh
       30M     /etc

      

78、三剑客正则表达

元字符

功能

意思

匹配行首  行首不是字段首

以某些字符开行头

     $

匹配行尾  行尾巴

以某些字符结行尾

  ^$

空行的意思

空行的意思

   .

匹配任意单个字符

任意一个字符

*

字符*   匹配0或多个前面的字符

重复前面的任意多个字符            ab* 前面字符   左面的一个字符0或无穷个 表示一个a后面 O个-无穷多个b

   \

转义符,屏蔽一个元字符的特殊含义

表示去掉有意义的元字符的含义

[]

匹配中括号内的任意一个字符

匹配中括号内的任意一个字符 

 [abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]   [a-z]所有小写字母 [A-Z]所有大写字母     

[^abc] 匹配不包含^后的任意(任意一个)字符的内容

.*

代表任意多个字符

代表任意多个字符

lele\{n\}

用来匹配前面lele出现次数。n为次数

就是统计前面lele出现的次数

lele\{n,\}

含义同上,但次数最少为n

从功能就可以看出

lele\{n,m\}

义同上,但lele出现次数在nm之间

从功能也可以看出

lele\{n,m\}

义同上,但lele出现次数在nm之间

从功能也可



+   ab+  左面的一个字符有1个或无穷个       表示一个a后面 1个到无穷多个b      

?  ab?   左面的一个字符有0个或一个         表示一个a后面 0个或1个b

 {n}  左面的那个字符有n egrep -w 'ab{3}$' a.txt      ab{3} 匹配b三次

{n,m} 左边的字符nm

{n,}  左边的字符n个到无穷个



a\{n,m\} 重复n到m次,前一个重复的字符,如果用egrep/sed -r 可以去掉斜线

a\{n,\}  重复至少n次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线

a\{n\}  重复n次,前一个重复的字符。如果egrep/sed -r 可以去掉斜线

a\{,m\}  随便重复,但是不能超过m次

注意:egrep或sed -r 过滤一般特殊字符可以不转义


正则表达式:

Linux正则表达式(Regular Expression)主要遵从POSIX BRE或者POSIX ERE标准。什么是POSIX呢,POSIX Portable Operating System Interface 可移植操作系统接口ERE是BRE的扩展版本,具体更强的处理能力,并增加了一些元字符(metacharactor)。

BRE主要的能力集有:

1) 普通字符(Literal text),如a,b,c等

2)非打印字符,包括TAB,回车,换行,回车换行(WINDOWS)

3)任意字符.

4)字符集,包括单词型字符([[:alnum:]]),非单词型字符([^[:alnum:]]),数字([[:digit:]]),非数字([^[:alnum:]]),空格、TAB、换行等空白字符([[:space:]])以及非空白字符([^[:space:]])

5)边缘匹配符,不管是BRE还是ERE,都只支持匹配行首或行尾,不像perl,还可以匹配单词首和单词尾

6)匹配重复次数(Quantifier/Repetition)

7)分组及后向引用

8)多项匹配(Alteration),使用元字符|,该特性只ERE支持,BRE没有此功能

BRE与ERE似乎对ASCII和UNICODE是否都支持尚待确认;

正前向查找和负前向查找不支持;

正后向查找和负后向查找不支持;

BRE与ERE在能力上区别仅在多项匹配的能力上,其他方面没有大的差别,主要的区别体现在元字符上。

BRE只定义了4组元字符:

[]      用于在多个字符中选定一个字符进行匹配,[]内可以有-以示范围,但-本身不是元字符

.        用于匹配任意字符

^      用于匹配时表示“非”的含义,还有一个用法是匹配行首

$      用于匹配行尾

ERE在此基础上增加了3组元字符的定义:

{}      用于表示重复匹配的次数。BRE中只将{}当作普通字符对待,要使用此功能必须加\进行转义,即“\{\}”

()      用于分组。BRE中只将()当作普通字符对待,要使用此功能必须加\进行转义,即“\(\)”

|      完全为ERE新增的多项匹配能力定义的,BRE无多项匹配能力,只将|作普通字符对待

  1. 可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`  
  2.   
  3. 1. 单引号 ( '' )  
  4. # grep Susan phonebook  
  5. Susan Goldberg 403-212-4921  
  6. Susan Topple    212-234-2343  
  7. 如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件  
  8. # grep 'Susan Gold' phonebook  
  9. Susan Goldberg 403-212-4921  
  10. 当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符  
  11.   
  12. 2. 双引号 ( " " )  
  13. 双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。  
  14. # x=*  
  15. # echo $x  
  16. hello.sh menus.sh misc.sh phonebook tshift.sh  
  17. # echo '$x'  
  18. $x  
  19. # echo "$x"  
  20. *  
  21. 这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。 对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下: shell扫描命令行,把x的值设为星号*;  
  22. shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;  
  23. shell启动执行echo命令,把文件清单作为参数传递给echo.  
  24. 这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数  
  25.   
  26. 3. 反引号(``)  
  27. 命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。  
  28. # echo The date and time is `date`  
  29. The date and time is 三 6月 15 06:10:35 CST 2005  
  30. # echo Your current working directory is $(pwd)  
  31. Your current working directory is /home/howard/script.  
  32.   
  33. 4. 反斜杠 backslash-escaped( \ )  
  34. 反斜杠一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号  
  35. echo -e "\n"  
  36. 反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。  
  37.   
  38. BTW  
  39.   
  40. $()和``的区别  
  41. 反引号和$()的功能是命令替换,将反引号或$()中的字符串做为命令来执行,我们在用shell编程时经常用的到 将系统命令的执行结果赋给一个变量  
  42. 但反引号内不能再引用反引号,而$()中可以引用反引号  
  43. [root@music b]# cat aa  
  44. 13  
  45. 45  
  46. mimi bibi  
  47. [root@music b]# data=`cat `ls``  
  48. 没反应,我Ctrl+c了  
  49. [root@music b]# data=$(cat `ls`)  
  50. [root@music b]# echo $data  
  51. 13 45 mimi bibi  



grep 过滤                          三剑客命令

       grep -v  排除过滤  取反

       grep -v robin robin.txt     把  robin.txt  显示 不包含  robin的 内容 并打印出来

       grep -n  .  robin.txt        对 文件打印行号。 -n对匹配的内容打印行号   . 代表任意匹配内容。

                  -o 只显示匹配内容

                  -q  安静模式,不打印     echo $?  0显示输出正确

                   -l  过滤成功显示文件名,不成功无

                   -A 2 'root' /etc/passwd 过滤root所在后两行 (显示错误相关信息)

                   -B 5 'root' /etc/passwd 过滤root所在前5

                   -C  如果匹配成功,则将匹配行及前后n行都打印出来 -color

                    -c  如果匹配成功,显示行数

                    -E  egrep

                     -i 忽略大小写

                    -w  过滤单词,(不连贯)

                    -r  递归

egrep = grep -E      

egrep r([abc123\/\-])t   -必须放到最后去 -在数字后有指向性,如果想要匹配的字符就是-本身,必须放到最后去[12312\-]

egrep '[a-zA-Z]' a.txt  所有英文字母的

'r[aa-zz]t'一样的

r[0-9]{2}t  =====  r[0-9][0-9]t

'r[0-9]+t'    数字有一个或无穷个

 '^[^0-9]' 开头取反 以非数字开头的  

egrep 'company(y|ies)' a.txt 或的关系

grep -n "^$" 1.log 打印空行及行号

grep -vn "^$" 1.log 打印空行以外的及行号

--color=auto 以特定颜色亮显示匹配关键字

-C  context,显示匹配字符串及其前后各num行


扩展正则

必须用 grep -E 或egrep

 (1)+ 重复一个或一个以上前面的字符(和基础正则*的区别) +要求重复数量至少为1,*可以为0,所以字符串为空也可以匹配

基础正则*是匹配0个或多个前面的那个字符

(2)?重复“0个或一个”前面的字符 (和基础正则.的区别)

      (可以没有) 基础正则.是匹配有且只有一个字符,代表任意一个字符

(3)|用或的方式查符合多个条件的字符串

(4)()找出“用户组”字符串  分组过滤,后向引用

例子:

egrep "go+d" 1.txt

egrep "go*d" 1.txt

egrep "go?d" 1.txt

egrep "go.d" 1.txt

egrep "god|good" 1.txt

egrep "g(o|oo)d" 1.txt

 

\b 取出单词边界

grep "\boldboy\b"  oldboy.log    只取出oldboy的,oldboy1不

 

   


sed    流编辑器。对文件内容的增、删、改、替换、查、              三剑客 

       vi person.txt
     101,oldboy,CEO
     102,zhangyao,CTO
     103,Alex,COO
     104,yy,CFO
     105,feixue,CIO

      引号中命令(非sed后面的参数)

        a  ∶新增, 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

     sed '2a 106,dandan,CSO' person.txt 
101,oldboy,CEO
102,zhangyao,CTO
106,dandan,CSO
103,Alex,COO
104,yy,CFO

105,feixue,CIO

sed '2a 106,dandan,CSO\n107,bingbing,COO' person.txt     \n 为换行符号
101,oldboy,CEO
102,zhangyao,CTO
106,dandan,CSO
107,bingbing,COO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

      i  ∶插入, 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

sed '2i 106,dandan,CSO' person.txt   
101,oldboy,CEO
106,dandan,CSO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

        c  ∶取代, 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

        d  ∶删除,因为是删除啊,所以 后面通常不接任何咚咚;

        p  ∶列印,亦即将某个选择的资料印出。通常 会与参数 sed -n 一起运作~

        s  ∶取代,可以直接进行取代的工作哩!通常这个 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!sed -n 静态模式

     sed '3s#0#9#' person.txt     注意这个没有 用 g ,g是全局替换 ,没有用 仅对 3行进行替换
101,oldboy,CEO
102,zhangyao,CTO
193,Alex,COO
104,yy,CFO
105,feixue,CIO

   

       sed -n '20,30'p  aa.txt 

        将 aa 20-30行 列印 

       -n 取消默认输出  p =print 

        sed 's#old#new#g' oldboy.txt >tt.txt   不改oldboy内同  但 重新生成 tt.txt

        sed  -i 's#old#new#g' oldboy.txt   改了 oldboy内容

        find /root -type f -name "*.txb" |xargs sed -i 's#ro#lu#g'      将 /root 下的  *.txb 内容中 robin 改 lubin

         sed -i 's#lu#ro#g' `find /root -type f -name "*.txb"`    效果等同上一条。  

          sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp' /etc/passwd       将 passwd 第一列 和最后列对调

sed -e 多个模式

sed -i '' test 输出到文件

sed -f '' 指定文件

sed '3d' test 删除第三行

sed '1,4d' test 删除14

sed '1d;4d' test 删除1行和4

sed '3p' test 打印第三行

sed -n '3p' test

sed '3c 1111' test 覆盖第三行

sed '3a 11111' test 第三行后追加一行

sed '3i 111' test   第三行前插入

 

sed '/sb.*$/d' a.txt     匹配0或没有   ========  sed '/sb/d' a.txt

sed '/^s/c  111' a.txt  

 

 

sed 's/sb/SB/'  test     只改每行遇到的第一个sb

sed 's/sb/SB/g' test  改所有的sb

sed '4s/sb/SB/g' test  只改所有的sb

sed 'aa/sb/SB/g' test  aa那行的sb改了

sed '/^[0-9][a-z]+sb$/s/sb/SB/g' test   匹配一行内容所有表达

sed -r '/^[0-9] [a-Z]+)xsb$ /s/sb/SB/g' a.txt   扩展正则  匹配alexsb

 

sed -r 's///g' test  定位 /换的源/换的结果/g

 sed -r '###'

sed -ri '///'



32、awk  过滤,输出内容        三剑客 

       awk 'NR>19&&NR<31' aa.txt

        NR是行号

awk

awk [ options ] 'pattern {action}' file

awk 参数 模式(动作) file  模式即条件  动作就是干什么,由大括号里面一条或多条语句组成。

pattern 即模式,找谁    action 干啥

域和记录

filed    域,区域,字段,列

 $0,整行,一个记录  $1 $2 $3 $NF最后一行 $0整行

表示取

FS 区域分隔符  awk -F 记录字段分隔符的内容

NF 列的数量一行有多少列(区域)

head /etc/passwd > /servers/files/awkfile.txt

awk -F ":" 'NR>=3&&NR<=5{print $1,$3}' /servers/files/a.txt

字段分隔符FS 指定的值可以是一个正则表达式(匹配字符串)

ifconfig eth1 | awk 'NR==2{print $1}'     输出inet6    为第一列

ifconfig eth1 | awk -F "[: ]+" 'NR==2{print $2}'  输出inet6  分割完变成第二列

RS 每个记录读入(输入)的时候的分隔符  上下分割每行

NR 行号 awk处理的记录的数

ORS 输出时候的分隔符

awk使用内置变量RS来存放记录分隔符,RS表示的输入的记录分隔符,之歌值可通过BEGIN模块重新定义修改。

awk 'BEGIN{FS=":";RS="\n"}'

awk '{print NR,$0}' 1.txt  显示行号

awk 'BEGIN{RS="/"}{print NR,$0}' 1.txt

行:默认以回车换行\n,结束的.RS(行分隔符)RS表示着行的结束。

RS为空值

awk 'BEGIN{RS=""}{print NR,$0}' 1.txt     只会显示一行行号

RS值为空时,每个记录被空行或多个空行分割,同时无论FS分隔符为何值,FS同时也会被\n分割。

sed -r 's#[:/0-9]+# #g' awkfile.txt

sed -r 's#[:/0-9]+# #g' awkfile.txt >count.txt

 

sort 排序

sort 默认是升序,sort -r 降序

sort -u 去除重复行

 

uniq 去重

  -i 忽略大小写字符

  -c 进行计数

  -u 只显示唯一的行

 

cut   从文件文件中截取

  -d 后接分割字符

  -f 依据-d的分隔符将信息分割成数段,-f 取出第几段

  -c 以字符的单位取出固定字符区间

  

wc   统计

  -l 仅取出列,统计行数

  -w 仅列出多少字,统计单词出现次数

  -m 多少字符,统计文件的字节数

  wc /etc/passwd

 40(行数) 45(单词数)1719(字节数)


正则表达式

实战准备

1.调整别名

alias grep='grep --color=auto'

2.环境变量

locale

export LC_ALL=C

3.准备例子

vi /oldboy/old.log

I am oldboy teacher!

I teach linux


I like badminton ball,billiard ball and chinese chess!

my blog is http://oldboy.blog.51cto.com

our site is http://www.etiantian.org

my qq num is 49000448

 

not 4900000448

my god,i am not oldbey,but OLDBOY!

 

1、 grep m oldboy.log   找出 所有 含 m的行 。

 grep m oldboy.log 

I am oldboy teacher!
I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
my qq num is 49000448

my god,i am not oldbey,but OLDBOY!

2、 grep "^m" oldboy.log   找出以m开头的行                  

my blog is http://oldboy.blog.51cto.com
my qq num is 49000448

my god,i am not oldbey,but OLDBOY!

3、grep "m$" oldboy.log     找出m结尾的行               

my blog is http://oldboy.blog.51cto.com

4、grep -n "^$" oldboy.log             找出空行   -n  列行号        
3:

8:

5、grep -vn "^$" oldboy.log         排除空行并打印行号                 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
9:not 4900000448

10:my god,i am not oldbey,but OLDBOY!

6、 grep -n "." oldboy.log                      . 匹配每一个字符
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
9:not 4900000448

10:my god,i am not oldbey,but OLDBOY!

7、grep -n ".*" oldboy.log                      匹配所有字符  包括空行
1:I am oldboy teacher!
2:I teach linux.
3:
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
8:
9:not 4900000448

10:my god,i am not oldbey,but OLDBOY!

9、grep -n "\.$" oldboy.log      列 . 结尾行  \转义 .。  

:I teach linux.

10、grep -no "oldboy" oldboy.log    列印  含 oldboy 并只显示匹配内容  -o只显示 匹配内容,没有 -o 将显示行
1:oldboy
5:oldboy

11、 grep -n "0*" oldboy.log        显示0个或多个0的行 ,所以全显示出来了。
1:I am oldboy teacher!
2:I teach linux.
3:
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
8:
9:not 4900000448

10:my god,i am not oldbey,but OLDBOY!

12、grep -n "[abc]" oldboy.log     显示 含 有 a 或b或c 的 行
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org

10:my god,i am not oldbey,but OLDBOY!

13、grep  -n "[^abc]" oldboy.log   显示不 含 有 a 或b或c 的 行。 ^代表不。
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
9:not 4900000448

10:my god,i am not oldbey,but OLDBOY!


14、grep  -n "[0-9]" oldboy.log     匹配所有数字
5:my blog is http://oldboy.blog.51cto.com
7:my qq num is 49000448

9:not 4900000448






查看ett.txt100)内第2030行内容

seq 100>ett.txt

   head 取头部的几行,默认前10

1.head -30 ett.txt |tail -11               tail 取尾部的最后n行,默认后10行(tail 文件)

2.tail -81 ett.txt |tail -11

3.sed -n '20,30p' ett.txt

sed -n '30p' ett.txt 也可以用的

 sed '2s/root/sb/g' 1.txt  改第二行所有root

sed '2s/root/sb/'  1.txt  改第二行第一个

 awk

awk -F'{print $1,$4}' /etc/passwd 指定分隔符

$0 整行

NF 多少段  $NF 最后一段

NR 行号 (直接NR

awk -F: 'NR==1{print $1,NR}' test

awk -F: 'NR<=3{print NR,"---"$1}' test    '  " "  '自己定义输出

'NR>=3 && NR<=5{print NR,"-------",$1}'  test

'NR<=2 || NR>=7{print NR,"-------",$1}'  test

'/nologin$/{print $1}' test

'$1~/^r.*t$/{print $3,NR}' tes

'$3 >=7{print NR,$1}'  test

count=7

awk -v x=$count -F: '$3 >= x{print NR,$1,$3}' test

UID大于等于x的打出来

 ifocnifg |awk 'NR==2{print $2}'

 cat a.txt |sort |uniq -c

cat test |cut -d: -f1

du -sh 统计文件大小

find / -type f  (普通文件)

find / -name "*.txt"

find / -size +10M and -size -30M  

dd if=/dev/zero  of=/a.txt bs=20M count=1




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值