명령으로 별명을 작성하는 방법에는 '및'


10

몇 게시물 전에 누군가 메모리를 백분율로 표시하는 방법을 물었습니다. 누군가가 대답했다.

free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'

~ / .bashrc에서이 명령을 별칭으로 바꿀 수 있는지 궁금합니다. 그러나 alias 구문은 다음과 같습니다.

alias aliasname='command'

어떻게해야합니까? 이 명령에는 '과 가 모두 포함되어 있습니다 ". 다른 방법으로 시도했지만 작동하지 않았습니다. 이것이 가능합니까? 뭔가 빠졌습니까?


5
지옥을 인용하지 않으려면 그러한 경우 함수를 정의하는 것이 더 쉬울 수 있습니다.
nohillside

1
@nohillside 함수는 일반적으로 어쨌든 더 유용하고 강력합니다
D. Ben Knoble

1
aliasname() { free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'; }-여전히 한 줄로, 인용 / 이스케이프 등의 변경이 전혀 필요하지 않습니다. Freenode의 #bash 채널 이유가있다 !aliasfactoid는 (물론입니다 되었다 : 만의 factoid 봇의 삶의 대부분 약간의 변형을 위해) 당신이 요청해야하는 경우, 대신 함수를 사용 .
Charles Duffy

답변:


8

당신이 필요합니다 :

alias aliasname="free | awk '/^Mem/ { printf(\"free: %.2f %\n\", \$4/\$2 * 100.0) }'"

당신이 모두를 탈출해야한다는 것을주의 "하고 $.


17

alias aliasname='command'작은 따옴표가 구문의 일부임을 암시하는 것처럼 별칭의 구문이 약간 오해의 소지가 있습니다. 그들은 아닙니다. 등호 뒤의 부분은 변수 할당과 유사합니다. 셸 단어 는 일반 문자 (따옴표없이) 또는 따옴표로 묶인 문자열 또는 조합으로 구성 될 수 있습니다.

이것들은 모두 유효하며 마지막 세 가지에 해당합니다.

alias ks=ls
alias ls='ls -l'
alias ls="ls -l"
alias ls=ls\ -l

따라서 따옴표를 올바르게 이스케이프하여 별칭 값 안에 포함시키는 것입니다.

예를 들어이 답변 과 이러한 질문에 대한 다른 답변을 참조하십시오 .

또는 별명 대신 함수를 사용하여 인용 문제를 완전히 제거하십시오.

freemem() {
    free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.