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 / 问题 / 772032
Accepted
jsx97
jsx97
Asked: 2024-03-11 02:25:58 +0800 CST2024-03-11 02:25:58 +0800 CST 2024-03-11 02:25:58 +0800 CST

cp、尾部斜杠以及复制到同一目录或复制到另一个目录

  • 772

要将一个目录复制到另一个目录,第一个目录应该不带尾部斜杠:

# example 1
# this command will copy dir1 to dir2
# (dir2 is preexisting)
cp -Rip dir1 dir2/

否则,该命令将复制目录内容而不是目录本身:

# example 2
# this command will copy dir1 contents to dir2
# (dir2 is preexisting)
cp -Rip dir1/ dir2/

dir1我确实理解和这里之间的区别dir1/,并且这两个命令的行为方式之间的区别不会让我感到困惑。

但是,如果要将目录复制到当前所在的同一目录而不是另一个目录,则尾部斜杠不会产生任何区别。为什么?

# example 3
# any of these commands will make a dir1 copy
# (dir1-copy isn't preexisting)
cp -Rip dir1 dir1-copy/
cp -Rip dir1/ dir1-copy/

还有另一个密切相关的问题。mv dir1/ dir2/为什么how和work没有区别mv dir1 dir2/?换句话说,为什么源目录末尾的尾部斜杠mv遵循示例三的逻辑cp,而不是示例一和示例二的逻辑?

macOS 14.3.1、zsh 5.9 (x86_64-apple-darwin23.0)

freebsd
  • 1 1 个回答
  • 89 Views

1 个回答

  • Voted
  1. Best Answer
    Gilles 'SO- stop being evil'
    2024-03-15T07:37:47+08:002024-03-15T07:37:47+08:00

    cp -R dir1 dir2和之间的行为差​​异是 FreeBSD 5.4 版本cp -R dir1/ dir2中添加的一项功能。至少,当时在手册中添加了以下句子来描述该选项:-R

    如果source_file以 / 结尾,则复制目录的内容而不是目录本身。

    这种行为可能比较旧,5.4 只是填补了文档中的一个遗漏。5.0、5.1、5.2、5.3或5.4发行说明中没有任何相关内容。我没有去源码潜水。

    现代版本的 FreeBSD 和具有 FreeBSD 命令行实用程序的 macOS 保留了这种行为。其他系统(GNU、BusyBox、OpenBSD、NetBSD 或任何 POSIX 兼容的系统)没有此行为:cp -R dir1/ dir2并且cp -R dir1 dir2具有完全相同的行为(除非dir1是符号链接:dir1/导致链接被跟踪)。

    FreeBSD 的行为可能受到 rsync 的启发,它也有同样的区别。我确实觉得很奇怪,他们做了一个向后不兼容的改变,偏离了

    但是,如果要将目录复制到当前所在的同一目录而不是另一个目录,则尾部斜杠不会产生任何区别。为什么?

    这是一个奇怪的设计决定。或者也许这不是一个设计决策,而是一个实现错误(解析源路径并确定尾部斜杠后面的部分是路径组件),他们决定调用一个功能。使用 rsync,即使目标目录不存在,尾部斜杠也会保持其行为。

    mv dir1/ dir2/为什么how和work没有区别mv dir1 dir2/?

    不应该有什么区别(假设dir1不是符号链接),所以这只是正常情况。

    • 4

相关问题

  • FreeBSD w/ 两个网络接口和不同的域

  • Freebsd 11.1 问题与 gnu m4 eval 测试失败

  • Freebsd setfacl

  • ps -vxa 不对内存进行排序

  • FreeBSD 的 sh:列出函数

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +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