나는 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