두 단계를 대체하는 Bash 스크립트: cd ./some_dir, ls -al?

두 단계를 대체하는 Bash 스크립트: cd ./some_dir, ls -al?

대상 디렉토리로 변경하고 새 디렉토리의 내용을 나열하는 bash scipt를 한 단계로 작성하고 싶습니다. 이는 내가 자주 연속해서 사용하는 두 가지 명령을 대체합니다.

  • CD ./some_directory
  • ls-알

스크립트를 실행한 후 현재 디렉토리가 변경되고 ls -al이 디렉토리 목록을 표시합니다.

cdl ./some_directory

가능합니까?

답변1

스크립트가 새 쉘에서 실행되고 종료 스크립트가 쉘을 종료하고 디렉토리 변경을 "잊기" 때문에 쉘 스크립트로는 이 작업을 수행할 수 없습니다. 바라보다현재 디렉터리를 변경하는 스크립트(cd, pwd)예를 들어(사이트 어딘가에 더 자세한 답변이 있을 수 있습니다).

대신 함수를 사용해야 합니다.

cd1() {
    cd "$@"
    ls -al
}

답변2

다른 옵션(.bashrc에 있음):

PROMPT_COMMAND='if [[ "$PWD" != "$_promptPWD" ]]; then ls -al; _promptPWD=$PWD; fi'
_promptPWD=$PWD

ls디렉터리를 변경하면 bash의 PROMPT_COMMAND 함수에 연결되어 실행될 수 있습니다. 약점은 다음과 같습니다.

  • 기존 PROMPT_COMMAND(있는 경우)에 패치해야 합니다.
  • 다른 변수로 환경을 교란시키다( _promptPWD)

장점은 정상적으로 입력을 계속할 수 있고 동작을 cd얻기 위해 다른 것을 입력할 필요가 없다는 것입니다 .ls

관련 정보