美文网首页Linux教程Linux学习之路Linux
Linux操作系统学习笔记 4 —— 文件管理

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

作者: 大橙喵 | 来源:发表于2017-08-12 11:22 被阅读34次

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

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

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

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

    #添加用户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
    
    更改文件所有者和组

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

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

    umask        //使用umask查看默认权限  
    umask   -S   //使用umask查看默认权限的具体描述
    
    使用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
    
    修改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命令
    
    which寻找可执行文件

    2. whereis寻找特定文件

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

    whereis   -b   passwd
    whereis   -m   passwd  //只找出跟passwd有关的“说明文件”文件名
    whereis   -s   passwd
    
    whereis寻找特定文件

    3. locate寻找关键字文件名

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

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


    locate寻找关键字文件名
    使用updatedb更新数据库

    4. find 在磁盘上寻找文件

    a.与时间有关的参数

    find   /   -mtime   0   
    

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

    与时间有关的参数
    find   /etc   -newer   /etc/passwd
    //寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
    
    寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出

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

    find   /home   -user   students
    

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

    find   /    -nouser  
    

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

    寻找文件的所有者不存在于/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 —— 文件管理

        本文链接:https://www.haomeiwen.com/subject/qggdrxtx.html