별칭이 지정된 경우 명령이 작동하지 않습니다.

별칭이 지정된 경우 명령이 작동하지 않습니다.

더 쉽게 사용할 수 있도록 명령을 생성하고 별칭으로 변환해 보았지만 가장 좋은 형식을 지정하는 방법을 알 수 없습니다. 도와주세요?

이 명령의 원리는 간단합니다. 하나의 명령으로 docker 컨테이너와 다른 별칭 명령을 사용하여 두 개의 프로세스를 실행합니다. 아래 명령을 확인하세요.

docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'

이 명령은 그 자체로는 괜찮지만 별칭을 만들려고 하면 docker 및 find와 같은 다른 명령에 대한 다양한 내부 호출에 문제가 발생합니다. 나는 이것을 성공하지 않고 달성하기 위해 eval 등을 사용해 보았습니다.

답변1

@ilkkachu가 말했듯이 함수를 만들어 .zshrc 또는 .bashrc 파일에 추가하면 다음과 같습니다.

docker_command () {
        docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'
}

그런 다음 명령을 실행 docker_command하여 기능을 수행할 수 있습니다.

또는 쉘 스크립트를 생성하여 $HOME/.local/bin/docker_command에 저장하고 쉘에서 직접 실행할 수도 있지만, 이 경우 PATH 변수에 명령의 디렉터리를 넣어야 합니다. 실행할 때 경로 변수를 확인하십시오 echo $PATH.

옵션 중 하나를 완료한 후에도 여전히"별명"이것을 rc 파일에 추가할 수 있습니다. alias d=docker_command 이렇게 하면 d.

관련 정보