我需要一个 bash 命令将目录移动到其他位置并将当前目录更改为它。简单的事情就像mvcd
我尝试过
mvcd () {
mv "$1" "$2"
cd "$2"
}
但是MV:
rename samples-folder to /Users/user/work/samples-folder: No such file or directory
答案1
你的命令应该可以正常工作。我猜你的目标目录/Users/user/work/
不存在。
但是,您的脚本可以增强:
- 接受任意数量的
mv
参数,设置TARGET
为最后一个参数 -->${@: -1}
。 - 解析参数并评估
-t TARGET
格式,覆盖TARGET
. - 如果
TARGET
是文件名,则脚本应cd
改为其路径 (${TARGET%/*}
)。
mvcd() {
mv "$@" || return 1
TARGET="${@: -1}"
while [[ $# -gt 0 ]]; do
case $1 in
-t|--target-directory)
TARGET="$2"
shift 2
;;
--)
break
;;
*)
shift
;;
esac
done
if [ -d "$TARGET" ]; then
cd "$TARGET"
elif [ -f "$TARGET" ]; then
cd "${TARGET%/*}"
else
printf 'ERROR: %s does not exist\n' "$TARGET"
fi
}
我猜你需要bash
版本> 。4.1