태그 보관물: parameter

parameter

별칭에 매개 변수를 전달하는 방법은 무엇입니까? 사용할 수 있습니다. 별칭을

bash 스크립트의 경우 "$@"인수에 액세스 하는 데 사용할 수 있습니다. 별칭을 사용할 때 동등한 기능은 무엇입니까?



답변

별명은 별명에 대한 모든 인수가 별명을 갖는 프로그램에 인수로 전달된다는 점에서 명령과 같습니다. 예를 들어, 경우 별칭이었다 lsls -la, 다음을 입력 ls foo bar것이 정말 실행 ls -la foo bar명령 줄에서.

인수가 해석되는 방식을 실제로 제어하려면 다음과 같이 함수를 작성할 수 있습니다.

my_program_wrapper() {
    local first_arg="$1" \
          second_arg="$2"

    shift 2               # get rid of the first two arguments

    # ...

    /path/to/my_program "$@"
}


답변

별명 솔루션

실제로 함수 자체를 사용하지 않으면 다음을 사용할 수 있습니다.

$ alias wrap_args='f(){ echo before "$@" after;  unset -f f; }; f'
$ wrap_args x y z
before x y z after

당신은 대체 할 수 $@와 함께 $1당신은 단지 첫 번째 인수를 원하는 경우.

설명

이것은 f인수로 전달되는 임시 함수를 만듭니다 .

별명 인수는 끝에 만 전달됩니다. 참고는 f별명의 맨 끝에라고합니다.

unset -f별칭은 별칭이 실행될 때 함수 정의를 제거하므로 나중에 중단되지 않습니다.


답변

현재 답변에 덧붙여서, 별명이 작동하는 방식에 대해 알아야 할 중요한 것은 별명을 지은 명령 뒤에 입력 한 모든 매개 변수가 문자 그대로 사용된다는 것입니다. 따라서 두 명령에 대해 별명을 사용할 수있는 방법이 없습니다 (파이핑 여부에 관계없이). 명확히하기 위해 예상대로 작동하지 않는 예가 있습니다.

alias lsswp="ls -l | grep swp"

( 이 질문에서 영감을 얻은 예 ) 항상 현재 디렉토리 ls -l에서 수행 된 출력을 사용하고 그에 대한 grep을 수행합니다.

lsswp / tmp /

ls -l | grep swp /tmp/ 거나 같지 않습니다 ls -l /tmp/ | grep swp .

인수가 중간 어딘가에 사용되어야하는 모든 목적을 위해서는 function대신 을 사용해야합니다 alias.


답변

실제로 아무것도 할 필요가 없습니다. 별명은이를 자동으로 수행합니다. 예를 들어 :

$ alias less="less -eirqM"
$ less foo.txt

foo.txt의 첫 페이지가 표시 less되고 EOF (-e)에서 종료되고 검색은 대소 문자를 구분하지 않습니다 (-i) 등입니다.


답변

나는 csh에 대답하고있다 :

예, 별칭으로 매개 변수를 사용할 수 있으며 위에서 언급 한 것과 달리 별칭 정의의 어디에서나 끝 부분을 참조 할 수 있습니다.

tar-gz -ing의 예 :

$ alias tgz "tar cvf - \!:1 | gzip -9 > \!:2.tar.gz"

별명을 호출 할 때 제공 할 매개 변수 !:1및 위치 !:2는 어디 입니까?

사용 예 :

    $ ls
    clrcf.dat                             user_comment_2016.06.03_12:51:50.txt  user_comment_2016.06.03_12:54:48.txt
        TEST-wADM.tec                         user_comment_2016.06.03_12:52:04.txt  user_comment_2016.06.03_12:55:13.txt


    $ tgz user* out
    a user_comment_2016.06.03_12:51:50.txt 1K
a user_comment_2016.06.03_12:52:04.txt 1K
a user_comment_2016.06.03_12:54:48.txt 1K
a user_comment_2016.06.03_12:55:13.txt 1K

    $ ls out*
    out.tar.gz

이는 tar 명령의 임의 위치에 삽입 한 두 개의 매개 변수를 사용하여 모든 매개 변수를 별명으로 만드는 것을 의미합니다. tgz


답변