CD 마지막 폴더 tcsh

CD 마지막 폴더 tcsh

bash의 마지막 디렉토리로 cd를 시도하십시오.

내가 이것을 시도하면 :

cd $(ls -l | tail -l)

결과는 다음과 같습니다.

Illegal variable name.

나는 무엇을 해야할지 모르겠다

답변1

$(...)Korn/POSIX 쉘 구문입니다. (t) csh의 명령 대체는 를 통해 이루어집니다 `...`.

에서는 tcsh다음을 수행할 수 있습니다.

set dirs = (./*/); cd $dirs[$#dirs]:q

cd현재 디렉토리의 숨겨지지 않은 디렉토리의 어휘 목록에 마지막 디렉토리(또는 디렉토리에 대한 심볼릭 링크)를 입력합니다 .

이것은 다음보다 낫습니다:

cd "`ls | tail -n 1`"

파일 이름에 개행 문자가 포함되어 있거나 다음으로 시작 -하거나 +숫자가 뒤에 오는 경우 또는 현재 디렉터리의 마지막 파일이 디렉터리가 아닌 경우에는 이 방법이 작동하지 않습니다.

cd $(ls | tail -1)파일 이름에 공백, 탭 또는 와일드카드가 포함되어 있으면 Ksh 구문도 실패하므로 Ksh 구문이 더욱 악화됩니다.

순서는 어휘 순서입니다 2.뒤쪽에 10. GNU를 통해 구현된 숫자 정렬의 경우 옵션( ) 을 ls사용할 수 있습니다 .-vcd "`ls -v | tail -n 1`"

zsh셸을 사용하면 다음을 수행할 수 있습니다.

cd ./*(/[-1])

또는 디렉토리에 대한 기호 링크도 고려하십시오.

cd ./*(-/[-1])

파일을 숫자순으로 정렬하려면:

cd ./*(n-/[-1])

답변2

오류의 원인은 얻는 문자열이 디렉터리 이름이 아니라 drwxrwxr-x. 3 alessiosavi alessiosavi 4096 Sep 10 09:51 workplace-tmp대상 이름이 아닌 디렉터리에 대한 일부 정보가 포함된 문자열이라는 것입니다.workplace-tmp

이 작업을 수행하려면 다음 단계를 실행할 수 있습니다.
1. 마지막 디렉터리를 변수에 저장합니다.
2. 변수가 디렉터리인지 확인합니다.
3. 디렉터리로 cd합니다.

file=$(ls -l  | tail -n1 | awk '{print $9}') ; if [ -d "$file" ];then cd $file; else echo "$file not a directory" ; fi

"bash입니다. 한 줄만 있으면 됩니다."

관련 정보