如何对文件夹中的文件进行符号链接

如何对文件夹中的文件进行符号链接

迭代文件夹中的文件并创建符号链接:

我当前的脚本正在尝试迭代文件夹中的文件,并创建到另一个文件夹的符号链接:

#!/bin/bash
############################
# .make.sh
# This script creates symlinks from the home directory to any desired dotfiles in ~/dotfiles
############################

########## Variables

dir=~/dotfiles                    # dotfiles directory
config_files=$dir/*

# move any existing home files in homedir to dotfiles_old directory, then create symlinks
for config_file in $config_files; do
  ln -s $dir/$config_file ~/.$config_file
done

现在,如果在我的 ~/dotfiles 中我有多个文件,例如,我有包含文件的文件夹。如何确保创建文件夹并进行符号链接?

因此,例如,在我的~/dotfilesI 有:

~/dotfiles/.config/fish/config.fish~/dotfiles/.config/fish/conf.d/config.fish

我应该以符号链接结束

~/.config/fish/config.fish~/.config/fish/conf.d/config.fish

我怎样才能做到这一点?

答案1

也许你可以使用cp来代替ln.从man 1 cp:

-R
递归复制目录

-s
建立符号链接而不是复制

笔记:

  • -RPOSIX 要求但-s不是(您cp可能支持也可能不支持)。
  • 如果您以这种方式“复制”文件,-R不会有什么坏处。
  • cp -Rs …将复制带有文件符号链接的目录结构(而不​​是目录的符号链接);看来这就是你想要的。
  • 在我的 Kubuntu 中,创建相对符号链接cp仅限于当前目录,因此对于-R.使用要“复制”的目录的完整路径。
  • 研究-p选项cp.我猜你想用它。

关于您的脚本的一些担忧:

  • 这条评论是明智的;引用变量。
  • *不会返回名称以点 ( .) 开头的文件或目录。

相关内容