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

python文件名可以用中文吗_在文件名中可以使用“/”吗?

答案是你不能,除非你的文件系统有一个bug。原因如下:

有一个用于重命名在fs/namei.c中定义的文件的系统调用,称为renameat:SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,

int, newdfd, const char __user *, newname)

当系统调用被调用时,它对名称执行路径查找(do_path_lookup)。继续追踪这个,我们就可以找到link_path_walk这个:static int link_path_walk(const char *name, struct nameidata *nd)

{

struct path next;

int err;

unsigned int lookup_flags = nd->flags;

while (*name=='/')

name++;

if (!*name)

return 0;

...

此代码适用于任何文件系统。这是什么意思?这意味着,如果您尝试使用传统方法传递一个实际的'/'字符作为文件名的参数,它将不会做您想要的事情。无法逃脱这个角色。如果文件系统“支持”这一点,那是因为它们要么:使用unicode字符或看起来像斜线但不是斜线的字符

他们有一只虫子。

此外,如果确实进入并编辑字节以将斜杠字符添加到文件名中,则会发生不好的事情。这是因为您永远不能按名称引用这个文件:(因为无论何时,Linux都会假设您引用的是一个不存在的目录。使用“rm*”技术也行不通,因为bash只是将其扩展到文件名。即使是rm -rf也不起作用,因为一个简单的strace揭示了事情在引擎盖下是如何进行的(简称:$ ls testdir

myfile2 out

$ strace -vf rm -rf testdir

...

unlinkat(3, "myfile2", 0) = 0

unlinkat(3, "out", 0) = 0

fcntl(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)

close(3) = 0

unlinkat(AT_FDCWD, "testdir", AT_REMOVEDIR) = 0

...

注意,这些对unlinkat的调用将失败,因为它们需要按名称引用文件。

相关文章:

  • idea打开项目xml的路径飘红_从零开始搭建SpringBoot项目(小白版,踏遍万水千坑)...
  • docker 安装nginx_docker安装nginx镜像
  • 概率神经网络_深度学习算法(第33期)强化学习之神经网络策略学习平衡车
  • vasp 安装_安装Atomic Simulation Environment (ASE)
  • fastreport调用frf文件直接打印_不是我吹,20M的压缩文件我只用了1秒!
  • python属于哪类型的编程语言_python属于什么类型的语言
  • python excel接口测试_利用python和excel 搭建接口测试框架
  • sql 日期月转换到日_速来!9月新增雅思考点、考试日期(更新至8月16日)
  • python处理csv文件 pandas_Pandas操作CSV文件的读写实现方法
  • 组播应用场景_慧联应用研究 | 浅谈LoRaWAN组播技术和应用(市场篇)
  • python语言过渡到c语言_2020年1月编程语言排行榜:Python让位,C语言获得“2019 年度编程语言”...
  • redis 端口_Centos7 linux 下yum安装redis以及使用
  • python groupby用法_Python教程 | 数据分析系统步骤介绍!
  • input file文件上传_了解PHP文件上传相关知识
  • hystrix熔断和降级的区别_学习笔记32-Hystrix
  • CODING 缺陷管理功能正式开始公测
  • Computed property XXX was assigned to but it has no setter
  • Git 使用集
  • IndexedDB
  • JS实现简单的MVC模式开发小游戏
  • Laravel Telescope:优雅的应用调试工具
  • Linux下的乱码问题
  • Shadow DOM 内部构造及如何构建独立组件
  • v-if和v-for连用出现的问题
  • 初识MongoDB分片
  • 给github项目添加CI badge
  • 观察者模式实现非直接耦合
  • 后端_MYSQL
  • 简单实现一个textarea自适应高度
  • 用简单代码看卷积组块发展
  • const的用法,特别是用在函数前面与后面的区别
  • 国内开源镜像站点
  • ​力扣解法汇总946-验证栈序列
  • #NOIP 2014# day.2 T2 寻找道路
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (差分)胡桃爱原石
  • (一)kafka实战——kafka源码编译启动
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .netcore如何运行环境安装到Linux服务器
  • @Autowired和@Resource的区别
  • @Builder用法
  • @Conditional注解详解
  • @FeignClient注解,fallback和fallbackFactory
  • @RequestMapping-占位符映射
  • [AAuto]给百宝箱增加娱乐功能
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C++]STL之map
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [IE9] IE9 beta版下载链接