另一位用户问到了这个问题,我正在寻求澄清,因为显然在我获得 50 分之前我无法发表评论。
将所有内容(包括隐藏项目)上移一级的答案之一是:
mv /path/subfolder/{.,}* /path/
我想知道的是,能否再简单地写一下:
mv ~/{.,}* ../
???
谢谢
答案1
这两个命令是等效的*:
mv /path/subfolder/{.,}* /path/
cd /path/subfolder
mv {.,}* ..
这两个命令完成完全相同的移动操作。
* 如果/path/subfolder
是符号链接到另一个目录,并且该目录不是的直接子目录/path
,那么它们就不等效;您的文件将移动到其他地方。
解释~
含义
~
扩展为的值,$HOME
通常是/home/<my username>
。
假设你的 $HOME 是/home/myusername
,运行mv ~/{.,}* ../
将扩展为:
mv /home/myusername/{.,}* ../
(运行此命令将严重破坏您的主目录,因此不要运行您的缩短版本或我的扩展版本。)
到底是什么..
?
根据您运行该程序的目录,其实际位置..
将会改变。
- 从
/home/myusername/downloads/foo
,..
是/home/myusername/downloads
- 从
/
位置..
仍然是/
运行realpath ..
以确定的准确路径..
。
警告:有时使用符号链接目录,..
可以指真实目录的上级$PWD
目录或父目录。这完全取决于上下文。
答案2
否。~
是您的主目录。您不能用 替换任意路径~
。$(pwd)
但是,如果 已经是您要移动其内容的目录,您可以执行mv ./{.,}* ../
。