Programing

작은 따옴표와 큰 따옴표가 모두있는 bash alias 명령

lottogame 2020. 11. 27. 07:35
반응형

작은 따옴표와 큰 따옴표가 모두있는 bash alias 명령


원하는 것을 수행하는이 명령이 있지만 .bashrc에서 별칭을 얻을 수 없습니다 (작은 따옴표와 큰 따옴표를 모두 사용합니다).

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

난 노력 했어:

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

그리고 운이없는 다른 상식적인 조합 .. 나는 bash가 따옴표로 매우 까다 롭다는 것을 알고 있습니다. 그래서 별칭을 지정하는 올바른 방법은 무엇이며 그 이유는 무엇입니까? 감사


올바르게 이스케이프하면됩니다.

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

별칭을 사용하지 않고 동일한 작업을 수행하는 작업이 있습니다. .bashrc의 함수에 넣으십시오.

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

이렇게하면 따옴표를 올바르게 가져 오는 것에 대해 걱정할 필요가 없습니다. 이것은 명령 줄에서와 똑같은 구문을 사용합니다.


함수를 사용하거나 @ffledgling이 한 방식을 이스케이프하는 것 외에 세 번째 방법이 있습니다 (더 쉬웠습니다). 문자열 리터럴 구문 사용 ( 여기에 훌륭한 답변이 있습니다 ).

예를 들어이 onliner 의 별칭을 만들지 않으려면 다음과 같이됩니다.

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

따라서 $문자열 앞에 를 추가 하고 작은 따옴표를 이스케이프하면됩니다.

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

반응형