Programing

셸 별칭에 명령 줄 인수를 전달하는 방법은 무엇입니까?

lottogame 2020. 3. 28. 10:13
반응형

셸 별칭에 명령 줄 인수를 전달하는 방법은 무엇입니까?


명령 행 인수를 별명에 어떻게 전달합니까? 다음은 샘플입니다.

별명 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은 만들려는 디렉토리의 이름입니다.


가장 쉬운 방법은 별칭이 아닌 함수를 사용하는 것입니다. cli에서 언제든지 함수를 호출 할 수 있습니다. bash에서는 함수 이름 () {command}를 추가하면 별칭과 동일하게로드됩니다.

function mkcd() { mkdir $1; cd $1 ;}

다른 껍질에 대해 잘 모름


별칭은 정적이기 때문에 실제로 Bash 별칭으로 원하는 것을 수행 할 수 없습니다. 대신, 작성한 기능을 사용하십시오.

자세한 정보는 여기를 참조하십시오 : http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ . (예, mactips.org는 알고 있지만 Bash에 관한 것이므로 걱정하지 마십시오.)


~ / .cshrc 파일에 함수를 쓸 수 없다는 것을 알았습니다. 여기에 인수를 사용하는 별칭이 있습니다.

예를 들어 'find'명령에 인수가 전달되었습니다.

alias fl "find . -name '\!:1'"     
Ex: >fl abc

여기서 abc는! : 1로 전달 된 인수입니다.


이것은 ksh에서 작동합니다.

$ alias -x mkcd="mkdir \$dirname; cd \$dirname;"
$ alias mkcd
mkcd='mkdir $dirname; cd $dirname;'
$ dirname=aaa 
$ pwd
/tmp   
$ mkcd
$ pwd
/tmp/aaa

"-x"옵션은 별명을 "내 보낸"-별명을 서브 쉘에 표시합니다.

또한 스크립트에 정의 된 별칭은 해당 스크립트에 표시되지 않습니다 (행이 해석 될 때가 아니라 스크립트가로드 될 때 별칭이 확장되므로). 이것은 동일한 쉘에서 다른 스크립트 파일을 실행하여 해결할 수 있습니다 (점 사용).


bash를 사용한다면 쉘 기능으로 할 수 있다고 생각합니다 : http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/


다음은 파이썬을 사용한 간단한 예제 함수입니다. ~ / .bashrc에 붙일 수 있습니다
. 첫 번째 왼쪽 중괄호 뒤에 공백이 있어야합니다
. 파이썬 명령은 큰 따옴표로 묶어야 변수 대체를 얻을 수 있습니다
. 끝의 세미콜론을 잊지 마십시오.

function count () {python -c "xrange ($ 1)의 숫자의 경우 : print num";}

$ count 6
0
1
2
3
4
5
$

빈 별칭은 인수를 실행합니다.

alias DEBUG=

참고 URL : https://stackoverflow.com/questions/941338/how-to-pass-command-line-arguments-to-a-shell-alias

반응형