>
>rpm -e --nodeps 'rpm -qa | grep apache'
>
말로 설명하면, 또는 커맨드 그 자체로 보면 더 간단한데
글로 설명하면 더 헛갈리는게 유닉스의 쿼팅인 듯합니다.
눈을 크게 뜨고 (^^) 읽어보세요.
쉘 스크립트에서 쿼우팅(quoting)과 관련된 문제입니다.
양쪽모두 역인용부호(back quotation mark [키보드 1 옆에 있는거] )를
사용하시면 될것 같은데요.
쉘에서 쿼우팅은 쌍따옴표(" "), 따옴표(' '), 백슬래쉬(\), 이 세가지를 주로 사용합니다.
자료를 보면
문자열을 따옴표로 묶는 것이 쿼우팅인데
이렇게 하는 이유는 '문자열 안에 특수문자가 들어있을 경우
쉘에의해 그 특수문자가 재해석되거나 확장되는 것을 방지하기위해'라고
정의되어있습니다.
특수문자란 * # | ; & \ 등등을 말하며 이것들은 쉘에서 특수한 의미를
가지고 있습니다. 예로, 아스테리크(*)는 모든 것이죠??
쌍따옴표 " "는 $, ` `, \를 제외한 모든 특수문자(열)들을 보존합니다.
따옴표 ' '는 " "보다 더 엄격하게 모든 특수문자를 보존합니다. 즉 특수문자(열)의 특수한 의미를 무효화합니다.
이거말고 역슬래쉬 \는 문자<한 개>의 의미를 그대로 살려주고요.
그런데 역인용부호( ` ` ) - 키보드 1 옆에 있는 거 - 는 명령어 치환에 관계되는 것으로 한 명령어에서 나온 출력(결과)를 다른 명령어의 인자로 사용하게 해줍니다.
위의
rpm -e --nodeps 'rpm -qa | grep apache' 는
` ` 안에 잇는 rpm -qa | grep apache 의 결과(만약에 그 결과가 APACHE라면)를 앞쪽에 있는 rpm -e --nodeps라는 명령의 인자로 (APACHE를)넣는 것이겠죠?
결국 rpm -e --nodeps APACHE가 되는 것이겠죠?
--->
1)rpm 명령어에 옵션 q와 a를 사용하여 패키지를 나열한 뒤 2)그 결과 중에서 apache라는 단어가 들어 있는 것(패키지의 정식이름)을 찾은 뒤(grep)
3)rpm -e --nodeps 패키지이름을 통해 의존성문제를 무시하고 지워라.
저는 무식하게 그냥 rpm -qa | grep apache 한번 때리고 결과가 나오면
rpm -e --nodeps 결과
이런식으로 하겠습니다만...
고수들은 이렇게 한다죠?
실은 고수들이 명령어상에서 이렇게 한다기 보다 작업을 자동화시키는 쉘 스크립트 안에서 이렇게 사용한다고 생각하는게 맞을 듯합니다.
실제 커맨드상에서 이렇게 했는데 혹시라도 에러가 나면(철자가 틀려서 ^^)
오히려 더 복잡해질 수도 있잖아요??
도움이 되었는지 모르겠습니다.
저도 덕분에 다시 한번 자료 찾아보고 공부하였습니다.
간단한거 같은데 맨날 헷갈려서리..
|