bash에서 별칭으로 인수 전달
- 매개 변수를 사용하는 Bash 별칭을 만드시겠습니까? 답변 14 개
다음을 수행 할 수 있습니까?다음을 실행하고 싶습니다.
mongodb bin/mongod
내 bash_profile에는
alias = "./path/to/mongodb/$1"
별명은 그것이 나타내는 문자열로 확장됩니다. 별칭 뒤에 오는 것은 명시 적 인수 (예 :)로 전달 될 필요가 없거나 확장 할 수없는 확장 후에 나타납니다
$1
.
$ alias foo='/path/to/bar'
$ foo some args
로 확장됩니다
$ /path/to/bar some args
명시적인 인수를 사용하려면 함수를 사용해야합니다
$ foo () { /path/to/bar "$@" fixed args; }
$ foo abc 123
마치 마치 마치 실행됩니다
$ /path/to/bar abc 123 fixed args
별명을 정의 해제하려면 다음을 수행하십시오.
unalias foo
함수를 정의하지 않으려면 :
unset -f foo
유형 및 정의 (정의 된 별명, 키워드, 함수, 내장 또는 실행 파일 각각)를 보려면 다음을 수행하십시오.
type -a foo
또는 가장 높은 우선 순위의 경우에만 입력하십시오.
type -t foo
일반적으로 Bash에서 별칭에 인수를 전달하려면 별칭과 함수를 다음과 같이 조합하여 사용합니다.
function __t2d {
if [ "$1x" != 'x' ]; then
date -d "@$1"
fi
}
alias t2d='__t2d'
별칭에 매개 변수를 사용하려면이 방법을 사용하십시오.
alias myalias='function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias'
별명으로 싸인 자체 파괴적 인 함수이므로 거의 두 세계의 최고이며 정의에 여분의 줄을 차지하지 않습니다 ... 나는 싫어합니다. 값을 설정하려면 unset을 호출하기 전에 저장 한 다음 자체 파괴 함수의 "return"키워드를 사용하여 값을 반환해야합니다.
alias myalias='function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias'
그래서..거기에 그 변수가 필요하다면
alias mongodb='function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb'
물론이야...
alias mongodb='./path/to/mongodb/'
실제로 매개 변수가 필요없는 동일한 작업을 수행하지만 내가 말했듯이 어떤 이유로 든 원하거나 필요로하는 경우 (예 : $ 1 대신 $ 2가 필요함) 그런 래퍼를 사용해야합니다. 한 줄보다 큰 경우 함수가 커질수록 눈에 띄게되기 때문에 함수를 작성하는 것이 좋습니다. 함수가 제공하는 모든 특권을 얻었으므로 함수는 훌륭합니다 (bash 맨 페이지에서 함수가 제공 할 수있는 장점은 완료, 트랩, 바인딩 등 참조).나는 그것이 당신을 도울 수 있기를 바랍니다 :)
이것은 기능 사용을 피할 수있는 해결책입니다.
alias addone='{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<'
검사 결과
addone 200
input: 200
result:201
에서
CSH
(같은 반대
bash는
) 정확히 당신이 원하는 것을 할 수 있습니다.
alias print 'lpr \!^ -Pps5'
print memo.txt
이 표기법
\!^
은이 시점에서 인수가 명령에 삽입되도록합니다.
The !
character is preceeded by a \
to prevent it being interpreted as a history command.
You can also pass multiple arguments:
alias print 'lpr \!* -Pps5'
print part1.ps glossary.ps figure.ps
(Examples taken from http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html .)
To simplify leed25d's answer, use a combination of an alias and a function. For example:
function __GetIt {
cp ./path/to/stuff/$* .
}
alias GetIt='__GetIt'
참고URL : https://stackoverflow.com/questions/4060880/passing-argument-to-alias-in-bash
'Programming' 카테고리의 다른 글
C에서 밀리 초로 대체 슬립 기능이 있습니까? (0) | 2020.07.19 |
---|---|
UIActionSheet 취소 버튼 이상한 동작 (0) | 2020.07.19 |
SQL Server 2008에서 while 루프 수행 (0) | 2020.07.19 |
유형을 비교하는 방법 (0) | 2020.07.19 |
Apple 개발자 팀 ID 및 팀 에이전트 Apple ID를 어떻게 찾을 수 있습니까? (0) | 2020.07.19 |