Linux文件操作
查看文件命令
查看文件目录内容
参数: -a
-l
-i
-d
-a
显示所有文件或目录,包括隐藏文件或目录
-l
一行显示一个文件的详细信息
-i
文件前面显示文件的索引节点号输出
-d
仅显示目录名
命令组合:
-al
显示所有文件的详细信息
-li
显示文件的详细信息带索引号
-ld
显示目录的详细信息
注意: ls -l
和 ll
命令一样,但是ll
不是命令,是别名
Linux类型判断
Linux用文件详细信息的第一个字母判断
d
表示目录
l
表示链接文件
c
表示设备文件
-
表示普通文件
目录的跳转
常用命令:
cd [目录] # 目录可以是绝对路径,也可以是相对路径
cd ~ 或 cd # 表示跳转到家目录 ~表示家目录
cd .. # 跳转到上级目录
注意: 在Linux中,每个目录底下都有 .
..
目录, .
代表当前目录 ..
代表上级目录,所以cd ..
是跳转到上级目录
查看当前目录
命令:
pwd
输出当前目录的绝对路径
文件查找命令
文件内容统计
wc -l file1
统计文件的行数
wc -c file1
统计文件bytes数目
wc -w file1
统计文件的字数
文件的检索
参数: -I
-n
-v
-I
匹配的时候忽略大小写
-n
输出的时候带行号
-v
过滤信息
常用命令:
cat file1 | grep zhangsan #在文件中筛选出名字为张三出现的行
排序命令
sort file1 #按照文件的第一个字符进行排序输出
sort file1 file2 # 对文件file1和file2进行排序
sort -r file1 # 对文件进行反向排序 -r代表反向排序
sort -o out1 file1 # 对文件进行排序结果输出到out1文件中
sort -n file1 #对每行第一个字段进行数值排序
sort -k 4 #对文件每行的第4个关键字进行排序
文件查找
参数:
-name
按照文件名称查找
-size
按照文件大小查找
-user
按照文件所有者进行查找
-ctime -atime -ctime -cmin -amin -mmin
time是按照天为单位的,min是以分钟为单位的,前面的c
代表change,文件改变,a
代表access,文件读取,m
代表modify,文件内容被修改,例如:find /etc -ctime -1
24小时之内,被修改的文件小于一天的文件
-o -a
o代表or,a代表and,例如:find /etc -size +100 -a -size -300
-type
按照文件类型查找,f
普通文件,l
链接文件,d
目录文件
-exec
查找结果执行命令,例如find / -user cui -exec rm -rf {} \;
查找cui用户的文件,然后删除
-inum
按照索引节点号查找
注意:
- 文件匹配的时候通配符
*
代表最少出现0次,也就是说可以没有,通配符?
代表最少出现1次,也就是说最少要有一个 - Linux文件中,文件大小按照块计算,一块为512字节,也就是0.5k,匹配字节的时候,前面加
+
代表大于,前面加-
代表小于,例如:find /root -size +20480
文件操作命令
建立空文件
touch filename
创建新文件filename为文件名,如果这个文件不存在,则创建新文件,如果文件已经存在,那么修改一下文件的时间,文件的内容不变。
建立新目录
常用命令:
mkdir dir1 dir2 # 一次性创建文件夹dir1和dir2
mkdir -p dir1/dir2 # 递归的创建文件夹
mkdir -m 644 dir1 # 创建目录指定权限
**注意:**创建文件夹的时候自动生成 .
和 ..
目录 普通用户权限默认为775
文件删除
rmdir dir1
删除空目录,不常用
rm -r dir1
递归的删除目录下文件和目录,也就是说可以删除非空目录
rm -rf dir1
递归删除目录,跳过提醒,常用
文件拷贝
参数: -r
-f
-p
-r
递归的拷贝目录
-f
如果文件存在直接覆盖跳过提醒
-p
如果文件存在,只复制内容,不改变索引节点号和创建时间
常用命令:
cp file1 file2 file2 dir
拷贝多个文件到一个目录dir
cp dir1/* dir2
拷贝dir1下面的所有文件到dir2下面
注意: 和cp -r dir1 dir2
不同的是,/*
只拷贝文件,-r
拷贝所有,包括文件夹和文件
移动重命名
文件移动:
mv dir1/file1 dir2
将dir1目录下的file1文件移动到dir2目录
文件重命名:
mv dir1/file1 dir2/file2
将dir1目录下的file1文件移动到dir2目录并命名为file2
mv file1 file2
将同一个目录下的文件file1重命名为file2
文件权限
文件所有者修改
chown cui file1
修改文件所有者为cui用户
chown :cui file1
修改文件所属组为cui组
chgrp cui file1
修改文件所属组为cui组
chown cui:cui file1
修改文件所有者为cui用户且所属组为cui组
文件权限
箭头所指
文件类型
1号
所属用户权限
2号
所属组权限
3号
其他用户权限
RWX权限文件和文件夹区别:
对于文件
r
可读
w
可以编辑 可以修改
x
可以执行
对于目录
r
表示可以用ls的命令查看里面的内容
w
可以修改目录结构,意思是在目录中创建删除
x
表示可以cd进去
文件权限修改:
对于linux权限,可以用数字
和字母
两种方法表示
数字修改
r=4
w=2
x=1
例如:644 每一个数组表示一组权限 6 = 4+2 = r+w 4 = 4 = r 那么 644 = rw-r--r--
chmod 644 file1 #修改文件权限为644
字母修改
u
文件或目录的所有者
g
文件或目录的所有组
o
其他用户
a
上面所有者
+
添加某个权限
-
取消某个权限
=
赋值某个权限
chmod u+rw,g+rw,o+r file1 # 给文件file1赋予644权限
chmod a=rwx file1 # 给所有用户和组给予rwx权限
文件特殊权限
特殊权限位有三种: 用户置位s
组置位s
粘着位t
setuid(suid)
针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限,即让普通用户可以以root用户的角色执行程序或命令。
setgid(sgid)
希望一个目录被多个用户(同属于一个组)共享,同一个组的用户可以处理
粘滞位(t)
把一个文件夹的权限都打开,然后共享文件,像/tmp一样,但是 生产环境一般不使用
注意:这三种位置都占用x权限的位置
三个特殊位的数字权重:
suid
4
sgid
2
sticky
1
chmod 4777 file1 # 给文件加上用户置位
S和小写s区别:
首先举个例子
chmod 4644 file1
然后查看文件的权限
-rwSr--r--. 1 cui cui 8027 6月 14 09:03 file1
chmod 4777 file1
再次查看文件权限
-rwsr--r--. 1 cui cui 8027 6月 14 09:03 file1
惊喜的发现字母变成小写s了,意思是有x权限特殊权限才有效果
文件其他操作
umask掩码
系统默认掩码:
文件夹创建时的默认权限
0666
目录创建时的默认权限
0777
查看系统掩码:
umask
系统默认umask掩码0022
计算
文件夹的权限 0666 - 0022 = 0644
文件创建权限 0777 - 0022 = 0755
也可以看出 文件的权限总是比文件夹多1 这个多出来的1就是x执行权限,也就是只有文件才可以执行
修改系统默认掩码:
umask 0000 # 将系统默认umask掩码修改为0000
文件的链接
文件链接分为硬链接
和软连接
硬链接: 链接和源文件拥有相同的inode号
,文件的连接数+1了,一个文件的链接数除非为0,否则他的数据不会物理的从文件系统删除。相当于java的引用
,如果删除源文件,只不过是链接数-1,文件还是能用。[
**注意: **不能对目录进行硬链接并且不能在不同文件系统之间做硬链接]
ln [源文件] [目标目录] #建立源文件的硬链接到目标文件夹
ln [原文件] [目标目录]/[new名称] # 建立硬链接并且给硬链接重新命名
软连接: 在文件系统建立了一个很小的文件,相当于保存了源文件的路劲,指向源文件(windows的快捷方式),删除源文件,快捷方式就不能用了[
**注意:**这里如果删除源文件,然后又重新建立同名的文件,那么这个快捷方式就又可以用了,所以这里我说相当于保存了文件的路径,没有保存inode号]
ln -s [源文件] [目标目录] #建立源文件的软链接到目标文件夹
ln -s [原文件] [目标目录]/[new名称] # 建立软链接并且给软链接重新命名
输出输出重定向
输出重定向:
>
重写文件,会把文件清空然后写入
>>
追加文件,不会把文件清空
例子:
date > file
date >> file
注意: Linux标准输入设备文件/dev/stdin
可以用0代表,标准输出设备文件/dev/stdout
可以用1代表,标准出错设备文件/dev/stderr
可以用2代表,例如date 1 > file
这个默认为1,输出到标准输出,可以不写
输出重定向:
<
将后面的信息当作前面的命令的输入
<<
从键盘读取数据,直到遇见分界符才停止
例子:
wc < file1
将文件file的内容当作wc命令的输入,这里相当于cat file1 | wc
wc << ender
从键盘一行一行输入,直到输入ender字符串结束,然后统计
查看文件帮助
man ls
查看ls的帮助文档,比详细
ls --help
查看命令ls的常用参数帮助
whereis ls
查看ls命令的帮助文件的目录