매개변수가 있는 bash 별칭 이름 바꾸기 함수

매개변수가 있는 bash 별칭 이름 바꾸기 함수

나는 bash가 성공하지 못한 채 인수를 받아들이도록 하루 종일 노력해 왔습니다. 내가 찾을 수 있는 가장 가까운 참조는 다음과 같습니다.

별칭에 매개변수를 전달하는 방법은 무엇입니까?

내가 실행하는 경우:

rename -v -n 's/^the.//' * 

그것은 내가 필요한 것을 정확하게 수행하지만 "the"를 받는 별칭으로 바꾸고 싶습니다. 런타임 문자열. 이를 수행할 수 있는 방법이 있습니까?

어떤 아이디어라도 환영합니다!

나는 성공하지 않고 이것을 시도했습니다.

alias rp="_rp(){ rename 's/"$1"//' *; unset -f _rp; }; _rp"

답변1

별칭에는 매개변수를 사용할 수 없습니다. (다음에 항목을 추가할 수 있지만 그렇게 하면 상황이 복잡해집니다.) 매뉴얼 페이지에는 다음과 같은 내용이 나와 있습니다.man bash) 그들에 대해 다음과 같이 말합니다.

각 단순 명령의 첫 번째 단어(따옴표가 없는 경우)를 검사하여 별칭이 있는지 확인합니다. 그렇다면 해당 단어는 별칭의 텍스트로 대체됩니다. [...]

대체 텍스트에 매개변수를 사용하는 메커니즘은 없습니다. 매개변수가 필요한 경우 쉘 함수를 사용해야 합니다. [...]

거의 모든 목적에서 별칭은 쉘 함수로 대체됩니다.

따라서 별칭 대신 함수를 사용해야 합니다.

rp() { rename "s{$1}{}" *; }    # No "{}" characters in the substitution

용법

rp 'the.'    # Quotes optional but recommended. Remember . represents any character

관련 정보