bestsource

bash 별칭 명령(단일 따옴표와 이중 따옴표 모두 포함)

bestsource 2023. 5. 4. 20:07
반응형

bash 별칭 명령(단일 따옴표와 이중 따옴표 모두 포함)

다음과 같은 명령이 있습니다.

svn status | awk '$1 =="M"{print $2;}'

어떻게 하면 가명을 만들 수 있을까요?시도해 본 결과:

alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"

당신은 그것을 정확하게 탈출하기만 하면 됩니다.

alias xxx="svn status | awk '\$1 ==\"M\"{print \$2;}'"

여기에 가명을 사용하지 않고 동일한 일을 수행하는 것이 있습니다..bashrc의 함수에 넣습니다.

xx() {
    svn status | awk '$1 =="M"{print $2;}'
}

이렇게 하면 견적을 제대로 받을 수 있을지 걱정할 필요가 없습니다.이는 명령줄에서 사용하는 것과 동일한 구문을 사용합니다.

Bash 2.04 이후로 함수를 사용하거나 @ffledleging이 했던 방식을 벗어나는 세 번째 (쉬운) 방법이 있습니다: 문자열 리터럴 구문을 사용하는 것입니다(여기 훌륭한 답변이 있습니다).

예를 들어 이 온라인의 별칭을 만들고자 하는 경우 다음과 같이 됩니다.

alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'

그래서 당신은 단지 추가하기만 하면 됩니다.$문자열 앞에서 단일 따옴표를 이스케이프합니다.

이 경우 를 사용하여 안전하게 비활성화할 수 있는 셸 검사 경고가 표시 경고가 나타납니다.

이중 따옴표와 단순 따옴표를 되돌려서 이중 따옴표가 단일 따옴표 밖에 있도록 할 수 있습니다.

예를 들어, 이것은 작동하지 않습니다.

alias docker-table='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"'

하지만 이것은 효과가 있습니다.

alias docker-table="docker ps --format 'table {{.ID}}\t{{.Image}}\t{{.Status}}'"

그리고 해석된 실제 별칭을 확인하면 내부 인용문이 실제로 빠져나가는 것을 볼 수 있습니다.

$ alias docker-table
alias docker-table='docker ps --format '\''table {{.ID}}\t{{.Image}}\t{{.Status}}'\'''

언급URL : https://stackoverflow.com/questions/20111063/bash-alias-command-with-both-single-and-double-quotes

반응형