当前位置: 首页 > ds >正文

linux学习 4.2 目录修改相关命令

这里介绍常见的修改目录相关的命令包括mkdir chmod rmdir rm cp

创建目录mkdir

mkdir [OPTION]... DIRECTORY...

1.mkdir dir1
在这里插入图片描述
2. mkdir dir1 dir2 dir3 支持一次创建多个目录
在这里插入图片描述
3. mkdir -p a/b/c/d递归的创建父目录
在这里插入图片描述
利用前面学的tree命令可以清晰地查看目录结构

修改权限chmod(changemod)

感觉得提前说一下如何修改权限,以便于你来测试
我先用touch创建了一个文件
在这里插入图片描述
你可以看到他的权限为rw-rw-r--你可以在这里看到解释

  chmod [OPTION]... MODE... FILE...
  1. chmod 615 a.txt用数字指定权限
    我们着重讲一下MODE的设计
    权限可以分为三组都是指定一个文件的读写执行权限
    我们能够把他看成一个二进制的数
    对于拥有者他的权限为rw-对应的二进制为110八进制则是6读写执行这个顺序是固定的
    第一种指定MODE的形式则是3为八进制来分别指定拥有者 拥有组 其他用户的权限
    所以

    权限
    r4
    w2
    x1

    然后对于你想分配的可以任意组合例如rw---xr-x转换成8进制为615
    在这里插入图片描述
    这样你就能任意指定文件的权限了

  2. chmod -R 715 dir会递归的修改目录里的所有权限
    在这里插入图片描述
    请注意这个时候如果你再采用615便会失败,因为修改完dir1后你便缺失了执行权限,修改dir1里面的文件的权限需要你有执行权限

  3. 添加权限
    我们可以下面的形式来修改权限

    chmod [ugoa][+-=][rwx] FILE
    

    其中ugo分别代表拥有者 拥有组 其他用户 a则代表所有 +代表添加权限 -代表减少权限

    • chmod o+wx test.txt为其他用户增加wx权限
      在这里插入图片描述
    • chmod go-rw test.txt你也可以一次性指定多组
      在这里插入图片描述
    • chmod a=rwx test.txt 一次指定所有用户
      在这里插入图片描述
    • chmod u-w,g-rx,o=--- test.txt 你可以用,自由设置权限
      在这里插入图片描述
    • chmod +x test.txt 如果不指定用户默认是a
      在这里插入图片描述
      注意这里会出现一些小问题,最好不要省略你的命令使用默认
      在这里插入图片描述
      我先将test.txt的权限都置0然后使用chmod =rwx test.txt想要将权限全都改为rwx
      但是你发现了一个致命的问题rwxrwxr-x其他用户的写权限并没有被赋予,这与我们想要的不同,所以避免这样做

    原因:
    虽然不写用户会默认a但是权限的修改会受制于umask
    umask是用于设置新建文件或目录的默认权限的 你可以采用如下命令查看
    在这里插入图片描述
    第一个0代表八进制后面的002则和数字设置权限的配置相同
    umask会影响创建的文件的默认权限
    - 新建 文件 的默认权限 = 666 - umask
    - 新建 目录 的默认权限 = 777 - umask
    这其实相当于屏蔽设置002屏蔽了其他用户的写权限,所有你在默认操作的时候不能修改写权限

删除空目录rmdir

这个命令只能用于删除目录

rmdir [OPTION]... DIRECTORY...

1.rmdir dir1删除指定的空目录

在这里插入图片描述
2.rmdir dir2 dir3同样可以用于一次多删除几个
在这里插入图片描述
3.rmdir -p a/b/c/d同时删除父目录
在这里插入图片描述
如果不使用-p则只能删除d目录
在这里插入图片描述

删除目录或文件rm

