[shell] 쉘 별명에 명령 행 인수를 전달하는 방법은 무엇입니까?
명령 행 인수를 별명에 어떻게 전달합니까? 다음은 샘플입니다.
별명 mkcd = 'mkdir $ 1; cd $ 1; '
그러나이 경우 $ xx는 런타임이 아닌 별명 작성 시간에 변환됩니다. 그러나 다음과 같이 쉘 기능 (약간 인터넷 검색 후)을 사용하여 해결 방법을 만들었습니다.
함수 mkcd () { mkdir $ 1 CD $ 1 }
CL 매개 변수를 허용하는 별명을 작성하는 방법이 있는지 알고 싶었습니다.
BTW-기본 쉘로 ‘bash’를 사용합니다.
답변
당신은 방법을 찾았습니다 : 별명 대신 함수를 만드십시오. C 쉘에는 별명에 대한 인수를 수행하는 메커니즘이 있지만 함수 메커니즘이 더 유연하고 동일한 기능을 제공하기 때문에 bash 및 Korn 쉘은 그렇지 않습니다.
답변
Bash 에서 다른 쉘에 대해 게시 된 내용을 반복하기 위해 다음 작업이 수행됩니다.
alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'
다음을 실행하십시오.
blah one two
아래 출력을 제공합니다.
First: one
Second: two
답변
ksh에서는 불가능하지만 csh에서는 가능합니다.
alias mkcd 'mkdir \!^; cd \!^1'
ksh에서 기능은 갈 길입니다. 그러나 정말로 별명을 사용하고 싶다면 :
alias mkcd='_(){ mkdir $1; cd $1; }; _'
답변
bash 맨 페이지를 인용하려면 :
대체 텍스트에 인수를 사용하는 메커니즘은 없습니다. 인수가 필요한 경우 쉘 기능을 사용해야합니다 (아래의 기능 참조).
그래서 당신이 당신의 자신의 질문에 대답 한 것처럼 보입니다-별칭 대신 함수를 사용하십시오
답변
이 명령이 유용 할 수도 있습니다.
mkdir dirname && cd $_
여기서 dirname은 만들려는 디렉토리의 이름입니다.
답변
함수를 ~/.cshrc
파일 로 쓸 수 없다는 것을 알았습니다 . 여기에 인수를 취하는 별칭으로
예를 들어 ‘find’명령에 인수가 전달되었습니다.
alias fl "find . -name '\!:1'"
Ex: >fl abc
여기서 abc는! : 1로 전달 된 인수입니다.
답변
가장 쉬운 방법은 별칭이 아닌 함수를 사용하는 것입니다. cli에서 언제든지 함수를 호출 할 수 있습니다. bash에서는 함수 이름 () {command}를 추가하면 별칭과 동일하게로드됩니다.
function mkcd() { mkdir $1; cd $1 ;}
다른 껍질에 대해 잘 모름