【Linux】目录的相关命令——cd,pwd,mkdir,rmdir

1.相对路径与绝对路径

在开始目录的切换之前,你必须要先了解一下所谓的路径(PATH),有趣的是:什么是相对路
与绝对路径?

  1. 绝对路径路径的写法“一定由根目录/写起”,例如:/usr/share/doc 这个目录。
  2. 相对路径路径的写法“不是由/写起”,例如由/usr/share/doc 要到/usr/share/man下面时,可以写成:“cd./man”这就是相对路径的写法,相对路径意指相对于目前工作目录的路径。

2.目录的相关操作

Linux下有哪些比较特殊的目录?

举例来说,下面这些就是比较特殊的目录,得要用力地记下来才行:

  1. .:代表此层目录。
  2. ..:代表上一层目录。
  3. -:代表前一个工作目录。
  4. ~:代表目前使用者身份所在的家目录.
  5. ~account: 代表account 这个使用者的家目录(account是个账号名称)。

需要特别注意的是:在所有目录下面都会存在的两个目录,分别是“.”与“..”分别代表此层与
上层目录的意思。

那么来思考一下下面这个例题:

请问在Linux下面,根目录下有没有上层目录(.)存在?
        答:若使用“Is一al  /”去查询,可以看到根目录下确实存在,与.两个目录,再仔细查看,可发现这两个目录的属性与权限完全一致,这代表根目录的上一层(.)与根目录自己(.)是同一个目录。

下面我们就来谈一谈几个常见的处理目录的命令;

  1. cd:切换目录
  2. pwd:显示当前目录
  3. mkdir:建立一个新目录
  4. rmdir:删除一个空目录
  5. cd :(change directory,切换目录)

2.1.cd (change directory,切换目录)

它的一般用法是:cd [相对路径或绝对路径]

 我们知道zs_108 这个用户的家目录是/home/zs_108/,而root 家目录则是/root/,假设我以root
身份在Linux 系统中,那么简单说明一下这几个特殊目录的意义是:

先切换身份成为root看看。


代表进入zs_108 这个使用者的家目录,亦即/home/zs_108。


表示回到自己的家目录,亦即是/root这个目录。


#没有加上任何路径,也还是代表回到自己家目录的意思。

#表示去到目前的上层目录,亦即是/root的上层目录的意思。

表示回到刚刚的那个目录,也就是/root。


这个就是绝对路径的写法。直接指定要去的完整路径名称。

这个是相对路径的写法,我们由/var/spoo1/mai1到/var/spool/postfix就这样写。

        cd 是Change Directory的缩写,这是用来切换工作目录的命令,注意目录名称与cd命令之间存在一个空格。

        当登录Linux系统后,每个账号都会在自己账号的家目录中,那回到上一层目录可以用“cd ..”。利用相对路径的写法必须要确认你目前的路径才能正确地去到想要去的目录。

例如上面当中最后一个例子,你必须要确认你是在/var/spool/mail 当中,并且知道在/var/spool 当中有个mqueue的目录才行,这样才能使用cd烈/postfix进入正确的目录,否则就要直接输入cd/var/spool/postfix。
        其实,我们的提示字符,亦即那个【root@hcss-ecs-b4c3 ~]#当中,就已经有指出当前目录了,刚登录时会到自己的家目录,而家目录还有一个符号,那就是“~”。

        例如上面的例子可以发现,使用“cd~”可以回到自己的家目录里面。另外,针对cd的使用方法,如果仅输入cd时,代表的就是“cd~”的意思,亦即回到自己的家目录。而那个“cd-”比较难以理解,请自行多做几次练习,就会明白了。

        还是要一再地提醒,我们的Linux的默认命令行模式(bash shell)具有文件补齐功能,你要常常利用[Tab]按键来自动补全目录路径。这可是个好习惯,可以避免你按错键盘输入错字。

2.2.pwd(显示目前所在的目录)


选项与参数:

  • -P:显示出真正的路径,而非使用链接(link)路径。

