Linux:路径末尾加/和不加/的区别

相关阅读

Linuxicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482


普通文件操作

        首先说明这个问题只会出现在目录和符号链接中,因为如果想要索引普通文件但却在路径末尾加/则会出现错误,如例1所示。

# 例1
zhangchen@EDA:~$ /bin/ls/
bash: /bin/ls/: Not a directory

目录操作

        大多数情况下,路径末尾加不加/都会指向相同的对象,如例2所示。

# 例2
# 下面两者是等效的
zhangchen@EDA:~$ cd /home   
zhangchen@EDA:~$ cd /home/

命令特例 

        但有些命令对路径末尾的/非常敏感,表现出不同的行为,例如用于目录同步的rsync命令,如例3所示。 

# 例3
zhangchen@EDA:~$ rsync -a ./source ./destination  # 复制整个目录,包括目录本身
zhangchen@EDA:~$ rsync -a ./source/ ./destination # 仅复制目录内容,不包括目录本身

        当源路径目录末尾不加/时,会递归复制整个目录包括目录本身,最后的结构类似于/destination/source/...;而当源路径目录末尾加/时,会递归复制整个目录但不包括目录本身,最后的结构类似于/destination/...。

        类似地,cp命令在复制目录时也可能产生区别,如例4所示。

​# 例4
zhangchen@EDA:~$ cp -r /source /destination  # 复制整个目录,包括目录本身
zhangchen@EDA:~$ cp -r /source/ /destination # 仅复制目录内容,不包括目录本身

        当源路径目录末尾不加/时,会递归复制整个目录包括目录本身,最后的结构类似于/destination/source/...;而当源路径目录末尾加/时,会递归复制整个目录但不包括目录本身,最后的结构类似于/destination/...。

符号链接 

        对于指向目录的符号链接的处理,末尾的/也可能产生影响,如例5所示。

​# 例5
zhangchen@EDA:~$ ln -s ~/destination/ link # 建立指向目录的软链接
zhangchen@EDA:~$ ls -al link   # 显示link链接文件相关信息
lrwxrwxrwx. 1 zhangchen zhangchen 0 Sep 21 00:48 link -> /home/zhangchen/destination/
zhangchen@EDA:~$ ls -al link/  # 显示link链接指向目录中的文件(即使多个符号链接嵌套也是如此)
lrwxrwxrwx. 1 zhangchen zhangchen 0 Sep 21 00:48 link -> .
lrwxrwxrwx. 1 zhangchen zhangchen 0 Sep 21 00:48 link -> ..
lrwxrwxrwx. 1 zhangchen zhangchen 0 Sep 21 00:47 link -> test

总结

        普通文件操作:路径末尾加/会导致错误,因为文件不能当作目录使用。

        目录操作:路径末尾加不加/通常效果一样。

        命令特例:像rsync和cp等命令对路径的/结尾有特殊的处理方式,可能影响复制行为。

        符号链接:加/结尾会将符号链接当作其指向的目录处理。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

free源码

文章目录 free源码调试main_arena结构:free_hooktcachetcache的结构free_chunk进入tcache: fastbinunlink 合并top free源码调试 main_arena结构: 整体看一下main_arena的结构: free_hook free_hook,在glibc-2.3…

在 Windows 11 中,可以通过修改注册表来更改系统的自动更新时间设置

regedit 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings FlightSettingsMaxPauseDays 36524

AI少女/HS2甜心选择2 仿崩铁人物卡全合集打包

内含AI少女/甜心选择2 仿崩铁【崩坏 星穹铁道 】角色卡全合集打包共6张 内含:布洛妮娅镜流卡芙卡希儿停云银狼 下载地址: https://www.51888w.com/375.html 部分演示图:

项目第六弹:虚拟机管理模块、路由匹配模块

项目第六弹:虚拟机管理模块、路由匹配模块 一、虚拟机管理模块的设计1.什么是虚拟机?2.借助MySQL来理解一下3.如何整合?【埋下伏笔】 二、RabbitMQ为何要有虚拟机1.从业务角度来讲2.步步探索1.优点2.结合业务适用场景和需求3.发掘真正的原因4…

NoSql数据库Redis知识点

数据库的分类 关系型数据库 ,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL 、 Oracle 、 MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQL 数据库 ,全称为 Not Only SQL &a…

Python学习——【4.1】数据容器:list列表

文章目录 【4.1】数据容器:list列表一、数据容器入门二、数据容器:list 列表(一)列表的定义(二)列表的下标索引(三)列表的常用操作(1)列表的查询功能&#xf…

RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验

