shell脚本命令
一. find
find path -option [ -print] [-exec -ok command] {} \;
使用格式: find [指定查找目录] [查找规则] [查找完后执行的action]
(1)根据文件名查找
-iname //根据文件名查找,但是不区分大小写
(2)根据文件所属用户和组来查找文件-user //根据属主来查找文件
-group //根据属组来查找文件
(3)根据uid和 gid来查找用户
find /tmp -uid 500 //查找uid是500的文件
find /tmp -gid 1000 // 查找gid是1000的文件
find /tmp -uid 500 //查找uid是500的文件
(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的文件
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
- 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为at、batch和crontab
- Sendmail邮件系统使用的两个主要协议是:SMTP和POP,前者用来发送邮件,后者用来接收邮件
后来用df-i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件
inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。
一. 硬链接和软链接
- 硬连接指通过索引节点来进行连接。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除
- 软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息
- 然而符号连接文件的inode节点不同硬连接文件f2与原文件f1的inode节点相同符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。