范例1:单纯显示出目前的工作目录。

范例2:显示出实际的工作目录,而非链接文件本身的目录名而已,

注意,/var/mail是一个链接文件.

怎么回事?有没有加-P差很多.

看到这里应该知道为啥了吧?

        因为/var/mail是链接文件,链接到/var/spool/mail。#所以,加上pwd -P的选项后,不会显示链接文件的路径,而是显示正确的完整路径。

        pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令,例如在上面最后的目录是/var/mail,但是提示字符仅显示mail,如果你想要知道目前所在的目录,可以输入pwd即可。

        此外,由于很多的软件所使用的目录名称都相同,例如/usr/local/etc和/etc,但是通常Linux仅列出最后面那一个目录而已,这个时候你就可以使用pwd 来知道你的所在目录,免得搞错目录,造成损失。

        其实有趣的是那个 -P的选项。它可以让我们取得正确的目录名称,而不是以链接文件的路径来显示的。如果你使用的是CentOS 7.x的话,刚好/var/mail 是/var/spool/mail的链接文件,通过到/var/mail 执行pwd-P就能够知道这个选项的意义。

2.3.mkdir(建立新目录)

mkdir[-mp]目录名称

选项与参数:

  • -m:设置文件的权限。直接设置,不使用默认权限(umask).
  • -p:帮助你直接将所需要的目录(包含上层目录)递归创建。

范例:请到/tmp 下面尝试建立数个新目录看看:

#话说,系统告诉我们,不可能建立这个目录,就是没有目录才要建立的,见鬼嘛?



原来是要建test4上层没先建test3的原因,加了这个-p的选项,可以自行帮你建立多层目录,

范例:建立权限为rwx--x--x的目录。

仔细看上面的权限部分,如果没有加上-m来强制设置属性,系统会使用默认属性,那么你的默认属性是什么?这要通过umask才能了解.

如果想要建立新的目录的话,那么就使用mkdir (make directory)吧!

        不过,在默认的情况下,你所需要的目录得一层一层地建立才行。

        例如:假如你要建立一个目录为/home/bird/testing/test1,那么首先必须要有/home 然后/home/bird,再来/home/bird/testing 都必须要存在,才可以建立/home/bird/testing/test1这个目录。假如没有/home/bird/testing时,就没有办法建立test1的目录。

        不过,现在有个更简单有效的方法,那就是加上-p 这个选项,你可以直接执行:“mkdir -p/home/bird/testing/test1”则系统会自动帮你将/home、/home/bird、/home/bird/testing 依序地建立起目录。并且,如果该目录本来就已经存在时,系统也不会显示错误信息。挺快乐吧!

不过不建议常用-p这个选项,因为担心如果你打错字,那么目录名称就会变得乱七八糟。

        另外,有个地方你必须要先有概念,那就是默认权限。我们可以利用-m来强制设置一个新目录相关的权限,例如上表当中,我们给予-m711来给予新的目录drwx--x--x的权限。不过,如果没有使用-m选项时,那么默认的新建目录权限又是什么?这个跟umask有关、

2.4.rmdir(删除“空”的目录)

rmdir [-p]目录名称

选项与参数:

  • -p:连同上层“空的”目录也一起删除.

范例:将于mkdir 范例中建立的目录(/tmp下面)删除掉。
可直接删除掉,没问题

因为尚有内容,所以无法删除.

您看看,下面的输出中test与test1不见了。

        使用-p选项,立刻可将 test1/test2/test3/test4一次删除,不过要注意,这个rmdir 仅能“删除空目录”.这个-p选项是从test4开始,因为test4是空的,就被删除了,回到test3,因为test4被删除了,test3就变空了,然后test3被删除,依次类推

如果想要删除旧有的目录时,就使用rmdir。

例如将刚刚建立的test 删掉,使用【rmdir test】即可。

请注意,目录需要一层一层的删除才行,而且被删除的目录里面必定不能存在其他的目录或文件,这也是所谓的空目录(empty directory)的意思。

