1.mkdir
简介
创建文件目录
语法
mkdir [-p] dirName
参数
-p 确认目录是否已经存在,若不存在则建立目录而不会报错
示例
创建test文件夹及在其中创建new文件夹
$ mkdir -p test/new
2. find
简介
文件搜索
语法
find path -option [ expression ] [ -exec -ok command ] {} \;
参数
expression表达式默认是 -print
-mount -xdev 只查询和指定目录一个文件系统下的文件
-amin n 在过去n分钟内被读取过
-anewer file 读取时间迟于file的文件
-atime n 在过去n天内被读取得文件
-cmin n 在过去n分钟被修改过
-cnewer file 比文件file更新的文件
-ctime n 在过去n天内被修改过的文件
-empty 空的文件
-gid n or -group name gid 是 n 或是 group 名称是 name
-ipath p -path p 路径符合p的文件,ipath会忽略大小写
-name name -iname name 文件名符合name的文件,iname忽略大小写
-size n 文件大小是n单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type
c 文件类型是c的文件
d 目录
c 字型装置工作
b 区块装置文件
p 具名贮列
f 一般文件
i 符号连接
s socket
-pid n process id是n的文件
示例
在当前目录及子目录以.sh结尾的文件列出来
$ find . -name "*.sh"
在当前目录及子目录列出20天内更新过的文件
$ find . -ctime -20
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
$ find . -type f -perm 644 -exec ls -l {} \;
3. awk
简介
文本处理
语法
awk 'condition { action }' filename
参数
-F 指定字段分隔符
action的相关函数:
toupper():字符转为大写
tolower():字符转为小写
length():返回字符串长度
substr():返回子字符串
substr($1,2):返回第一个字段,从第2个字符开始一直到结束
substr($1,2,3):返回第一个字段,从第2个字符开始开始后的3个字符
sin():正弦
cos():余弦
sqrt():平方根
rand():随机数
示例
$ echo "aa bb cc dd" | awk -F "bb" '{ print $1}'
aa
$ cat test.txt
aa ss
dd ff
gg hh
$ cat test.txt | awk '{print NR")", $0}'
1) aa ss
2) dd ff
3) gg hh
$ cat exp.txt
/stsvc/fms/conf/application.yml
/stsvc/sms/conf/application.yml
/stsvc/tms/conf/application.yml
/root/home/chenfan
/root/home/jhhuang
$ cat exp.txt | awk '/stsvc/ {print $0}' #包含 stsvc 的行
/stsvc/fms/conf/application.yml
/stsvc/sms/conf/application.yml
/stsvc/tms/conf/application.yml
$ cat exp.txt | awk '/stsvc\/fms/ {print $0}' #包含 stsvc/fms 的行
/stsvc/fms/conf/application.yml
$ cat exp.txt | awk 'NR%2==1 {print $0}' #奇数行
/stsvc/fms/conf/application.yml
/stsvc/tms/conf/application.yml
/root/home/jhhuang
$ echo "aa ss dds" | awk '{ if($3 == "dd") print $0; else print "nothing"}'
nothing
4. sed
简介
文本处理
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数
-e<script> 以选项中指定的script来处理输入的文本文件
-f<script> 以选项中指定的script来处理输入的文本文件
-h 显示帮助
-n 仅显示想script处理后的结果
动作说明:
a 新增,新增的内容出现在下一行
i 插入,插入的内容出现在上一行
c 取代,取代n1,n2之间的行
d 删除
p 打印,打印选择的数据,通常与sed -n一起运行
s 取代,就是替换功能
示例
在第二行下面添加Hello
$ sed '2a Hello'
搜索/etc/passwd包含root关键字的行
$ nl /etc/passwd| sed -n '/root/p'
删除/etc/passwd包含root关键字的行
$ nl /etc/passwd| sed '/root/d'
搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行
$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
数据的搜索与替换
$ sed 's/要被取代的字串/新的字串/g'
5. uniq
简介
检查文件中的重复行列
语法
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数
-c 在列旁边显示该行重复次数
-d 仅显示重复出现的行列
-u 仅显示出行一次的行列
-f<栏位> 忽略指定的栏位
-s 忽略比较指定的字符
-w<字符位置> 指定要比较的字符
示例
$ cat testfile
test 30
test 30
test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85
$ uniq -c testfile #删除重复行后的内容
3 test 30 #前面的数字的意义为该行共出现了3次
4 Hello 95 #前面的数字的意义为该行共出现了4次
2 Linux 85 #前面的数字的意义为该行共出现了2次
6. sort
简介
行列排序
语法
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数
-b 忽略每行文本前面的空格
-c 检查文件是否按照顺序排序
-d 只处理英文字母。数字和空格,忽略其他字符
-f 排序时,将小写字母看成大写字母
-i 只处理040-176之间的ACSII码
-m 将排序好的文件合并
-M 将前面三个字母按照月份缩写排序
-n 依照数值的大小排序
-r 以相反的顺序排序
-u 唯一,输出的结果是去重过的
-t<分隔字符> 指定排序时所用的栏位分隔字符
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一个栏位
示例
$ cat testfile #testfile文件原有排序
test 30
Hello 95
Linux 85
$ sort testfile #重排结果
Hello 95
Linux 85
test 30
7. tail
简介
查看文件内容
语法
tail [参数] [文件]
参数
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
示例
循环显示notes.log的文件内容
$ tail -f notes.log
$ tail -f notes.log
8. head
简介
查看文件开头部分内容
语法
head [参数] [文件]
参数
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数
示例
显示 notes.log 文件的开头 5 行
$ head -n 5 runoob_notes.log
9. mkfs
简介
在特定的分区建立文件系统
语法
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数
device : 预备检查的硬盘分区,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
示例
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在
$ mkfs -V -t msdos -c /dev/hda5
将sda6分区格式化为ext3格式
$ mfks -t ext3 /dev/sda6
10. chmod
简介
控制文件调用权限
语法
chmod [-cfvR] [--help] [--version] mode file...
参数
mode参数:
[ugoa...][[+-=][rwxX]...][,...]
(1) u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是
(2) + 表示增加权限、- 表示取消权限、= 表示唯一设定权限
(3) r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
示例
将文件 file1.txt 设为所有人皆可读取
$ chmod ugo+r file1.txt
#或者
$ chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
$ chmod ug+w,o-w file1.txt file2.txt