Linux操作系统学习笔记 4 —— 文件管理

如非事先说明,本篇教程一律使用xshell通过ssh连接到Ubuntu操作系统,且为root用户操作(不明白的话可以看Linux操作系统学习笔记 2 哦~)

1.修改文件时间或创建文件:touch

#touch    newfile     
//touch改文件的三个时间(mtime:内容修改时间,ctime:状态时间,权限与属性被更改了会更新这个时间,atime:读取时间,使用cat去读取就会更新该文件的atime)都会更新为目前的时间,若该文件不存在,创建新文件,文件大小是0
touch命令创建文件

Linux操作系统学习笔记 4 —— 文件管理_第1张图片
touch命令更新了一个文件的ctime
cp   -a   ~/.bashrc  bashrc
ll  bashrc; ll --time=ctime  bashrc; ll  --time=atime  bashrc
touch   bashrc
ll  bashrc; ll --time=ctime  bashrc; ll  --time=atime  bashrc
Linux操作系统学习笔记 4 —— 文件管理_第2张图片
touch命令执行之前

Linux操作系统学习笔记 4 —— 文件管理_第3张图片
touch命令执行之后
-a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制);
-p :连同档案的属性一起复制过去,而非使用预设属性;
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;
-r :递归持续复制,用于目录的复制行为

每个文件在Linux下面都会记录3个主要的修改时间:

  • modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
  • status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
  • access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。
    ls命令看到的是modify time 用vi等工具编辑一个文件保存后,modify time会被修改。用ls -l命令不会修改文件的access time,但cat命令会修改access time。

2.改变文件属性与权限

  • chmod:改变文件的权限
  • chown:改变文件所有者
  • chgrp:改变文件所属用户组
    Linux中有三种权限 读,写,执行 分别对应数字 1 2 4,对应字母r w x,多种权限则求和,举例如果是可读可写可执行权限则为7 字母表示为rwx 可读可执行为6 字母表示为wx
cd ~
# 查看.ssh文件夹的权限
ls   -dl   .ssh
# 去掉所有者执行权限(-x),用户组设置为写权限(=w),其他添加读权限(+r)
chmod    u-x,g=w,o+r   .ssh
ls   -dl   .ssh
chmod    741    .ssh
ls   -dl   .ssh
Linux操作系统学习笔记 4 —— 文件管理_第4张图片
改变文件权限

现在我们新建一个用户来尝试更改文件的所有者和所属用户组

#添加用户student
useradd   students
#为其设置密码 student 注意执行此命令后输入不会在屏幕上展示.输完回车即可
passwd   students
#将.ssh文件夹 更改所有者为students用户
chown    students    .ssh
ls   -dl   .ssh
#将.ssh文件夹 更改用户组为students用户组
chgrp    students   .ssh
ls   -dl   .ssh
#将.ssh文件夹 更改所有者为root用户组下的root用户
chown   root:root   .ssh
ls   -dl   .ssh
#将.ssh文件夹 更改所有者为students组下的root用户
chown    :students    .ssh
ls   -dl   .ssh
Linux操作系统学习笔记 4 —— 文件管理_第5张图片
更改文件所有者和组

3. 文件默认权限:umask(权限过滤符)

当我们在创建一个文件或一个文件夹时,本来应该是满权限的,但经过umask过滤得到的权限不是一个完整的权限了。当我们创建一个文件的时候,文件的权限本来应该是666(可读、可写,但不可执行)。对于文件并不是666减去umask,而对于文件夹,确实是这样(777减去umask)。

umask        //使用umask查看默认权限  
umask   -S   //使用umask查看默认权限的具体描述
Linux操作系统学习笔记 4 —— 文件管理_第6张图片
使用umask查看默认权限
mkdir  newDir1  
ll  -d  newDir1
touch  newFile1
ll   newFile1
umask   023  //使用umask设置默认权限
umask  
umask   -S //使用umask查看默认权限的具体描述
mkdir    newDir2
ll   -d  newDir2
echo     123 >> newFile2
ll   newFile2
Linux操作系统学习笔记 4 —— 文件管理_第7张图片
修改umask前后对比

如图所示,设置新的umask之后newDir2的默认权限变成了u=rwx,g=rx,o=r,而之前是u=rwx,g=rx,o=rx

4.命令与文件的查询

1.which寻找可执行文件

which   passwd   //寻找命令的完整文件名
which   ifconfig  
#which默认是查找PATH内所规范的目录
which   cd       //cd是内置命令,所以找不到,可以用type命令
Linux操作系统学习笔记 4 —— 文件管理_第8张图片
which寻找可执行文件

2. whereis寻找特定文件

-b:只找binary文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件

whereis   -b   passwd
whereis   -m   passwd  //只找出跟passwd有关的“说明文件”文件名
whereis   -s   passwd
Linux操作系统学习笔记 4 —— 文件管理_第9张图片
whereis寻找特定文件

3. locate寻找关键字文件名

locate   passwd  //在系统中找出所有与passwd相关的文件名

在完整文件名(包括路径名称)当中,只要有passwd在其中,就会被显示出来。whereis和locate利用数据库来查找数据,数据库的创建默认每天执行一次(每个distribution都不同),可以使用updatedb更新数据库。


Linux操作系统学习笔记 4 —— 文件管理_第10张图片
locate寻找关键字文件名

使用updatedb更新数据库

4. find 在磁盘上寻找文件

a.与时间有关的参数

find   /   -mtime   0   

0代表当前时间,从现在开始到24小时内,所有变动过内容的文件都会被列出来!
1代表从现在开始,1*24~2*24之间,即1天前的24小时内
3代表从现在开始,3*24~4*24之间,即3天前的24小时内

Linux操作系统学习笔记 4 —— 文件管理_第11张图片
与时间有关的参数

find   /etc   -newer   /etc/passwd
//寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
Linux操作系统学习笔记 4 —— 文件管理_第12张图片
寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出

b.与用户或用户组有关的参数

find   /home   -user   students

在/home里面查找属于students这个用户的文件

find   /    -nouser  

-nouser寻找文件的所有者不存在/etc/passwd的人
-nogroup寻找文件的所有用户组不存在于/etc/group中的文件
用户自行由网络上面下载文件时会发生,如果系列里面某个账号删除了,但是该账号已经在系统内创建很多文件时,就可能会发生无主文件存在。

Linux操作系统学习笔记 4 —— 文件管理_第13张图片
寻找文件的所有者不存在于/etc/passwd的人

c.与文件权限及名称有关的参数

find    /    -name   passwd
找出文件名为passwd的这个文件

d.其他可进行的参数

find    /    -size    1000k //查找大小大于1000kB的文件
find    /    -size    1000M //查找大小大于1000MB的文件
  • c: 表示字节数
  • k: 表示 kilo bytes (1024字节)
  • w: 字 (2字节)
  • M:兆字节(1048576字节)
  • G: 千兆字节 (1073741824字节)

5. grep用来在内容中寻找特定内容,并且支持正则表达式

grep     [-acinv]    ‘搜寻字串’   filename
#在 /etc/passwd 查找 student 字符串
grep    student      /etc/passwd
#搜索后显示文件的一行
grep举例

你可能感兴趣的:(Linux操作系统学习笔记 4 —— 文件管理)