AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 410048
Accepted
andselisk
andselisk
Asked: 2017-12-11 05:08:44 +0800 CST2017-12-11 05:08:44 +0800 CST 2017-12-11 05:08:44 +0800 CST

两个点 (..) 或两个破折号 (--) 作为文件和目录名称中的分隔符

  • 772

使用双点或双减号作为分隔符是个好主意吗?我正在尝试为实验科学数据找到一个好的命名约定。例如:

2017-12-11T19-45..JDoe-042..UO2(NO3)2-EtOAc_dist..150.3K..1.234mM.dat
2017-12-11T19-45--JDoe-042--UO2(NO3)2-EtOAc_dist--150.3K--1.234mM.dat

我的理由:

  1. 为了确保跨平台的兼容性,唯一合适的字符是_ - .及其组合;
  2. 在我的情况下,它们都不能单独使用:
    • _为空间预留;由于区分大小写的化学公式,我不能使用 camelCase。
    • -通常是内部实验室代码的一部分,此外,它还被用作冒号的替代品:(修改后的 ISO 8601 符号)和比率;
    • .是一个小数点。
  3. 在他们的组合中,最流行的似乎是_-_. 但是,这是 3 个字符,并且文件名已经很长(从示例中可以看出),所以如果可能的话,我想坚持使用两个字符。
  4. 从视觉上我发现很难快速区分__and _,而--vs-和.vs..对我来说很容易区分。
  5. 我没有包括逗号,(正如评论中正确建议的那样,这也是一个值得考虑的可行字符),因为我认为它很容易与一个 dot 混淆.,它已经主要用于带有 a 的数值小数点。

根据 SE 网络上的几个帖子,例如

  • 句点 (“.”) 是文件或文件夹名称中的有效字符吗?
  • 文件夹名称包含点 (.) 是不好的做法吗?带有多个点的文件名怎么样?
  • 文件名应该包含多个句点吗?

我会假设两者--都是..完全可以接受的,我正在考虑最终选择... 但是,我不确定,尤其是关于正则表达式或 python 脚本如何处理这些文件和文件夹(我对这两者的经验都很少,但我正在学习)。

不考虑专用软件的行为,您会说这些分隔符对于常见的文件系统和脚本语言通常是安全的吗?

filenames
  • 1 1 个回答
  • 3643 Views

1 个回答

  • Voted
  1. Best Answer
    B Layer
    2017-12-11T06:14:32+08:002017-12-11T06:14:32+08:00

    在 Unix/Linux 中,一个经过仔细审查和猜测的设计决策之一是对您有利的文件系统功能:除了NUL \0 (ASCII 000) 和斜杠 /(后者是为文件路径保留)。

    POSIX 兼容和/或编写良好的程序和脚本将处理这种宽容,但不幸的是,有无数的例子没有。然而,他们往往会吐槽一组非常特殊的字符,而这些字符不是点或破折号。(空格和换行符是最麻烦的两个。)事实上,点和破折号的使用非常广泛。常用工具、语言和正则表达式可以很好地处理它们……

    ...除了一个小小的例外。(当然,对吗?)我没有看到任何迹象表明您打算这样做,但应该注意:避免在名称开头使用破折号。当然,这是合法的,但是存在太多的程序会不正确地处理这些名称,从而导致它们被解释为命令行选项/标志。例如,如果一个脚本像这样将文件名传递给另一个脚本:some-script --my-dash-first-file ...那么看到类似Unknown option '--my-dash-first-file'.

    TL;DR如果您避免使用以破折号开头的名称,您提出的方案是安全的。

    额外的注意事项:虽然点本身很常见,特别是为了将文件的基本名称与其“扩展名”(例如foo.txt)分开,但成对的点通常单独出现......它们具有特殊含义:当前的父目录目录 ( ..) 或路径 ( /foo/bar/../baz) 中的前一个目录。因此,虽然这不会导致任何技术问题,但名称中的双点有点不合常规,可能会导致一些用户重复使用。


    • 10

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    JSON数组使用jq来bash变量

    • 4 个回答
  • Marko Smith

    日期可以为 GMT 时区格式化当前时间吗?[复制]

    • 2 个回答
  • Marko Smith

    bash + 通过 bash 脚本从文件中读取变量和值

    • 4 个回答
  • Marko Smith

    如何复制目录并在同一命令中重命名它?

    • 4 个回答
  • Marko Smith

    ssh 连接。X11 连接因身份验证错误而被拒绝

    • 3 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Marko Smith

    systemctl 命令在 RHEL 6 中不起作用

    • 3 个回答
  • Marko Smith

    rsync 端口 22 和 873 使用

    • 2 个回答
  • Marko Smith

    以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

    • 1 个回答
  • Marko Smith

    jq 打印子对象中所有的键和值

    • 2 个回答
  • Martin Hope
    EHerman JSON数组使用jq来bash变量 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux 日期可以为 GMT 时区格式化当前时间吗?[复制] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC 如何复制目录并在同一命令中重命名它? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve “root”用户的文件权限如何工作? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe 将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey 如何下载软件包而不是使用 apt-get 命令安装它? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao 为什么目录 /home、/usr、/var 等都具有相同的 inode 编号 (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg —list-keys 命令在将私钥导入全新安装后输出 uid [未知] 2017-11-26 18:26:02 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve