watch 명령 별칭 확장

watch 명령 별칭 확장

watch별칭이 포함된 명령을 실행하면 별칭이 확장되지 않습니다. 실제로 다음 별칭을 제공하는 작은따옴표와 큰따옴표를 사용해 보았습니다.

# alias ll
alias ll='ls -l --color=tty'

다음 명령은 실패합니다

# watch ll
sh: ll: command not found

이 경우 명령줄 확장이 작동하면 안 되나요?

답변1

별칭은 첫 번째 인수로만 확장되거나 명령 끝에 후행 공백이 있는 다른 별칭 다음에 확장됩니다.

보낸 사람 :bashhelp alias

별칭을 확장할 때 VALUE의 뒤에 공백이 있으면 다음 단어에서 별칭 대체가 있는지 확인됩니다.

이렇게 하려면 다음을 시도해 보세요.

alias watch='watch '
alias ll='ls -l --color=tty'
watch ll

일부 버전에서는 스트립 색상이 기본적으로 설정되어 있으며 watch일부 버전에서는 또는 를 사용하여 중지할 수 있습니다.--color-G

답변2

시계가 별칭을 보기 전에 별칭을 수동으로 확장할 수 있을까요?

watch $(alias ll | cut -d\' -f2)

설명하다

출력은 alias ll다음과 같습니다.

$ alias ll
alias ll='ls -lAGh'

따라서 컷의 구분 기호를 작은따옴표로 설정하고 두 번째 필드를 잘라내어 다음과 같이 남깁니다.

ls -lAGh

즉, 확장의 별칭입니다.저것그러면 주어진 인수가 형성됩니다 watch.

이를 수행하는 함수를 작성하십시오.

function watcha {
    watch $(alias "$@" | cut -d\' -f2)
}

그 다음에,

watcha ll

예상대로 작동합니다. 이것은 짜증나고 모든 상황에서 실패합니다. 죄송합니다.

답변3

내가 사용하는 또 다른 트릭(특히 aliases kubectl)은 k별칭 대신 심볼릭 링크를 만드는 것입니다. 이렇게 하면 심볼릭 링크를 계속 찾을 수 watch있으며 스푸핑이 필요하지 않습니다.

이것의 단점은 사용하려는 모든 별칭에 대해 이 작업을 수행해야 하며 쉘 내장에 대해 어떻게 작동하는지 잘 모르겠습니다.

답변4

이는 해당 --color옵션을 사용하고 매개변수를 사용하여 -n새로 고침 간격을 지정할 수 있는 옵션입니다.

swatch_usage() {
    cat <<EOF >&2
NAME
       swatch - execute a program periodically with "watch". Supports aliases.

SYNOPSIS
       swatch [options] command

OPTIONS
       -n, --interval seconds (default: 1)
              Specify update interval.  The command will not allow quicker than
              0.1 second interval.
EOF
}

swatch() {
    if [ $# -eq 0 ]; then
        swatch_usage
        return 1
    fi
    seconds=1

    case "$1" in
    -n)
        seconds="$2"
        args=${*:3}
        ;;
    -h)
        swatch_usage
        return 1
        ;;
    *)
        seconds=1
        args=${*:1}
        ;;

    esac

    watch --color -n "$seconds" --exec bash -ic "$args || true"
}

색상과 시간 지원이 필요할 뿐이지만 원하시면 더 추가하실 수 있을 거라 확신합니다.

이 기능의 핵심은 대화형 모드에서 bash를 사용하여 명령을 직접 실행하므로 일반적으로 bash에서 사용 가능한 모든 별칭이나 명령을 사용할 수 있다는 것입니다.

나는 스크립팅에 대한 경험이 없으므로 공정한 경고입니다. 귀하의 마일리지가 다를 수 있습니다. 가끔 Ctrl+를 C몇번 눌러야 멈출 때도 있는데 , 그럼에도 불구하고 6개월 동안 아무 문제 없이 자주 사용하고 있습니다.

요점 형식:https://gist.github.com/ablacklama/550420c597f9599cf804d57dd6aad131

관련 정보