디렉토리를 변경할 때마다 현재 디렉토리를 표시하는 "cd"의 별칭은 무엇입니까?

디렉토리를 변경할 때마다 현재 디렉토리를 표시하는 "cd"의 별칭은 무엇입니까?

tcsh에서는 별명을 원하고 다른 디렉토리로 이동합니다 pwd.cd

이전에는 이를 위해 다음 별칭을 사용했지만 쉘 프롬프트도 로 변경되었습니다 [current directory]>. 프로젝트 요구로 인해 더 이상 쉘 프롬프트를 변경할 수 없지만 여전히 매번 사용하고 싶습니다 cd.

alias cd 'cd \!* ; set cwd=`pwd`;pwd;set prompt=$cwd:t\ \!\>\ '

위의 별칭을 사용하여 제거하려고 시도했지만 set prompt작동하지 않았습니다(구문을 이해하지 못합니다).

답변1

다음은 나에게 효과적이었습니다.

alias cd 'cd \!*; set cwd=`pwd`; pwd'

cd이는 세 가지 명령을 실행하는 별칭으로 대체됩니다 .

cd \!*

그러면 디렉토리가 변경됩니다.

set cwd=`pwd`

결과를 변수 pwd에 저장 하고 마지막으로cwd

pwd

현재 디렉토리를 인쇄합니다.

두 번째 명령은 프롬프트에서 필요하지 않으므로 더 이상 유용하지 않으므로 다음과 같이 단순화할 수 있습니다.

alias cd 'cd \!*; pwd'

아니면 더 나은 방법은

alias cd 'cd -p \!*'

옵션을 사용하여 -p결과 디렉터리를 인쇄합니다.

( 에서는 변수에 저장하는 대신 tcsh프롬프트에서 또는 를 지정하여 현재 작업 디렉터리를 가져올 수 있습니다 . 모든 경우에 전체 경로를 제공하고 가능한 경우 단순화를 사용하세요.)%/%~%/%~~

답변2

당신 은 tcsh특별을 정의할 수 있습니다cwdcmd 현재 작업 디렉터리가 변경될 때마다 호출되는 별칭:

alias cwdcmd pwd

zsh이 개념을 복제했습니다(후크 사용).기능바꾸다별명( tcsh기능 없음)):

chpwd() pwd

어쨌든, 현재 작업 디렉토리의 후행 부분을 프롬프트에 표시하려면 그런 것이 필요하지 않습니다.

set prompt='%c !> '

충분할 것입니다. 또한 변수는 자체적으로 tcsh설정 되므로 $cwd별칭에서 수동으로 설정할 필요가 없습니다 cd.

답변3

또 다른 옵션은 를 사용하는 것인데 rprompt, 이는 프롬프트와 완전히 동일하지만옳은옆:

예를 들어 set rprompt="%~":

% cd /usr/local/bin/                                       ~
% echo Hello                                               /usr/local/bin
Hello
%                                                          /usr/local/bin

prompt여기 에서 별칭을 사용할 수도 있습니다 rprompt.

이것이 일반 프롬프트를 변경하지 못하게 하는 "프로젝트 요구 사항"을 충족하는지 모르겠지만 어쩌면 옵션일 수도 있습니다.

관련 정보