Bash 命令将当前目录移动并更改为该目录

Bash 命令将当前目录移动并更改为该目录

我需要一个 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

相关内容