那如果要将所有目录下的东西都删除?

这个时候就必须使用【rm  -r test 】。不过,还是使用rmdir 比较安全,你也可以尝试以-p选项来删除上层空的目录。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java版Flink使用指南——定制RabbitMQ数据源的序列化器

大纲 新建工程新增依赖数据对象序列化器接入数据源 测试修改Slot个数打包、提交、运行 工程代码 在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中,我们从RabbitMQ队列中读取了字符串型数据。如果我们希望读取的数据被自动化转换为一个对象&#x…

智慧科技照亮水利未来:深入剖析智慧水利解决方案如何助力水利行业实现高效、精准、可持续的管理

目录 一、智慧水利的概念与内涵 二、智慧水利解决方案的核心要素 1. 物联网技术:构建全面感知网络 2. 大数据与云计算:实现数据高效处理与存储 3. GIS与三维可视化:提升决策支持能力 4. 人工智能与机器学习:驱动决策智能化 …

LibreOffice的国内镜像安装地址和node.js国内快速下载网站

文章目录 1、LibreOffice1.1、LibreOffice在application-conf.yml中的配置2、node.js 1、LibreOffice 国内镜像包网址:https://mirrors.cloud.tencent.com/libreoffice/libreoffice/ 1.1、LibreOffice在application-conf.yml中的配置 jodconverter:local:enable…

Java面试八股之MySQL中int(10)和bigint(10)能存储读的数据大小一样吗

MySQL中int(10)和bigint(10)能存储读的数据大小一样吗 在MySQL中,int(10)和bigint(10)的数据存储能力并不相同,尽管括号内的数字(如10)看起来似乎暗示着某种关联,但实际上这个数字代表的是显示宽度,而不是…

vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素

7、指令修饰符 (1)概念: 通过“.”指明一些指令后缀,不同后缀封装了不同的处理操作->简化代码 (2)按键修饰符 keyup.enter->键盘回车监听 (3)v-model修饰符 v-model.tri…

vue + element ui 实现侧边栏导航栏折叠收起

首页布局如下 要求点击按钮,将侧边栏收缩, 通过 row 和 col 组件&#xff0c;并通过 col 组件的 span 属性我们就可以自由地组合布局。 折叠前 折叠后 <template><div class"app-layout" :class"{ collapse: app.isFold }"><div class&…

Onekey正版steam分流下载工具

今天给大家介绍的是一款下载steam游戏的工具。Onekey工具&#xff0c;是一款游戏下载器&#xff0c;可以下载steam正版分流游戏。下载正版分流的网站很多&#xff0c;但是都是网盘或者迅雷下载&#xff0c;或者游戏盒子下载&#xff0c;速度都很慢。这款软件是用steam下载的&am…

Flask项目搭建及部署 —— Python

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目&#xff1a; 创建完成后整个项目结构树&#xff1a; app.py: 项⽬管理⽂件&#xff0c;通过它管理项⽬。 static: 存放静态…

2021版本的idea热部署的详细步骤

背景&#xff1a;我是自己用的是2021版本的idea,然后发现跟2023版本的热部署不太一样&#xff0c;所以&#xff0c;今天自己出一期这样的文章吧&#xff01;&#xff01;&#xff01;其他人配置的时候根据自己的情况&#xff0c;来阅读吧&#xff01; 第一步&#xff1a;方式一…

MyBatis是如何分页的及原理

MyBatis 是一种持久层框架&#xff0c;支持通过配置文件和注解将 SQL 映射为 Java 对象。在实际开发中&#xff0c;查询数据时经常需要进行分页处理。 MyBatis 也提供了支持分页的方案&#xff0c;其主要思路是使用 Limit 偏移量和限制个数&#xff0c;来获取指定数量的数据。下…

音视频入门基础:H.264专题(10)——FFmpeg源码中,存放SPS属性的结构体和解码SPS的函数分析

