셸 별칭에 명령 줄 인수를 전달하는 방법은 무엇입니까?
명령 행 인수를 별명에 어떻게 전달합니까? 다음은 샘플입니다.
별명 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
'Programing' 카테고리의 다른 글
PHP에서 허용 된 메모리 크기 33554432 바이트 (43148176 바이트 할당 시도) (0) | 2020.03.28 |
---|---|
과학적 표기법을 비활성화하는 방법? (0) | 2020.03.28 |
SHOW PROCESSLIST에서 전체 쿼리를 보는 방법 (0) | 2020.03.28 |
언제 OWIN Katana를 사용해야합니까? (0) | 2020.03.28 |
AWS Lambda 함수가 다른 함수를 호출 할 수 있습니까 (0) | 2020.03.28 |