Gen*_*zzi 20 command mv syntax
我正在从surrey.ac.uk的UNIX 初学者教程中学习 unix 命令,在那里我发现了一种移动文件的奇怪方法。特别是,我在主目录中有文件夹 unixstuff,在 unixstuff 中有文件夹备份和文件 Caiti.txt 和 Caiti.bak。
根据上面的链接,要将 Caiti.bak 文件从 unixstuff 移动到备份,我必须确保当前目录是 unixstuff 并且我必须运行以下命令:
mv Caiti.bak backups/.
Run Code Online (Sandbox Code Playgroud)
请你解释一下这些/.字符的含义吗?点表示当前目录(在本例中为 unixstuff)。如果我运行命令:
mv Caiti.bak backups
Run Code Online (Sandbox Code Playgroud)
无论如何它都有效。
A.B*_*A.B 46
这会强制目标是一个已经存在的目录,或者命令失败无效并用作故障安全。
.典型的 Unix/类 Unix 文件系统中的每个目录都包括两个特殊目录:一个引用它所在的目录:另一个引用它所.在的父目录:(..允许在目录层次结构中向后移动)。它们与它们被发现的地方有关。所以目录.里面有一个名为backups references的目录backups。换句话说,当有一个名为 的目录时backups,backups/.相当于backups.
如果目录存在,这两个命令将具有相同的效果:当目标是目录mv时,将源移动到该目录。这就是预期的结果。
如果目标backups是文件而不是目录:
Not a directoryCaiti.bak和覆盖backups如果目标不存在:
No such file or directoryCaiti.bak为 file backups,导致前一种情况并且下次发生时可能会丢失数据。附加/.到应该存在的目录目标并在出现错误时中止脚本是一种很好的做法。
当仅/在源是文件而不是目录时追加时,所有这些情况都将起作用。
如果我们不能假设,这个例子中的源是一个目录:
mv somedirectory targetnothere/
Run Code Online (Sandbox Code Playgroud)
不会失败(并且某个目录将被重命名,而不是被放入targetnothere或中止)。额外的.也会使这个案例失败:
$ mv somedirectory targetnothere/.
mv: cannot move 'somedirectory' to 'targetnothere/.': No such file or directory
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |