【记录】shell脚本及linux命令

shell脚本命令

一. find

find path -option [ -print] [-exec -ok command] {} \;

使用格式:  find [指定查找目录[查找规则[查找完后执行的action]

1根据文件名查找

         -iname       //根据文件名查找,但是不区分大小写 

2根据文件所属用户和组来查找文件

        -user         //根据属主来查找文件

        -group        //根据属组来查找文件

(3根据uid gid来查找用户

       find  /tmp  -uid  500  //查找uid500的文件

       find  /tmp  -gid  1000 // 查找gid1000的文件

(4-a  and  -o  and  –not的使用

       find  /tmp  -uid  500  //查找uid500的文件

(5根据文件时间戳的相关属性来查找文件

       使用stat命令来查看一个文件的时间

       find  /tmp  –atime  +5           //表示查找在五天内没有访问过的文件

       find  /tmp  -atime  -5            //表示查找在五天内访问过的文件

(6根据文件类型来查找文件  

-type

                      f     // 普通文件

                      d     //目录文件

                      l     //链接文件

                      b     //块设备文件

                      c     //字符设备文件

                      p     //管道文件

                      s     //socket文件

(7 根据大小来查找文件

         find  /tmp  -size   2M           //查找在/tmp 目录下等于2M的文件


find命令的参数;

path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。



二. sed

sed是非交互式的编辑器。它不会修改文件

             

  • 地址是一个数字,则表示行号;是“$"符号,则表示最后一行。例如: 

    sed-n'3p' datafile   #只打印第三行

  • 地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。

            sed'2,5d' datafile    #删除第二到第五行

            sed'/My/,/You/d' datafile    #删除包含"My"行到包含"You"行之间的

  • s命令替换

     sed-n'1,20s/My$/You/gp' datafile #取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上

  • r命令是读命令

       sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上

            sed'/My/r introduce.txt' datafile
     #如果在文件datafile的某一行匹配到模式My,就在该行后读入文件introduce.txt的内容。如果出现My的行不止一行,则在出现My的各行后都读入introduce.txt文件的内容。

  • 正则表达式元字符

            sed使用的正则表达式是括在斜杠线"/"之间的模式

          


三. awk

awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk '{pattern + action}' {filenames}


1.命令行方式
awk [-F  field-separator]  'commands'  input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk

3.将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。


awk -F: '/root/{print $7}' /etc/passwd 
搜索/etc/passwd有root关键字的所有行,并显示对应的shell



ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}' 


四. grep 全局正则表达式版本

  • 格式

             grep [options]

  • 主要参数

             [options]主要参数:
                  -c:只输出匹配行的计数。
                  -I:不区分大 小写(只适用于单字符)。
                  -h:查询多文件时不显示文件名。
                  -l:查询多文件时只输出包含匹配字符的文件名。
                  -n:显示匹配行及 行号。
                  -s:不显示不存在或无匹配文本的错误信息。
                  -v:显示不包含匹配文本的所有行。

  • pattern正则表达式主要参数:

                \: 忽略正则表达式中特殊字符的原有含义。
               ^:匹配正则表达式的开始行。
                $: 匹配正则表达式的结束行。
              \<:从匹配正则表达 式的行开始。
              \>:到匹配正则表达式的行结束。


linux常用命令


  • Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统
  • Linux文件系统中每个文件用i节点(inode)来标识
  • 内核分为进程管理系统、内存管理系统、I/O管理系统和文件管理系统等四个子系统
  • 超级块包含了i节点表和空闲块表等重要的文件系统信息
  • 硬连接只能建立对文件链接。符号链接可以跨不同文件系统创建
  • Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令nslookup
  • 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为atbatchcrontab
  • Sendmail邮件系统使用的两个主要协议是:SMTPPOP,前者用来发送邮件后者用来接收邮件

后来用df-i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件
inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是BlockBlock是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。


一. 硬链接和软链接

  1. 硬连接指通过索引节点来进行连接。Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止误删的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除
  2. 软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息
  3. 然而符号连接文件的inode节点不同硬连接文件f2与原文件f1inode节点相同符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值