rm [OPTION]... [FILE]...
  1. rm a.txt删除文件
    在这里插入图片描述
  2. rm -f rootx.txt强制删除文件
    我用root用户在/home/wxy下创建了一个rootx.txt的文件,使用touch rootx.txt创建的
    在这里插入图片描述
    如果不使用-f命令则会跳出一个提示,因为你没有权限ls -l可以看到rootx.txt的第一列为-rw-r--r--上一节说了明了这代表他是一个普通文件,所有者的权限为rw-所有组为r--其他用户为r--我们是其他用户所有没有写权限,在删除的时候会出现循环,这时候你按y即可删除
    如果使用-f命令则可以避免出现这种情况
    在这里插入图片描述
    **请注意:**这里的强制删除实际上是要求你有权限的,只是可以避免在具有保护的时候出现确认信息 ,你可以试一试用普通用户去删除root用户里的内容,是会被拒绝的

能否删除一个文件实际上取决于你对其父目录的权限,你必须拥有其父目录的写和执行权限才行 即使没有读的权限也能删除,但是你不能用ls 如果你记得有什么文件名一样能完成删除动作

  1. rm -r test 递归的删除一个目录,你必须使用-r才能删除一个目录
    在这里插入图片描述
    如果你没有对里面的文件的写权限可能会跳出确认信息,在具有大量文件或者编写脚本的时候你可能想避免这种情况,所以请结合上-f
    在这里插入图片描述
    在这里插入图片描述

你可能会好奇什么情况下会弹出确认消息,这其实是一个保护措施,如果你没有对他的写权限便会弹出,换言之只要你有w权限便能删除
可以看到只缺少了写权限便会出提示
在这里插入图片描述
只具有写权限便能删除
在这里插入图片描述

复制目录和文件cp

       cp [OPTION]... SOURCE DESTcp [OPTION]... SOURCE... DIRECTORY
OPTION作用
-v显示复制过程
-r递归复制目录
-p保留文件属性:所有者时间戳权限
-u仅当源文件比目标文件新时覆盖
-n不覆盖已存在文件
-fi强制覆盖

可能只有-r你会经常用到

简单使用

  1. cp 1.txt 2.txt 简单复制文件
    在这里插入图片描述
    或者复制到文件夹里也可以
    在这里插入图片描述
    2.cp 1.txt 2.txt dir/将两个文件复制到目录里
    在这里插入图片描述
    3.cp -r dir/ dir1/递归复制dir目录里的内容
    在这里插入图片描述
    你可以注意到包括dir所有都被复制了过去
    如果你想只复制文件可以这样做
    在这里插入图片描述
    *是通配符将在下一节讲解,你可以在这里暂时理解成所有文件

说实话掌握这几个基础操作即可,想要特定的功能例如不要修改文件的信息呀,只将新的文件复制过去呀,你可以使用man cp查看具体的设定,可选项还是非常多的

目前可能还有查询没有将,将在说完正则表达式和通配符后介绍

http://www.xdnf.cn/news/554.html

相关文章:

  • 在小米AX6000中通过米家控制tailscale
  • 微服务治理与可观测性
  • PCI总线和PCIe总线
  • 数据结构学习笔记 :排序算法详解与C语言实现
  • Spring 依赖冲突解决方案详解
  • AUTOSAR图解==>AUTOSAR_SWS_EFXLibrary
  • BGP选路实验
  • 2024年3月 GESP 图形化二级考级真题——找因数
  • 解锁思想道德修养的奥秘:用思维导图开启智慧之旅
  • Multi-Query Attention (MQA) PyTorch 实现
  • 《擦除序列》线性时间做法题解
  • 利用 FastAPI 实现三种推送方式
  • 企业微信自建应用开发回调事件实现方案
  • AI文生图工具推荐
  • swift-12-Error处理、关联类型、assert、泛型_
  • Java ThreadPoolExecutor 深度解析:从原理到实战
  • 编译Spring源码时遇到的错误
  • HDMI如何进行插入检测
  • QML中的3D功能--纹理应用
  • Linux字符设备驱动
  • ZLMediaKit 和 SRS的区别,哪个更好用?
  • 在Qt和OSG中动态改变部分3D模型数据
  • 大模型API中转平台选择指南:如何找到优质稳定的服务
  • 压滤机与锡泥产生效率
  • OzGIS:地理信息分析与处理软件
  • C语言用if else求三个数最小值的一题多解
  • c++冒泡排序实现
  • Java Web 之 简介 100问
  • 大模型时代:机遇与风险并存的AI革命
  • Java Stream API 实践指南:从基础操作到高效用法