我知道这个命令的每个部分。
sudo mv home/* *
sudo
:超级用户做,用根权限执行.mv
:移动一个文件或目录。home/*
:mv命令的参数。它指示主目录的内容。星号*
是一个通配符,按字典顺序扩展到当前目录中的文件列表。下一个参数是“命运”文件夹。但是,我指定一个星号作为命运目录,如果我执行命令,文件夹将完全消失。那么,在这种情况下,*
是什么呢?
发布于 2018-05-22 14:23:39
这都取决于外壳的球状模式扩展到什么程度。
它做了三件事之一:
*
扩展为名称列表,而该列表中的最后一项是目录的名称,则该命令将home/*
扩展到的所有内容以及*
扩展到的所有内容(但不是最后一个目录名)移动到该目录中。与home/*
匹配的文件和目录将在目标目录中的home
目录旁边找到,如果home/*
扩展到任何内容,并且目标目录还没有包含home
目录的话。*
扩展为名称列表,而该列表中的最后一项是某个非目录的名称,则该命令将产生一个错误。*
根本不展开(因为当前目录是空的),那么就会产生一个错误。如果使用GNU中的mv
并且最后一个*
匹配一个或多个以破折号开头的名称,这可能会根据mv
将名称解释为哪些选项来更改命令的操作。
发布于 2018-05-22 14:37:13
当我自己运行它时,它最终在我的目标文件夹中创建了一个名为*
的文件夹,并且还删除了我正在抓取的源文件。经过几次测试后,“*
不是一个目录”的预期行为返回,也没有创建一个名为*
的新目录。
我认为这更符合被问到的问题,因为他表示他的文件消失了,echo *
返回了*
。
https://unix.stackexchange.com/questions/445353
复制相似问题