디렉터리 변경을 위한 명령줄 단축키

디렉터리 변경을 위한 명령줄 단축키

여러 하드 드라이브에 걸쳐 있는 디렉토리를 쉽게 탐색할 수 있는 방법을 찾고 있으며 터미널에 바로 가기와 동일한 기능을 설정하고 싶습니다.

Windows에서는 mklink해당 디렉터리로 이동하기 위한 심볼릭 링크를 생성하거나 현재 파일 경로 끝에 위치를 추가하는 연결을 생성하여 이 작업을 수행합니다.

이는 실제로 탐색에 관한 것이므로 링크 등이 될 필요는 없습니다. 아마도 cd $myDir(바람직하게는) 일부 환경 변수를 설정할 수 있을 것입니다.

이런 일이 가능합니까, 아니면 카탈로그를 더 잘 배워야 합니까?

답변1

파일 시스템 레이아웃에 익숙해지는 것은 유능한 사용자가 되기 위한 일부입니다. 이 목표를 위해 소비하는 시간은 낭비되는 시간이 아닙니다. 그러나 그렇게 하면 파일 시스템을 더 쉽게 이동할 수 있습니다. Linux/UNIX에서는 각 "드라이브"(구성에 따라 물리적 또는 논리적)가 표시되는 Windows와 달리 스토리지를 구성하는 장치 수에 관계없이 파일 시스템이 단일 트리로 나타납니다. 기본 구성은 독립된 트리로 구성됩니다.

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 물론 각각 다른 디렉토리를 가리키는 여러 개의 쉘 변수를 설정할 수 있습니다. 명령을 실행하면 cd $SomeDir셸이 변수를 확장 $SomeDir하고 명령줄에서 해당 변수를 대체하여 최종 실행 시 cd변수에 저장된 디렉터리 이름을 받게 됩니다. 이것은 아마도 가장 간단한 방법일 것입니다. 쉘 변수를 절대 경로로 채우면 파일 시스템의 어느 곳에서나 작동할 것입니다.

대상 디렉토리에 대한 기호 링크를 사용할 수도 있습니다(대부분의 UNIX는 디렉토리에 대한 하드 링크를 지원하지 않습니다). 그러나 이것이 작동하려면 커널이 심볼릭 링크를 확인할 수 있도록 경로 매개변수에 충분한 정보를 제공해야 합니다. 즉, 심볼릭 링크에 대한 절대 경로 또는 커널이 링크를 따라갈 수 있도록 링크를 찾을 수 있도록 충분한 상대 경로를 제공해야 합니다.

쉘에 따라 사용 가능하거나 사용 불가능할 수 있는 또 다른 방법은 쉘의 cdpath기능을 사용하는 것입니다. 이는 bash, zshtcsh기타 의심할 여지 없이 지원됩니다. 이 기술을 사용하면 CDPATH를 실행할 때 콜론으로 구분된 디렉토리 이름 목록으로 환경 변수를 설정할 수 있습니다 cd. 디렉토리 중 하나 $CDPATH에 전달된 하위 디렉토리와 이름이 일치하는 하위 디렉토리가 포함되어 포함되어 있고 시스템에 디렉토리가 있는 경우 명령을 실행하면 내용을 찾고 호출 하위 디렉토리를 찾고 존재 하는 경우 현재 작업 디렉토리를 해당 디렉토리로 변경합니다 . 쉘은 지정된 순서대로 디렉토리를 검색 하므로 인수로 전달한 하위 디렉토리가 포함된 디렉토리가 여러 개 있는 경우 ,cdCDPATH/usr/local/usr/local/wwwcd www$CDPATH/usr/localwww/usr/local/www$CDPATH$CDPATHcd첫 번째 게임에서 승리하세요.. 이로 인해 나는 너무 자주 문제에 부딪히게 되어 더 이상 우리가 아닙니다 cdpath.

답변2

다음과 같은 별칭을 설정할 수 있습니다.

$ alias abc="cd /home/user/Desktop/Folder"

이러한 내용을 장기간 저장하려면 .bashrc 파일에 추가하세요.

탐색만 찾고 있다면 이것이 작동할 것입니다. 그러나 스크립트를 작성하려는 경우 위의 "abc"는 아무 소용이 없습니다.

나는 개인적으로 디렉토리 구조의 [관련 부분]을 배우고 기억하는 것이 장기적으로 쉬울 것이라고 생각합니다. 별칭이 너무 많으면 기억할 것이 더 많아지고 적시에 사용해야 하는 여러 컴퓨터에서는 작동하지 않습니다.

답변3

제가 추천하고 싶은 것은유틸리티 -https://github.com/rupa/z (이것은 다른 이름의 영향을 받습니다.제이).

무엇이것이 하는 일은 쉘의 cd기능을 재정의하여 방문하는 모든 디렉터리를 기록하는 부작용을 추가하는 것뿐입니다. 이러한 디렉터리는 ~/.z"빈도"에 따라 내림차순으로 파일에 저장되므로, 최근에 더 자주 액세스한 경우 해당 디렉터리가 더 높게 표시됩니다.

그런 다음 cd시간이 지남에 따라 이 색인을 구축한 후 새 명령을 사용하여 가장 높은 위치에 나타나는 하위 문자열이 포함된 디렉터리 z $DIR로 이동할 수 있습니다 .$DIR~/.z

답변4

가지다 $CDPATH:

mkdir -p ./1/2/3/4/dir ./3/2/1/dir ./12/dir
CDPATH=":$HOME/1/2/3/4:$HOME/3/2/1:$HOME/12:"
cd dir

자주 방문하는 중앙 경로 목록을 해당 값에 넣으면 cd전체 경로를 지정하지 않고도 해당 하위 경로에 액세스할 수 있습니다. cd찾은 첫 번째 일치 항목에 당신을 배치합니다. stdout표시되면 위치가 인쇄됩니다.

산출:

/home/mikeserv/1/2/3/4/dir

값은 :콜론으로 구분됩니다 $PATH. 따라서 디렉토리 이름이 이상하면 문제가 발생할 수 있습니다. 하지만 그것은 매우 유용할 수 있습니다. 이것은POSIX 지정- 모든 최신 쉘에서 작동해야 하며 다음을 기대합니다.

 cd ..; rm -rf dir; cd dir

산출:

/home/mikeserv/3/2/1/dir

:그러나 콜론을 사용하여 값을 여는 것을 확인하세요 . 대부분의 쉘에서 이를 사용하면 선행 없이 현재 디렉토리의 하위 디렉토리에 액세스 $CDPATH할 수 있습니다 . 이것이 선행하는 빈 필드가 나타내는 것입니다.cd./:

그렇기 때문에 당신이 가고 싶지 않더라도 떠나보내는 것에 대해 걱정할 필요가 없습니다.하다정규화된 경로 사용(기본적으로 cda 또는 a로 .시작하는 모든 매개변수 /) cd전혀 설명하지 마세요.

관련 정보