我正在进行文件移动操作,涉及IT技术。
mv /source /dest &
mv /source/* /dest/dest/ &
...
...
然后我变得大意了
mv /source/filena* /dest/dest/ *
哦,天啊!^c^c^c^c
[终端命令没有响应]
这里到底发生了什么?
如果我在命令的末尾放一个*
(星号)而不是一个&
(和号),会发生什么?
Shell会展开通配符*
,而mv
命令只看到通配符展开后的结果,无法直接识别通配符。
通配符*
按字典序扩展为当前目录下的文件列表。如果最后一个文件是目录,则所有前面的文件(/source.filenafoo
、/source/filenabar
、/dest/dest
、hello
)都会被移动到该子目录中。如果最后一个文件不是目录,则mv
命令会报错“目标a.png
不是目录”(或类似的提示信息)。
更多详细示例请参见What does mv ./*
without specifying destination do?。
mv /source/filena* /dest/dest/ *
中的 *
将被当前目录中每个文件和文件夹的名称(除了以点开头的文件)替换,而列表中最后一个名称就是 mv
要尝试放置所有内容的位置。请注意保留 HTML 标签。
alias mv='mv -i'
确保在覆盖文件之前必须确认。 - SheetJS