CD LS 자동 생성

CD LS 자동 생성

나는 종종 다음과 같은 일을 한다고 생각합니다.

%> cd bla/bla
%> ls

cd자동으로 실행되도록 하고 싶습니다 ls.

한동안 이것저것 만져봤지만 .bashrc어떻게 구현해야 할지 모르겠습니다.

답변1

이 작업을 수행하기 위해 함수를 사용할 수 있습니다.

$ cdls() { cd "$@" && ls; }

&&" cd디렉토리로 이동하고 성공하면(예: 디렉토리가 존재하는 경우) 실행 "을 의미합니다 ls. 와 같은 &&두 명령 사이에는 세미콜론 연산자보다 연산자를 사용하는 것이 좋습니다 . 두 번째 명령은 유효한지 여부에 관계없이 실행됩니다 . 이것이 실패 하면 현재 디렉토리의 내용이 인쇄되어 사용자에게 혼란을 줄 수 있습니다. 가장 좋은 방법은 대신 를 사용하는 것입니다 .;{ cd "$@"; ls; }lscdcdls&&;

$ cdls /var/log
CDIS.custom     fsck_hfs.log    monthly.out     system.log
$ pwd
/var/log

일반적으로 이미 존재하는 명령의 이름을 바꾸는 것은 좋지 않습니다 cd. 특히 와 같은 명령의 경우에는 다른 이름으로 새 명령을 생성하십시오. cd동일한 이름의 함수나 별칭으로 이를 재정의 하면 cd100,000개의 파일이 있는 디렉터리에 들어가면 어떻게 될까요? 많은 유틸리티가 사용되며 cd이러한 비정상적인 동작으로 인해 혼란스러울 수 있습니다. 공유 계정을 사용하는 경우(예: root다른 시스템 관리자와 작업하는 경우) 환경이 예상한 것과 다르기 때문에 기존 명령을 바꾸는 것은 매우 위험할 수 있습니다.

답변2

내 .bashrc에 이것이 있고 잘 작동합니다.

function cd {
    builtin cd "$@" && ls -F
    }

내 .bashrc의 초기 부분에는 다음이 있습니다. 해당 줄 이후의 모든 내용은 대화형 세션에만 적용되므로 스크립트에서 동작하는 방식에는 [ -z "$PS1" ] && return영향을 미치지 않습니다 .cd

답변3

주제에서 벗어났습니다. 질문에 /bash 태그가 지정되었지만 bash를 언급하지 않은 일부 질문으로 인해 이 질문의 중복으로 종료되었기 때문입니다.

zsh 사용:

chpwd() ls

chpwd()이 함수는 현재 디렉토리가 변경될 때마다(cd, pushd, popd... 이 함수 참조 ) autocdzsh에 의해 호출됩니다 . tcsh는 비슷한 기능을 가지고 있으며 아마도 zsh의 소스일 것입니다.

최신 버전에서는 zsh다른 후크 기능과 마찬가지로 다음을 수행할 수 있습니다.

my_chpwd_hook() ls
chpwd_functions+=( my_chpwd_hook )

현재 작업 디렉터리가 변경될 때 귀하 또는 귀하가 사용하는 일부 타사 플러그인이 별도의 독립적인 작업을 수행해야 하는 경우 이 접근 방식이 더 좋습니다.

답변4

.bashrc 파일에 별칭을 추가해 보는 것은 어떨까요?

그것은 다음과 같습니다:

alias cdls='cd "$@" && ls'

관련 정보