bash - 如何根据文件自动创建符号链接?
问题描述
我有一个包含多行源和目标的文本文件。
例子:
"/home/desktop/aaa t" "/home/desktop/bbb"
"/home/desktop/ee e" "/home/desktop/aa/rr r"
我试过这个:
cat ../symlinks.txt | xargs -i{} -d\n ln -s {}
但这似乎被打破了,而且ln
似乎不喜欢那样。
我需要创建很多从文件到目标路径的符号链接,这些符号链接到源。使用 bash 我怎么能做到这一点?这些路径目前都用引号引起来,并且是绝对路径,因为ln
似乎无法采用相对路径。
解决方案
不使用“-I”会将整个输入行作为单个参数传递,而是考虑使用“-L1”,它将使用xargs
支持引号和反斜杠的默认分词。
xargs -L1 ln -s < ../symlinks.txt
来自xargs
男人:
... xargs 从标准输入中读取项目,由空格(可以用双引号或单引号或反斜杠保护)或换行符分隔...
关于相对路径的注意事项:没有理由ln
不适用于相对符号链接。尝试以下
echo '"a b" c' | xargs -L1 ln -s
这将创建一个符号链接“c”到当前文件夹中的(不存在的)文件“a b”。
推荐阅读
- apache-camel - Apache-Camel 多个 pollenrich() 和移动参数错误
- angular - Angular Google Maps - 折线未正确绘制
- html - 将 vuejs 转换组应用于 Bootstrap 网格
- django - 来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:348:导致启动容器进程 - 找不到可执行文件
- powerbi - 按行缺少条件格式的解决方案?
- snakemake - 在 Snakemake 上运行单个作业/规则的并行实例
- javascript - Javascript/jquery ajax 请求
- python - python自动统计线性回归
- c# - 为什么 Grid CurrentRow.index 不包含网格线选择?
- amazon-cloudformation - 将 CommaDelimitedList of Roles 转换为 Cloudformation 中的 Arns 列表