1.RAGflow简介 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。大语言模型 LLM 以及向量模型均支持配置。基于多路召回、融合重排序。提供易用的 API,可以轻松集成到各类企业系统。支持丰富的文件类型,包括 Word 文档、PPT、exc…

Vue3入门 - ElementPlus中左侧菜单和Tabs菜单组合联动效果

在Vue3中,ElementPlus是使用比较广泛的UI组件库,提供了丰富的界面元素支持项目开发需求。在后台管理系统中,左侧或顶部的菜单栏通常包含多个子菜单项,通过菜单的展开和收缩功能,用户可以方便地查看或隐藏不需要的菜单项…

数字世界中的浪漫:揭秘会跳动的爱心

在编程的世界里,复杂的技术可以与艺术产生美妙的碰撞。无论是通过代码实现动态效果,还是用算法绘制图案,程序员都可以成为数字艺术的创作者。而今天,我们将通过 Python 的强大 GUI 工具库 Tkinter,用简单的代码生成一颗…

U-Boot顶层Makefile详解

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用,方便进一步记录自己的实践总结。 上一章我们详细的讲解了 uboot 的使用方法,其实就是各种命令的使用,学会 uboot 使用以后就可以尝试移植 uboot 到自己的开发…

linux操作系统的基本命令

1.linux下的文件系统 在linux操作目录下没有像window操作系统下盘符的概念,只有一个根目录/,所有文件目录都在它的下面 linux的目录结构: 在Linux系统中: 文件都从跟目录开始的,用/表示文件名称区分大小写路径都是以/俩进行分隔(windown用\分隔)以.开头的文件为隐藏文件 Li…

鸿蒙开发之ArkUI 界面篇 十七 购物综合案例

layoutWeight:子元素与兄弟元素主轴方向按照权重进行分配,参数是联合类型,数字或者是字符串,在指定的空间占多少份额,数字越大,表示在空间中占用的份额越多,如果父容器的子组件没有别的指定,剩下的空间全部…

10分钟一条童装走秀爆款Ai视频,小白轻松上手,新蓝海赛道,竞争小机会多!

今天我要给大家带来一个超级有趣的项目——童装走秀AI视频制作。 这不仅是一个充满创意的项目,而且操作简单,即使是视频制作的新手也能轻松上手。 更重要的是,这个项目竞争小,变现机会多,是进入新蓝海赛道的绝佳机会…

C++类之set与get理解

在类中,我们尝尝将一些变量设置为private或者protect里面,而我们经常会遇到在主函数(main.cpp)使用到这些private变量,而往往我们会下意识地在主函数直接调用在private里面的变量,但现实比较残酷&#xff0…

【linux】nice命令

Linux中的nice命令是一个强大的工具,用于调整进程的优先级,进而影响它们在CPU上的资源分配和执行顺序。以下是关于nice命令的详细解释,包括其用途、语法、参数、示例以及使用建议。 一、用途 nice命令主要用于控制进程在CPU上的调度优先级&…

K8S介绍+集群部署

Kubernetes介绍 官网:https://kubernetes.io/ 一、应用部署方式演变 1、传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其他技术的参与 缺点:不能为应用程序定义资源使用边界&a…

【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection

原文链接:https://arxiv.org/pdf/2312.01696 简介:最近,在摄像头3D目标检测任务中,基于查询的Transformer解码器正在超越传统密集BEV方法。但密集BEV框架有着更好的深度估计和目标定位能力,能全面精确地描绘3D场景。本…

初始网络编程(下)

所属专栏:Java学习 1. TCP 的简单示例 同时,由于 TCP 是面向字节流的传输,所以说传输的基本单位是字节,接受发送都是使用的字节流 方法签名 方法说明 Socket accept() 开始监听指定端口(创建时绑定的端口&…

Navicat导入Sql文件至Mysql数据库,事务失效

Mysql 版本:8.0.39 Navicat 版本:17.x、16.x 结论: Navicat 导入sql文件,事务不会生效,无论怎么设置 mysql.exe 导入sql文件,事务生效 测试 准备一张表 name约束不能为空,用于测试事务失败…

SpringBoot 整合 Caffeine 实现本地缓存

目录 1、Caffeine 简介1.1、Caffeine 简介1.2、对比 Guava cache 的性能主要优化项1.3、常见的缓存淘汰算法1.4、SpringBoot 集成 Caffeine 两种方式 2、SpringBoot 集成 Caffeine 方式一2.1、缓存加载策略2.1.1、手动加载2.1.2、自动加载【Loading Cache】2.1.3、异步加载【As…