대상 디렉토리로 변경하고 새 디렉토리의 내용을 나열하는 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