玩转Linux文件操作

Linux文件操作
查看文件命令

查看文件目录内容

参数: -a -l -i -d

-a 显示所有文件或目录,包括隐藏文件或目录

-l 一行显示一个文件的详细信息

-i 文件前面显示文件的索引节点号输出

-d 仅显示目录名

命令组合:

-al 显示所有文件的详细信息

-li 显示文件的详细信息带索引号

-ld 显示目录的详细信息

注意: ls -lll 命令一样,但是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命令的帮助文件的目录
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值