我希望能够更换
cp x.x ~/some/long/directory/that/is/deeply/nested/
和
cp x.x s1
其中 s1 是指向的别名/some/long/directory/that/is/deeply/nested/
然而目的地经常改变。
今天是
/some/long/directory/that/is/deeply/nested/
第二天是
/some/long/directory/less/deep
第二天是
/some/other/directory/less/deep
鉴于它一直在变化,是否存在别名(或更可能的函数?正如我所想的那样),有没有办法可以在目标为“解释”别名的情况下执行 cp
就像是
cp x.x `s`
“源”文件也有许多不同的值。我不想要一个仅指向一个(或几个列表)位置或用于 1 个(或几个列表)源文件的别名。我希望它是别名当时指向的任何内容,并且在调用它时将提供文件名。
源和目的地可以是数千个值中的任何一个。
答案1
外壳变量
您可以通过添加要放入s1
变量的目录来完成此操作,如下所示:
s1=/some/long/directory/that/is/deeply/nested/
然后您可以像这样访问这些:
$ cp x.x $s1
符号链接
您可以在主目录中维护一个仅指向今天的长目录的链接。
$ ln /some/long/directory/that/is/deeply/nested/ $HOME/shortlink
$ cp x.x $HOME/shortlink
目录书签工具
看看这个问答题:终端中的快速目录导航。工具如自动跳转或者xd - 超快速目录更改器,也可用于为常用目录添加“书签”,以便您可以轻松更改它们,而无需键入长路径。
参考
答案2
怎么样:
#!/bin/bash
mdhf="/home/MichaelDurrant/linq
params="$@"
[[ $params = *-d* ]] && nufile=${params##*\-f}
[[ $nufile ]] && [ -L "$mdhf" ] && rm $mdhf
[[ $nufile ]] && ln -s $nufile $mdhf
for i in "$@"; do
[[ $i = '-d' ]] && break
cp -v $i $mdhf
done
用法是mdcp filename -d directory
.如果您要更改当前的软链接目录,则只需使用 -d 参数。