매번 입력하지 않고 셸의 모든 명령에 접두사를 어떻게 추가할 수 있나요?
내 사용 사례 1:
$ git init
$ git add -A
$ git commit
$ git push
접두사는 git␣
( ␣
는 공백 문자입니다) 이어야 합니다.
init
add -A
commit
push
내 사용 사례 2:
sudo docker run my-repo/my-image
sudo docker ps
sudo docker images
접두사는 다음과 같아야 합니다.sudo docker␣
run my-repo/my-image
ps
images
다음과 같이 할 수 있다면 가장 좋을 것입니다.
$ git init
$ use_prefix sudo docker
> ps
> images
> exit
$ sudo docker run my-repo/my-image
답변1
다음과 같은 기능을 사용할 수 있습니다.
use_prefix () {
while read -ra c; do
"$@" "${c[@]}"
done
}
그러면 접두어를 use_prefix
명령에 대한 인수로 받아들인 다음 표준 입력에서 접두어를 붙일 각 명령을 읽습니다.
참고: while read 루프를 종료하려면 ctrl+c를 사용해야 합니다.
답변2
답변3
한 가지 해결 방법은 별칭을 설정하는 것이지만 내장 명령 및 시스템 바이너리(예:)와 충돌할 때는 주의해야 합니다 ps
.
다음과 같은 줄을 추가한 후 ~/.bashrc
(다음에 bash를 시작하거나 를 입력할 때 적용됩니다 source ~/.bashrc
):
alias commit='git commit'
alias docker='sudo docker'
alias images='docker images'
alias ps='docker ps'
실제 실행하려면 또는 를 ps
입력해야 합니다 . 별칭을 스크립트에 사용할 수 있도록 특별히 설정하지 않는 한 이는 일반적으로 명령줄의 입력에만 영향을 미칩니다.command ps
\ps
귀하가 제안한 것과 같은 대화형 셸 인터페이스의 경우 더 많은 참여가 필요합니다.
즉, @Jesse_B의 좋은 제안을 확장한 것입니다.
use_prefix () {
while read -p "$* >" -ra c; do
[ "${c[0]}" = "exit" ] && break
"$@" "${c[@]}"
done
}
키워드를 활성화 exit
하고 알림을 추가하여 현재 하고 있는 일을 상기시켜 보세요.
답변4
안녕하세요. 웹사이트에 오신 것을 환영합니다.
이 문제를 해결하기 위한 한 가지 가능한 해결 방법은 다음을 사용하는 것입니다.aliasing
"접두사"를 부정하지는 않지만 많은 시간을 절약합니다.
예를 들어
alias g=git
$ g init
$ g add -A
$ g commit
$ g push
또는
단어가 여러 개인 경우 따옴표를 사용하세요.
alias sd="sudo docker"
sd run my-repo/my-image
sd ps
sd images
그러나 각 세션에서 이러한 별칭을 재설정해야 합니다.