我最近在文件和程序中乱逛并为我的研究做了大量的工作,但是我的bash是如此生疏,我无法想到我将如何做到这一点。例如:
jt ~ $ cp foo.txt arbitrary/folder/destination
jt ~ $ cd arbitrary/folder/destination
jt ~/arbitrary/folder/destination $ //Some command here
这样我就可以成为我复制它的地方。有什么方法可以用别名中的bash正则表达式(或者可能是simipler)来做这个,所以我可以做到
jt ~ $ magic foo.txt arbitrary/folder/destination
jt ~/arbitrary/folder/destination $ ls
foo.txt
这对我很有帮助,我可以学习一些bash
答案 0 :(得分:5)
使用功能。您可以在.bashrc
:
cpd() {
cp -- "$1" "$2" || return
if [[ -d "$2" ]]; then
cd -- "$2"
else
case $2 in
?*/*) cd -- "${2%/*}" ;;
/*) cd / ;;
esac
fi
}
...被调用为......
cpd magic.txt arbitrary/directory/destination
或
cpd magic.txt arbitrary/directory/destination/filename.txt
一项功能是必要的,因为替代方案不会起作用:
答案 1 :(得分:2)
@ Charles脚本的较慢(但较短)的变体
cpd() {
cp -- "$1" "$2" && [[ -d "$2" ]] && cd -- "$2" || cd -- "$(dirname "$2")"
}