在 RHEL 9 中,
执行该命令
cp -a /somedir/. .
将“somedir”目录(而不是目录本身)中的所有文件复制到当前目录。但该命令
mv /somedir/. .
会产生错误“无法移动:设备或资源忙”。命令
mv /somedir/ .
和mv /somedir .
结果将目录“somedir”移动到当前目录。
问题;
为什么第二个命令会出错?
在不使用的情况下,
*
有没有办法使用命令仅将目录内容somedir
而不是目录本身移动到当前目录mv
?在 Linux 特别是 RHEL 和类似 RHEL 的发行版中
/path/to/file/
,/path/to/file/.
、 和之间有什么区别?/path/to/file
答案1
以 结尾的路径/
与 相同,/.
因此如果您使用,第一个和第二个都会失败,mv
因为您无法移动(或以大多数方式修改)目录.
。第一个不会给出此错误,因为-a
选项cp
告诉它递归复制,所以它不会尝试修改目录,只是复制其中的内容。
如果要移动目录,请不要包含尾随/
.
您可以轻松移动目录的内容,而*
无需列出每个文件名。当然,由于 shell*
无论如何都会扩展到每个文件名,这将是同一件事,所以我不确定避免*
.
您还可以使用文件名补全来扩展命令行上的文件名——在 bash 中,一种方法是使用esc {