1.基本文件管理:
普通文件:
增:touch
使用格式:#touch 文件名1 文件名2 ...
创建单个文件:
#touch file1
创建多个文件:
#touch file2 file3 file4同时创建三个文件
注意:文件名是可以带空格的,但是尽量避免这样的操作
删:rm
使用格式:#rm 文件名1 文件名2 ...
删除单个文件:
#rm file1
remove regular empty file `file1'? Y代表删除 N不删除
删除多个文件:
#rm file2 file3 file4
注意: 本身rm并不能交换询问,是它的一个选项-i导致会询问
-i: prompt before every removal
扩展:命令的别名,如果一个命令有别名,会先去引用别名
查看别名:#alias
alias rm='rm -i'再去使用rm的时候,相当于使用了rm -i
设定别名:#alias 别名="命令+[选项]+[参数]"
#alias tom="rm -i"
#tom file1也会将tom当作rm -i去使用
取消别名:#unalias 别名
#unalias tom
#alias发现tom的别名就没有了
强制删除:可以不再交互式询问
-f: force强制删除
#rm -f file1
改:
编辑:#vim 文件名
vim的使用模式:
命令模式:直接使用命令打开的模式
常见的命令:
yy:复制, 4yy方式,复制4行
dd:剪切, 4dd方式,剪切4行
p:粘贴,会将内容粘贴到光标所在行的下一行
u:撤销上一步操作
插入模式: 在命令模式下,按i a o I A O中任意一个字符所进入的模式,就是编辑模式,可以任意书写内容
注意:在插入模式下,不能直接进入到末行模式,必须先回到命令模式,按Esc回到命令模式
末行模式:在命令模式下,按冒号键进入的模式
注意:在末行模式,也不能直接进入到插入模式,也需回到命令模式,也是按Esc键
末行功能:
q:退出
w:保持
wq:保持并退出
q!:强制退出,不保存
w!:强制保存
wq!:强制保存,并退出
例:#vim file1.txt
注意:如果文件存在,则直接进行编辑;如果不存在,则先创建,再编辑
复制:#cp 原文件 目标文件
例:
#cp file1.txt file2.txt
#cat file2.txt发现内容和file1.txt一样
#ls -i
270953 file1.txt 261191 file2.txt两个文件的inode不一样
移动、剪切:#mv 原文件 目标文件
#mv file1.txt file3.txt
#cat file3.txt
#ls -i
270953 file3.txt file3的inode号,跟原文件file1一样
在某种层次上,可以把移除,理解成是给文件改名
查:cat tac head tail more less
正向查看: 会将文件内容一次性读进内存进行查看
#cat文件名
#cat /etc/passwd
-n:显示行数
#cat -n /etc/passwd
反向查看:
#tac文件名
#tac /etc/passwd
查看头部:
#head文件名
#head /etc/passwd默认显示文件的前十行
#head -3 /etc/passwd显示文件的前三行
查看尾部:
#tail文件名
#tail /etc/passwd显示尾十行
#tail -3 /etc/passwd显示尾三行
翻页查看:向下翻页
#more文件名
#more /etc/passwd
按回车键,向下翻一行;按空格,向下翻一页;按q退出查看
翻页查看:上下左右翻页
#less文件名
#less /etc/passwd
按回车键,向下翻一行;按空格,向下翻一页;按q退出查看;还可以使用上下左右箭头查看,可以回看
目录:
增:mkdir
创建一个目录:#mkdir 目录名
#mkdir aa
创建多个目录:#mkdir 目录名1 目录名2 ...
#mkdir bb cc dd
同时创建多级子目录:
#mkdir -p ff/fff/ffff/fffff
删:rmdir
删除一个目录:#rmdir 目录名
#rmdir aa
删除多个目录:
#rmdir bb cc dd
#rmdir ff
failed to remove `ff': Directory not empty
默认rmdir只能删除空的目录
递归删除:#rm -r 目录名
#rm -r ff发现可以删除
改:cp mv
复制:#cp -r 原目录 目标目录
#mkdir -p a/b/c/d
#cp a h
#ls
#ls -h
剪切:#mv 原目录 目标目录
#mv a l
#ls发现没有了a目录,生成了l目录
#ls -R l
查:ls
2.扩展查看:file stat type
file:查看文件内容的类型
#file /etc/passwd
ASCII text纯文本的文件,可以直接使用cat等命令查看
#file /bin/ls
64-bit LSB executable使用lsb协议加密的文件,不能使用cat等查看
#file /var/lib/mysql/ibdata1
/var/lib/mysql/ibdata1: data数据库类型文件,也不能使用cat等查看
stat:查看文件的基本属性详细信息
#stat /etc/passwd
Access:访问时间,查看了文件的内容,该时间会变
Modify:修改时间,修改了文件的内容,该时间会变
Change:改变时间,修改文件的基本属性,该时间会变
type:查看命令的类型
#type cd
cd is a shell builtin系统内建命令,伴随内核而来
#type chmod
chmod is /bin/chmod外部命令
#type ls
ls is aliased to `ls --color=auto'如过有别名,先显示别名
which:查看命令的绝对路径
命令:就是一个文件,文件存放是功能代码
#which chmod
/bin/chmod
3.文件的搜索:
locate:是本地数据库中搜索,速度比较快,但不是实时的
使用格式:#locate 字符串(string)
注意:locate是对文件名做模糊匹配,只要将来文件中含有该字符串,就会被显示
例1:
#locate ifcfg
例2:
#touch /home/loring/zhangsanfeng.txt
#locate zhangsanfeng
发现新创建的文件,没有搜索到
这是因为,数据库默认是每天更新一次,新建立的文件还没有更新到数据
#updatedb手动更新数据库的命令
#locate zhangsanfeng
/home/loring/zhangsanfeng.txt
例3:
#touch /tmp/zhangwuji.txt
#updatedb
#locate zhangwuji
发现更新了数据库,依然搜索不到
#vim /etc/updatedb.conf
PRUNEPATHS = "/afs /media /net /sfs /tmp"
path:路径
在这后面有/tmp的出现,那么将来在/tmp中的文件,就不会更新到数据库
如果想让/tmp目录中的文件,更新到数据,将其从paths后删除即可
#updatedb
#locate zhangwuji
/tmp/zhangwuji.txt
find:是遍历整个文件系统(目录),速度较慢,但它是实时的
使用格式:#find 目录 选项 选项的参数
find是按照文件的基本属性进行搜索的
准备过程:
#useradd loring
#cd /home/loring
#touch a.txt b.txt c.txt
#mkdir abc
#chown loring a.txt
#chown .loring b.txt
#chmod 631 c.txt
#cp /var/log/messages /home/loring
按照文件的类型搜索:-type
#find /home/loring -type f
代表从/home/loring目录中进程搜索
-type:代表按照文件的类型进程搜索
常见的类型:f普通文件 d目录 l链接文件 b块设备 c字符设备
按照文件的权限搜索:-perm permission 权限
#find /home/loring -perm 631
搜索权限为631的文件
/home/loring/c.txt
按照文件的所有者搜索:-user
#find /home/loring -user loring
搜索所有者为loring的文件
/home/loring/a.txt
按照文件的所属组搜索:-group
#find /home/loring -group loring
搜索组为loring的文件
/home/loring/b.txt
按照文件大小搜索:-size
#find /home/loring -size 4k搜索大小等于4k的文件
显示内容:/home/loring/abc
#find /home/loring -size +4k搜索大于4k的文件
显示内容:/home/loring/messages
#find /home/loring -size -4k搜索小于4k的文件
显示内容:/home/loring/c.txt
/home/loring/b.txt
/home/loring/a.txt
#find /home/loring -size +10k -size -50k
搜索大于10k,但是小于50k的文件
#find /home/loring -size -1k
#find /home/loring -size -1M
#find /home/loring -size -1G
注意:单位前别直接写-1,-1等于0了
按照文件名搜索:-name
#find /home/loring -name c.txt
显示/home/loring/c.txt
#find /home/loring -name c.tx发现没有,精确搜索
文件名通配:
通配:用一些符号,来代表一类字符
通配符:
*代表任意多个字符
?代表任意单个字符
[]代表要从括号中给定的值,任选一个
按照时间进行搜索:-mtime -ctime -atime -mmin -cmin -amin
-mtime:按照Modify时间进行搜索,单位是天
-atime:按照access时间进行搜索,单位是天
-ctime:按照change时间进行搜索,单位是天
-mmin:按照modify时间进行搜索,单位是分钟
#find /home/loring -mtime 3
代表搜索修改时间是在3天前--4天前,一天时间间隔内
#find /home/loring -mtime +3
代表修改时间是在4天以前的文件
#find /home/loring -mtime -3
代表修改时间是在3天以内的文件
注意:find搜索文件,多个条件可以同时指定,按要求去做就行
#find /home/loring -user loring -size +100k -mtime -10
4.文件的压缩和解压缩、打包:
压缩和解压缩:
压缩:按照一定算法,将文件的内容重新排列;也可以理解成是一种加密
解压:按照压缩的相同算法,还原以前的排列
压缩目的:1.节约磁盘空间 2.节约网络带宽(文件在互联网传输,要压缩) 3.可以保证数据的安全
准备工作:
#mkdir /loring
#cp /var/log/messages /loring/messages
多复制几个文件
或者:
#while true;do cat /etc/passwd >> /loring/passwd;done
执行一会后,要按ctrl+c结束
4.1 zip:
使用格式:#zip 压缩文件名 文件名1 文件名2 ...
注意:zip不仅有压缩功能,也有打包功能
压缩:
例:
#zip loring.zip passwd passwd1
注意:1. loring.zip的压缩文件名,是自己定义的,必须以.zip结尾,前面的名称自定义即可
2.压缩后,原文件不会丢失
解压:
#unzip压缩文件名
#unzip loring.zip
注意: 解压后,压缩文件也不会丢失
在解压时,指定解压路径:
#unzip压缩文件 -d 解压路径
#unzip loring.zip -d /tmp
#ls -lh /tmp
会发现两个文件:passwd passwd1
压缩比:
#zip tom.zip passwd2
adding: passwd2 (deflated 99%)
压缩比=(原文件大小-压缩后文件大小)/原文件大小
注意: 压缩比越大,压缩后文件就越小,压缩的时间就越长
压缩比越小,压缩后文件就越大,压缩的时间越短
压缩比的大小,不是固定的,要看文件的类型和里面的内容
压缩级别: 压缩级别是固定的,可以影响压缩比
压缩级别:1-9一共九个级别,数字越大,压缩级别越高
注意: 压缩级别越大,压缩比就越大
压缩级别越小,压缩比就越小
4.2 gzip
压缩:
#gzip原文件名1 原文件名2
注意:文件是分开压缩,单独存放;压缩文件名是自动生成的
#gzip /loring/passwd3
#ls /loring
passwd3.gz
注意:压缩后,原文件会丢失;压缩文件名的后缀为.gz
#file /loring/passwd3.gz
解压缩:
第一种:
#gunzip压缩文件名
#gunzip passwd3.gz
注意:解压后,压缩文件也会丢失
第二种:
#gzip -d压缩文件名
#gzip -d passwd3.gz
-d: Decompress ,解压
不解压查看:
#zcat压缩文件名
#zcat passwd3.gz
指定压缩级别:默认在6的压缩级别
#gzip -1 passwd4指定压缩级别为1
#gzip -9 passwd5指定压缩级别为9
4.3 bzip2
压缩:
#bzip2原文件名
#bzip2 passwd4
#ls -lh /loring
passwd4.bz2
注意:压缩后,原文会丢失;压缩文件名的后缀为.bz2
解压:
第一种:
#bunzip2 passwd4.bz2
注意:解压后,压缩文件会丢失
第二种:
#bzip2 -d passwd4.bz2
不解压查看:
#bzcat压缩文件名
#bzcat passwd4.bz2
指定压缩级别:
#bzip2 -1 passwd4
#bzip2 -8 passwd5
保留原文件:
在压缩时,保留原文件:
#bzip2 -k passwd5
在解压时,保留压缩文件:
#bunzip2 -k passwd5.bz2
4.4 xz
压缩:
#xz原文件
#xz passwd5
注意:压缩后,原文件会丢失
解压:
第一种:
#unxz压缩文件
#unxz passwd5.xz
注意:解压后,压缩文件也会丢失
第二种:
#xz -d passwd5.xz
不解压查看:
#xzcat压缩文件
#xzcat passwd5.xz
指定压缩级别:
#xz -3 passwd5
#xz -7 passwd5
保留原文件:
压缩时保留原文件:
#xz -k原文件
#xz -k passwd5
解压时,保留解压文件:
#unxz -k压缩文件
#unxz -k passwd5.xz
4.5打包: tar 必须会用
打包:归档
#tar -cvf归档文件名 原文件1 原文件2 ...
-c: create创建归档文件
-v: verbose显示创建的过程
-f: file操作的文件
注意:只要使用了tar的命令,就必须有-f选项,而且该选项要放在所有选项的最后
例:
#tar -cvf loring.tar passwd1 passwd2
注意:默认tar打包的同时,没有压缩功能;如果要想压缩,要借调用压缩工具
展开归档:
#tar -xvf归档文件名
-x:展开归档
#tar -xvf loring.tar
注意:不管是归档,还是展开归档,原文件都不会丢失
不展开归档查看:
#tar -tf归档文件
-t:不展开归档查看里面的文件名
#tar -tf loring.tar
向归档文件中,追加文件:
#tar -rf归档文件名 添加的文件名
-r:追加
#tar -rf loring.tar passwd3
#tar -tf loring.tar验证
注意:归档文件必须在没有被压缩的时候,才能向里追加文件
归档时,调用压缩工具进行压缩:
创建归档时,调用压缩工具:
#tar -zcvf归档文件名 原文件1 原文件2
-z: 借调用gzip压缩工具
#tar -jcvf归档文件名 原文件1 原文件2
-j:借调用bzip2压缩工具
#tar -Jcvf归档文件名 原文件1 原文件2
-J: 借调用xz压缩工具
例:
#tar -zcvf loring.tar.gz passwd1 passwd2
#tar -jcvf loring.tar.bz2 passwd1 passwd2
#tar -Jcvf loring.tar.xz passwd1 passwd2
展开归档,并解压压缩:
#tar -zxvf loring.tar.gz
#tar -jxvf loring.tar.bz2
#tar -Jxvf loring.tar.xz
注意:归档时调用哪个压缩工具进行压缩的,那么展开归档时,就应该还去调用同样的压缩工具,进行解压
例如:#tar -zxvf loring.tar.bz2 就是错误的使用
5.文件处理:排序、去重、切割、统计、过滤
注意: 以上5个命令都是针对文件中的内容,都不会对原文件做任何修改,只会影响输出
5.1排序: sort
5.1.1正向排序:
#sort文件名
#sort /etc/passwd
注意:默认sort会按照行首字母,根据ascii码的顺序,进行排序;a-z的顺序
5.1.2逆向排序: -r
#sort -r文件名
#sort -r /etc/passwd
5.1.3按照数值大小排序: -n
#cat a.txt
10
10001
111
1010
10202
#sort a.txt
10
10001
1010
10202
111
#sort -n a.txt
即按照大小排序,又是倒序:
#sort -n -r a.txt
5.1.4按照文件的字段进行排序: 字段-->列
准备:
#head /etc/passwd > pass.txt
将passwd文件的前十行,放在pass.txt文件中,如果pass.txt不存在,会自动创建
#sort -t "分隔符" -k 第几列 文件名
#sort -t ":" -k 3 pass.txt
以冒号分隔,按照第三列进行排序
#sort -t ":" -k 3 -n pass.txt
按照第3列的数值大小进行排序
5.1.5排序同时并去重:
#sort -u文件名
#sort -u /etc/passwd
5.2去重: uniq --> unique 唯一
准备:
#cat b.txt
abc
123
123
abc
abc
123
去重:
#uniq文件名
#uniq b.txt
abc
123
abc
123
注意:默认uniq只能去掉相邻的重复行
统计重复行出现的次数:
#uniq -c文件名
#uniq -c b.txt
1 abc
2 123
2 abc
1 123
去掉所有的重复行:
先排序,再去重
#sort b.txt | uniq
注释:| 代表了无名管道,作用是将第一命令执行的结果,传递给第二个命令去执行
作业: 将/etc/passwd文件中,第5行-第10行内容显示出来
#sort -u文件名
#sort -u b.txt
#sort b.txt | uniq -c
去掉所有的重复行,并且统计重复行的数量
例如:可以统计一个IP地址,一共访问了多少次
5.3切割: cut *****
#cut -d "分隔符" -f 第几列 文件名
单列输出:
#cut -d ":" -f 3 /etc/passwd输出第3列
多列输出:
离散:
#cut -d ":" -f 1,3,5 /etc/passwd输出第1列、第3列和第5列
连续:
#cut -d ":" -f 1-3 /etc/passwd输出第1列到第3列
注意: 默认输出的分隔符,和输入的分隔符保持一致;-d所指定的就是输入分隔符
指定输出分隔符:
#cut -d ":" -f 1,3 --output-delimiter="--->" /etc/passwd
--output-delimiter=指定输出分隔符
5.4统计: wc --> word count
统计所有信息:
#wc文件名
#wc /etc/passwd
35 54 1663 /etc/passwd
行数 单词数量 字符的数量 文件名
统计行:
#wc -l文件名
#wc -l /etc/passwd
统计单词:
#wc -w文件名
#wc -w /etc/passwd
统计字符:
#wc -c文件名
#wc -c /etc/passwd
实验:
统计/tmp目录下,一共有多少个文件??
#ls -l /tmp | wc -l
注意:将得到数减1
5.5过滤: grep *****
grep:行级过滤器,会将匹配到的行,整行显示出来
准备工作:
#alias grep='grep --color=auto'
#useradd loringroot
#useradd rootloring
按照字符串进行过滤:
#grep "字符串" 文件名
#grep "root" /etc/passwd
要将文件中,含有root字符串的行,过滤出来
行首定位:^
#grep "^root" /etc/passwd
代表了整行必须以root开头,^代表以谁开头
实验:
将/etc/fstab文件中,以#开头的行过滤出来???
#grep "^#" /etc/fstab
行尾定位:$
#grep "bash$" /etc/passwd
代表一整行,必须以bash结尾,$代表了以谁结尾
例:
#cat c.txt
rootrootroot
root loring root
root
rootloringroot
#grep "^root$" c.txt
整行中,只含有一个root字符串的行
过滤文件中的空行:
#grep "^$" /etc/passwd
词首的锚定:\<
#grep "root" /etc/passwd
#grep "\
在一行中,必须至少有一个单词,要以root开头
词尾的锚定:\>
#grep "root" /etc/passwd
#grep "root\>" /etc/passwd
在一行中,必须至少有一个单词,要以root结尾
#grep "\" /etc/passwd
在一行中,必须至少含有一个root的完整单词
常见的选项:
-i -v -A -B -C -rl -R
#grep -i "root" /etc/passwd
-i:忽略字符串的大小写
#grep -v "^#" /etc/fstab
-v:取反,匹配到反而不显示,显示匹配不成功的
#grep -v "^$" /etc/fstab
#grep -A 3 "root" /etc/passwd
-A:在匹配到行后,会再多向下显示几行
#grep -B 2 "root" /etc/passwd
-B:在匹配到行之前,会再多显示几行
#grep -C 3 "root" /etc/passwd
-C:在匹配到行的上下,会各多显示几行
准备:
#mkdir /loring/a/b/c/d/e/f
#echo hello zhangsanfeng > /loring/a/b/c/d/e/f/haha.txt
#grep -rl "zhangsanfeng" /loring ******
#grep -R "zhangsanfeng" /loring
根据文件中的内容,搜索文件的位置;只要文件中含有了zhangsanfeng字符串,就会被搜索出来