一、引言 FFmpeg源码对AnnexB包装的H.264码流解码过程中&#xff0c;通过ff_h2645_extract_rbsp函数拿到该H.264码流中的某个NALU的NALU Header RBSP后&#xff08;具体可以参考&#xff1a;《FFmpeg源码&#xff1a;ff_h2645_extract_rbsp函数分析》&#xff09;&#xff0c…

【沐风老师】3DMAX建筑体块生成插件BuildingBlocks使用方法详解

BuildingBlocks建筑体块生成插件使用方法详解 听说你还在手动建配景楼&#xff1f;有了BuildingBlocks这个插件&#xff0c;一分钟搞定喔&#xff01; 3DMAX建筑体块生成插件BuildingBlocks&#xff0c;用于快速自定义街道及生成配景楼区块。 【适用版本】 3dMax2019及更高版…

分布式I/O从站的认知

为什么需要分布式I/O从站&#xff1f; 当PLC与控制机构距离过远时&#xff0c;远距离会带来信号干扰&#xff0c;分布式I/O从站只需要一个网络线缆连接。 ET200分布式I/O从站家族 体积紧凑、功能强大。 ET200SP ET200M ET200S ET200iSP ET200 AL ET200pro ET200 eco PN 通讯协议…

DSSM双塔特征交互

传统的DSSM双塔无法在早期进行user和item侧的特征交互&#xff0c;这在一定程度上降低了模型性能。我们想要对双塔模型进行细粒度的特征交互&#xff0c;同时又不失双塔模型离线建向量索引的解耦性。下面介绍两篇这方面的工作。 美团-Dual Augmented Two-tower 在user和item的特…

1. CSS Grid 网格布局教程

CSS Grid 网格布局教程 一、概述 网格布局&#xff08;Grid&#xff09;是最强大的 CSS 布局方案。 它将网页划分成一个个网格&#xff0c;可以任意组合不同的网格&#xff0c;做出各种各样的布局。以前&#xff0c;只能通过复杂的 CSS 框架达到的效果&#xff0c;现在浏览器…

Scrapy crawl spider 停止工作

Scrapy是一个用于爬取网站数据的流行框架&#xff0c;有时爬虫可能会停止工作&#xff0c;这通常是由多种原因引起的。以下是一些常见问题及其解决方法&#xff1a; 1、问题背景 用户在使用 Scrapy 0.16.2 版本进行网络爬取时遇到问题&#xff0c;具体表现为爬虫在运行一段时间…

Android 开发中 C++ 和Java 日志调试

在 C 中添加堆栈日志 先在 Android.bp 中 添加 ‘libutilscallstack’ shared_libs:["liblog"," libutilscallstack"]在想要打印堆栈的代码中添加 #include <utils/CallStack.h> using android::CallStack;// 在函数中添加 int VisualizerLib_Crea…

生物素结合金纳米粒子(Bt@Au-NPs ) biotin-conjugated Au-NPs

一、定义与特点 定义&#xff1a;生物素结合金纳米粒子&#xff0c;简称BtAu-NPs或biotin-conjugated Au-NPs&#xff0c;是指通过特定的化学反应或物理方法将生物素修饰到金纳米粒子表面&#xff0c;形成稳定的纳米复合材料。 特点&#xff1a; 高稳定性&#xff1a;生物素的修…

【VUE基础】VUE3第七节—Vue Router路由基础

Vue Router 是 Vue 官方的客户端路由解决方案。 客户端路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时&#xff0c;URL 会随之更新&#xff0c;但页面不需要从服务器重新加载。 Vue Router 基于 Vue 的组件系统构建&…

LabVIEW在半导体自动化测试中的应用

半导体制造的复杂性和精密度要求极高&#xff0c;每一个生产步骤都需要严格的控制和监测。自动化测试设备在半导体制造中起到了关键作用&#xff0c;通过精密测量和数据分析&#xff0c;确保产品质量和生产效率。本文介绍如何使用LabVIEW结合研华硬件&#xff0c;开发一个用于半…