現在のディレクトリをこのディレクトリに移動して変更する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

関連情報