linux实用指令(中)

本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!

注意:最新修改版本已发布在 这里,点击前往查看!

时间日期类

date日期

  1. 语法:

    date  # 显示当前时间
    date "+%Y"  # 显示当前年份
    date "+%Y-%m-%d %H:%M:%S"  # 格式化显示当前年月日时分秒,其中-、:可以任意修改
    
  2. 案例:

    • 显示当前时间:

      date
      

      运行结果:

    • 显示年月日时分秒:

      date "+%Y-%m-%d %M:%D:%S"
      

      运行结果:

date设置

  1. 语法:

    date -s '年-月-日 时:分:秒'  # 设置日期,必须按照此格式设置时间
    
  2. 案例:将日期设置为2020-10-01 0:0:0

    date -s '2020-10-01 00:00:00'
    

    运行结果:

cal日历

  1. 语法:

    cal year[可选,显示该年份日历]  # 显示本月/指定年份的日历
    
  2. 案例:显示2024年日历

    cal 2024
    

    运行结果:

搜索查找类

find

  1. 语法:

    find 搜索范围 -name,-user,-size[可选一项] 文件名  # 查找文件
    
  2. 案例:

    • 在/root目录下查找名称为c.txt的文件:

      find /root/ -name c.txt  # 通配符也适用
      
    • 查找所有者为root用户的文件:

    find /root/ -user root

    
    运行结果:
    
    <img src="https://cdn.jsdelivr.net/gh/xingjiahui/CDN@latest/2020/09/25/c3cd35ba24b43b8fe7a002f63b105c75.png" width="70%"/>
    
    - 查找整个linux系统下大于20m的文件(+n大于,-n小于,n等于)
    
    ```shell
    find / -size +20M  # 注意:单位为M、k等
    

    运行结果:

locate

  1. 语法:

    locate 搜索文件  # 快速定位文件路径
    

    注意:locate基于数据库进行查询,所以在第一次运行前要执行updatedb命令以更新数据库

  2. 案例:使用locate指令快速定位hello.txt文件所在目录

    updatedb  # 更新(创建)数据库
    locate hello.txt
    

    运行结果:

grep和|

  1. 语法:

    grep 字符串  # 查找指定内容
    grep -n 字符串  # 查找指定内容并显示行号
    grep -i 字符串  # 不区分大小写
    
  2. 案例:在hello.txt中查找所有yes并显示行号

    • hello.txt内容:

    • 代码:

      cat hello.txt | grep -ni yes
      

      运行结果:

压缩和解压类

gzip和gunzip

  1. 语法:

    gzip 文件  # 将文件压缩为.gz文件,后跟多个文件名即可压缩多个文件
    gunzip 文件.gz  # 将.gz后缀的文件解压
    
  2. 案例:

    • 将/root下的hello.txt文件压缩:

      gzip hello.txt
      

      运行结果:

    • 将hello.txt.gz文件解压缩:

      gunzip hello.txt.gz
      

      运行结果:

      注意:gzip只能用来压缩文件不能用来压缩目录,即使使用-r选项指定目录,也只能递归将目录下文件分别压缩

zip和unzip

  1. 语法:

    zip -r[可选,递归压缩] 压缩包名 文件  # 压缩文件目录
    unzip -d[可选,指定压缩后的位置] 文件.zip  # 解压.zip后缀的文件
    
  2. 案例:

    • 将/home目录下的所有文件压缩为mypackage.zip:

      zip -r mypackage.zip /home/  # 注意:压缩包名在原目录前面
      

      运行结果:

    • 将mypackage.zip解压到/opt/tmp:

      unzip -d /opt/tmp mypackage.zip  # 注意:解压位置在压缩包前面
      

      运行结果:

tar

  1. 语法:

    tar [可选项,见下图] ***.tar.gz 要打包的内容(可为多个文件、目录)  # 压缩文件或目录
    

    可选项:

  2. 案例:

    • 压缩多个文件,将/root/a.txt,/root/b.txt文件压缩成a_b.tar.gz:

      tar -zcvf a_b.tar.gz a.txt b.txt
      

      运行结果:

    • 压缩/home下的所有文件(非压缩/home目录):

      tar -zcvf test.tar.gz /root/*  # 要区分/root/和/root/*
      
    • 解压a_b.tar.gz到当前目录:

      tar -zxvf a_b.tar.gz 
      
    • 解压a_b.tar.gz到/opt/tmp下:

      tar -zxvf a_b.tar.gz -C /opt/tmp/  # 注意:指定路径需要在路径前添加参数-C(大写),并且路径必须存在
      

组的管理

组的介绍

  1. 概述:在linux中的每个用户必须属于一个组,不能独立于组外。
  2. 文件/目录:
    • 所有者:文件归属的用户
    • 所在组:所有者所在的用户组的用户
    • 其他组:非所在组的其它用户

所有者

  1. 查看文件所有者

    • 定义:一般为文件的创建者,谁创建了该文件,就自然成为该文件的创建者。

    • 语法:

      ls -ahl  # 查看文件所有者,a(显示全部文件),h(human,使用M,k作为文件大小单位显示),l(列表显示)
      
    • 案例:创建一个组police,再创建一个用户tom属于组police,然后使用tom来创建一个文件

      groupadd police  # 创建police用户组
      useradd -g police tom  # police用户组下创建用户tom
      passwd tom  # 设置用户tom的密码
      # 使用tom用户登录服务器
      touch 1.txt  # 创建文件1.txt
      ls -ahl  # 使用ls命令查看1.txt文件的所有者
      

      运行结果:

  2. 修改文件所有者:

    • 语法:

      chown 用户 文件  # 将文件所有者修改为用户
      
    • 案例:使用root创建一个apple.txt的文件,将其所有者修改为tom

      touch apple.txt  # root账户下创建apple.txt文件
      ls -ahl  # 查看该文件所有者信息
      chown tom apple.txt  # 将apple.txt文件的所有者修改为tom
      ls -ahl  # 再次查看该文件所有者信息
      

      运行结果:

      注意:虽然所有者改变了,但修改前后用户所在组均为root,所以仅修改所有者不会改变其所在组。

所在组

  1. 定义:当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组

  2. 语法:

    ls -ahl  # 查看文件所在组
    chgrp 用户组 文件  # 修改文件所在组为用户组
    
  3. 案例:/root下创建文件aorange.txt文件,使用chgrp指令修改文件所在组为police

    touch aorange.txt  # 创建文件
    ls -ahl  # 查看文件所在组
    chgrp police aorange.txt  # 修改文件所在组
    ls -ahl  # 再次查看文件所在组
    

    运行结果:

  4. 同时修改文件所有者和所在组:

    • 语法:

      chown -R 用户 文件  # 单独使用chown
      chgrp -R 用户组 文件  # 单独使用chgrp
      chown -R[可选,递归修改所有文件所有者和所在组] 用户:所在组 文件  # 同时修改文件所有者和所在组
      
    • 案例:修改/home/tom下文件的所有者和所在组为tom

      chown -R tom:tom tom/
      

      运行结果:

其他组

​ 定义:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

权限的管理

权限介绍

rwx权限

  1. 作用到文件:

    • r(read):可查看
    • w(write):可修改,但不代表具有删除的权限(对文件所在目录具有w权限时,才可删除)
    • x(execute):可被执行
  2. 作用到目录:

    • r:可读,ls查看目录内容
    • w:可写,目录内创建、删除、重命名
    • x:可执行,cd进入该目录
  3. 注意:关于子目录数量

修改权限

  1. 说明:使用chmod指令,可以修改文件或者目录的权限

  2. 使用+、-、=变更权限:

    • 语法:

      # u:所有者,g:所在组,o:其他组,a:所有用户(u+g+o)
      chmod u=rwx,g=x,o=x 文件/目录名  # 给文件/目录赋权限
      chmod o+w 文件/目录名  # 给文件/目录的其他组(o)添加一个写(w)权限
      chmod a-x  文件/目录名  # 给文件/目录的所有用户都减一个执行权限
      
    • 案例:

      • 给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组用户执行权限

        chmod u=rwx,g=rx,u=x abc
        

        运行结果:

      • 给abc文件的所有者除去执行权限,给所在组增加一个写的权限

        chmod u-x,g+w abc
        

        运行结果:

      • 给abc所有用户增加读的权限

        chmod a+w abc
        

        运行结果:

  3. 使用数字变更权限:

    • 语法:

      # 规则:r=4,w=2,x=1
      chmod 751 abc  # 等价于chmod u=rwx,g=rx,o=x abc
      
    • 案例:给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组用户执行权限

      # u=rwx(7),g=wx(3),o=x(1)
      chmod 731 abc
      

      运行结果:

最佳实践

警察和土匪

  1. 题设:

    police,bandit  # 用户组
    jack,jerry  # 警察用户
    xh,xq  # 土匪用户
    
  2. 题目:

    • 创建组

      groupadd police
      groupadd bandit
      
    • 创建用户

      useradd -g police jack
      passwd jack
      useradd -g police jerry
      passwd jerry
      useradd -g bandit xh
      passwd xh
      useradd -g bandit xq
      passwd xq
      
    • 使用jack用户登录并创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限

      touch a1.txt
      chmod 640 a1.txt 
      

      运行结果:

    • jack修改文件权限,让其他组人可以读,所在组用户可以写

      chmod o+r,g+w a1.txt
      

      运行结果:

      验证同组可以修改:

      • jerry账号登录并尝试进入/home/jack目录下:

        cd /home/jack/
        

        运行结果:

        原因:

        注意:这个很好理解,在自己家里有权限但在整栋楼不一定有权限

      • 使用jack账户修改/home/jack文件的权限:

        chmod 750 jack/
        

        运行结果:

        注意:为什么给所在组5的权限?因为需要进入(x:1)和查看(r:4),所以总权限是4+1=5

      • 再次尝试修改a1.txt文件内容:

    • xh投靠警察,看看是否可以读写

      • 修改xh的所在组:

        usermod -g police xh  # 注意:修改某个用户所在组需要root账户下操作
        
      • 尝试读写a1.txt文件:


不足之处,欢迎留言,会及时回复,及时更正!

创作不易,感谢支持!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值