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

linux-21 目录管理(一)mkdir命令,创建空目录

  对linux而言,对一个系统管理来讲,最关键的还是文件管理。那所以我们接下来就来看看如何实现文件管理。当然,在文件管理之前,我们说过,文件通常都放在目录下,对吧?所以先了解目录,可能对我们而言是个基础,来看一下,目录管理的相关功能都有哪些吧?
首先我们讲过几个命令了,比方说ls、cd、pwd,再看其他命令,比如要想创建一个目录,该怎么办?mkdir,简写make directory,这就是用来创建空目录的。我们在什么地方可以创建目录?比方说一个路径压根就不存在,我在底下创建行不行?比如,假设我们在root下的x下的y下创建个z,/root/x/y/z请问这到底是创建root创建x再创建y再创建z?还是说我指的目的只是为了创建z?
也就意味着/root/x/y/ 是路径,是不是这意思啊?我们创建目标是谁啊?只是z而已,对吗?那如果z的父目录y不存在的话,怎么办?能创建z吗?不能,这个一定要理解,一说到创建目录就随便给个路径,就要创建,创建目录的时候给的任何一个路径上,只有最后一个节点,就是文件路径的最后一个点,才是要创建的那个目录。比如来看,ls一下当前目录,ls .,如下图,

没有叫x的目录是吧?我们mkdir x,如下图,

就创建了一个叫做x的目录,然后 mkdir x/y,大家看,现在使用的是绝对路径还是相对路径?相对路径,绝对路径都是以斜线开头的,对不对?O而相对路径都是以什么开头的,点斜杠,所以也可以写成 mkdir ./x/y这表示当前目录下x下的y,但是点斜杠可以省略,在很多时候是可以省略的,
这表示我创建个y,如下图,

是在x这个路径下创建的,x是当前目录下的x,此时我们是不是就可以创建z了?就这么简单,因为x和y都已经存在了,mkdir ./x/y/z,如下图,

我们来看看x下边是不是有y,是不是有个z,那么要使用什么命令可以看到目录树?这里我们使用个命令叫tree,查看目录树,这叫查看文件系统树的,tree命令,如下图,

它明显给我们一个结构,x下有y,然后y下有z,假设说我们此时想在root目录下创建个m,下面有个n,再往下有一个q的目录,该怎么来实现?跟刚才一样,先创建m,再创建n,再创建q,对吧?
这事很麻烦,所以很多时候我们希望一个命令搞定的话也可以,mkdir有个选项叫-p选项,-p表示parent,叫父目录,如果我们指定z的话,z的父目录y不存在,那就先创建y,会自动先创建,那如果y的父母x不存在的话,就自动先创建x,如果x父母root不存在,一样依次类推。当然,根不可能不存在的,对不对?那因此所以,我一个命令也能同时把它创建出来,比如,我们使用mkdir -p /root/m/n/q 就行了,不加-p,它会报错的,如下图,

mkdir: cannot create directory `/root/m/n/q': No such file or directory,它压根就没有m,怎么可能在m/n下创建q呢?这不可以,也不允许的,使用杠p选项就可以了,再说另外一个选项叫-v,linux的很多命令都有-v选项,叫做verbose,它意思表示详细信息。那因此我们把-p和-v一块来用,它会显示这个创建过程,mkdir -p /root/m/n/q,如下图,

先创建m,m下创建n,n下再创建q,如果不想查看这个过程,-v就不用带了,有没有发现?我们如果执行个命令,成功了不加-v选项,它什么都不给我们返回,如果失败了,就给我们说一大堆话,
是不是这样子?所以这也是linux的重要哲学思想之一,叫没有信息就是最好的信息。它不说话,那就说明这事儿成了,它要跟你说一大堆,那说明一般是有问题的。所以它一旦出现信息了,一定要看一看。看不懂也要看,反正我们有词典,有各种翻译,好,这是我们mkdir命令的使用,当然它的常用选项也就这么多,这是如何创建一个目录的,是不是很简单?好了,我们思考这样一个问题,有时候我们可能有这样的一种需求,假设在mnt下创建个创建个test目录,在test下创建个x,在test下还创建一个y。好在x下还有一个m,思考下,怎么用一个命令实现,一下子创建了几个路径出来?怎么实现?很简单,mkdir -pv /mnt/test/x/m /mnt/test/y,是不是这样子?那有没有发现整个路径里边前半段都是重复的?那怎么办呢?还可以这么来用,mkdir -pv /mnt/test/{x/m,y},这叫花括号,这是bash的一种特性,高级特性叫做花括号展开,或者叫命令行展开,当它遇见花括号的时候,会自动把逗号分隔的路径展开为两个,那意思就是说,有的路径是/mnt/test/x/m ,有的路径是 /mnt/test/y,所以它自动把它展开为上面这两个这个路径,这就叫花括号展开,或者叫命令行展开的一种功能,叫花括号展开。其实已经讲过一个了,另外一个展开叫波浪线展开,我写个cd ~student的时候,是不是自动给你转换完成这个student用户的家目录了?这就叫波浪线展开,我们来试一下,mkdir -pv /mnt/test/{x/m,y},如下图,

看看test、xx、m、y是不是展开了。

    好,那于是我们思考这样一个问题,我想在/mnt/目录下的mm目录下建立a_c a_d b_c b_d ,这四个目录如何通过一个命令完成呢?
很简单,mkdir -pv /mnt/mm/{a,b}_{c,d},如下图,

我们tree /mnt/mm ,如下图

这也是我们linux或者unix管理员的十大常用技巧之一,要学会使用,学会灵活运用。


http://www.mrgr.cn/news/81497.html

相关文章:

  • oracle 加字段和字段注释 sql
  • mysql数据被误删的恢复方案
  • 【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
  • Springboot + vue3 实现大文件上传方案:秒传、断点续传、分片上传、前端异步上传
  • Spring Boot 应用开发入门(一)
  • 单元测试(UT,C++版)经验总结(gtest+gmock)
  • 踏踏实实练SQLday1-1连续登录
  • 【SLAM】点线特征的VINS-Mono:PL-VINS算法测试
  • Tasmota ESP设备开源固件(esp8266,32X)
  • lua-debug for Sublime
  • redis——岁月云实战
  • Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤
  • SpringBoot 集成 MongoDB
  • 驱动开发系列31 - Linux Graphics 调试 mesa 的 glDrawArrays (三)
  • 51c大模型~合集96
  • 【ES6复习笔记】集合Set(13)
  • 【深度学习实战:kaggle自然场景的图像分类-----使用keras框架实现vgg16的迁移学习】
  • Jenkins 构建流水线
  • 【ES6复习笔记】Symbol 类型及其应用(9)
  • Vue3 中使用axios
  • 深入理解C++智能指针:从std::auto_ptr到现代C++的演进
  • 重温设计模式--8、命令模式
  • cannot import name ‘_C‘ from ‘pytorch3d‘
  • 骑砍2霸主MOD开发(26)-Mono脚本系统
  • More Effective C++之技术Techniques,Idioms,Patterns_条款26-27
  • 【Hot100刷题计划】Day04 栈专题 1~3天回顾(持续更新)