cd를 사용하여 파일의 상위 디렉토리로 이동 하시겠습니까?


9

나는 나를 위해 약간의 일을하기 위해 .sh를 작성하고 있지만 이제는 파일 /path/to/file.end가있는 디렉토리로 cd 해야하는 시점에 있습니다. 터미널은 허용하지 않습니다

cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory

슬프게도 내가 아는 해결 방법이 없으므로 도움이된다면 좋을 것입니다!


4
cd /path/to? 그러면 디렉토리가 파일 file.end이 있는 디렉토리로 변경 됩니다.
Alaa Ali

1
아니요, 파일은 가변적이며 파일 경로를 입력하고 (터미널에 놓기) 파일이있는 폴더로 이동합니다.
Azsgy

답변:


10

을 입력하십시오 cd $( dirname /path/to/file.end). 당신을 데려 갈 것 /path/to입니다.

설명:

  • dirname(당신이 얻을 것 파일 이름없이 파일의 전체 경로를 반환 basename) - 즉, dirname /etc/apt/apt.conf.d/99update-notifier수익을/etc/apt/apt.conf.d
  • 표현식 $(anything)은 괄호 안의 명령 결과로 대체됩니다. 따라서 다음 cd $( dirname /etc/apt/apt.conf.d/99update-notifier)과 같이 실행됩니다cd /etc/apt/apt.conf.d

같은 것에 대한 또 다른 (그러나 오래되고 낙담 한) 표기법은

cd `dirname /path/to/file.end` 

8

cd파일에 넣을 수 없습니다 . 주어진 정규화 된 파일 경로의 경로에 자동으로 들어가는 (명령 줄) 함수 는 다음과 같습니다 cd.

function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }

이 권리를 얻었습니까? : function fcd () {[-f $ 1] && {cd $ (/ file.end $ 1); } || {cd $ 1; } pwd} 응답은 다음과 같습니다. bash : 예기치 않은 토큰`pwd '근처의 구문 오류 다음과 같은 오류가 발생합니다. (
Azsgy

2
@Atsch는 전에 세미콜론이 필요하고 pwd한 줄에 함수를 정의하는 경우에는 세미콜론이 필요합니다 pwd.
glenn jackman

@glennjackman 함수는 dir의 출력이나 변경없이 그냥 종료됩니다 :(
Azsgy

함수를 실행 한 다음 echo $?종료 상태는 무엇입니까? 를 입력하십시오 .
glenn jackman

나는 나 자신을 의심하지 않아야했다. 내가 그것을 발견했을 때 대안은 나에게 더 좋아 보였다
Rinzwind

1

파일 이름에 "/ .."를 추가하면 올바른 디렉토리로 이동합니다 (예 :) cd /path/to/file.end/... 어쨌든 Cygwin에서 작동합니다.


4
bash는 작동하지 않습니다) touch test && cd /home/test/test/..말한다bash: cd: /home/test/test/..: No such file or directory
Rinzwind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.