Bash脚本中mv命令移动Kali主题文件夹时出现异常问题
解决mv命令移动目录时内容被直接提取的问题
你的问题出在目标目录未提前创建。脚本里只创建了/tmp/MyLinux/sort,但没有创建/tmp/MyLinux/sort/themes/这个子目录。
当执行第一条mv命令时:
mv /tmp/MyLinux/download/Kali-Theme/share/themes/Kali-Dark /tmp/MyLinux/sort/themes/
由于/tmp/MyLinux/sort/themes/不存在,mv会把源目录Kali-Dark直接重命名为themes——也就是最终/tmp/MyLinux/sort/themes实际上就是原来的Kali-Dark目录,里面自然是gtk-2.0、gnome-shell这些内容。
接着执行第二条mv命令时,/tmp/MyLinux/sort/themes/已经是一个存在的目录,所以mv会正常把Kali-Light目录移动到这个目录下,这就出现了你看到的结果:themes目录里既有Kali-Dark的内容,又有完整的Kali-Light文件夹。
解决方法
在执行mv命令前,先创建好目标子目录/tmp/MyLinux/sort/themes/,修改后的脚本如下:
#!/usr/bin/env bash git clone https://gitlab.com/kalilinux/packages/kali-themes /tmp/MyLinux/download/Kali-Theme mkdir -p /tmp/MyLinux/sort/themes/ mv /tmp/MyLinux/download/Kali-Theme/share/themes/Kali-Dark /tmp/MyLinux/sort/themes/ mv /tmp/MyLinux/download/Kali-Theme/share/themes/Kali-Light /tmp/MyLinux/sort/themes/
用mkdir -p的好处是即使上级目录已经存在也不会报错,同时递归创建所有需要的子目录。
执行修改后的脚本后,/tmp/MyLinux/sort/themes/下就会有Kali-Dark和Kali-Light两个完整的目录,每个目录里包含对应的gtk-2.0、gtk-3.0等子目录。
内容的提问来源于stack exchange,提问作者user22281237
相关产品推荐
相关产品推荐

