echo와 grep

지금 ubuntu 공부하는 중입니다.
grep은 검색기능, echo는 문자열 출력기능으로 알고있는데
예제를 따라하고 있는데

grep root /etc/passwd
echo $?
grep nonuser /etc/passwd
echo $?
grep root /etc/paswd
echo $?

이에 대한 결과값이 0, 1, 2 순서네요.
일단 root, nonuser, /etc, /passwd, /paswd, $?
기능을 죄다 모르니 뭘 나타내라는지 알수가 없네요.
이렇게 하나하나 알아가며 공부해야하나봐요.

책으로 딱딱하게 공부하는 것 보다는 일단 친해지는 것부터 하시는 것을 추천드립니다.
M$ Windows를 한 번 대체해 보겠다는 생각으로 얼마간 써 보는게 어떨까요?

freaxtux 님 말씀처럼 처음 쓰시는 거라면, 일단 GUI 를 쓰면서 친해지는 것부터 하시면 좋을 것 같습니다.
커맨드 명령어나 쉘 스크립트 등을 익히자면 끝도 없고, 굳이 당장 쓰지도 않거든요.

일단, 질문만 답변 드리겠씁니다.
아시는 대로, grep 명령은 문자열을 검색하는 거구요

[code:2ocn6564]grep root /etc/passwd[/code:2ocn6564]/etc/passwd 파일 내에서 ‘root’ 라는 문자열을 검색합니다. 만약 성공하면 문자열이 있으면 0 을 리턴합니다. (함수의 리턴값 같은 거죠)

[code:2ocn6564]echo $?[/code:2ocn6564]$? 은 직전 명령의 리턴값을 의미합니다. 이 경우는 위의 grep 명령의 리턴값이 될 것이고, echo 명령으로 이 값을 출력해 확인하는 거죠

[code:2ocn6564]grep nonuser /etc/passwd[/code:2ocn6564]마찬가지로 /etc/passwd 파일 내에서 ‘nonuser’ 를 검색합니다. 검색해서 결과가 없으면 1 이 리턴됩니다.

[code:2ocn6564]echo $?[/code:2ocn6564]위 검색에서의 리턴값을 출력하겠죠. 아마 nonuser 라는 문자열이 없었을 것이므로 1 이 출력될 것입니다.

[code:2ocn6564]grep root /etc/paswd[/code:2ocn6564]/etc/paswd 라는 파일에서 ‘root’ 를 검색합니다. 아마, paswd 파일은 특별하게 만들지 않는 한 존재하지 않을 겁니다. grep 은 검색 자체를 할 수 없는 경우에 2 를 리턴합니다. error 인 거죠.

[code:2ocn6564]echo $?[/code:2ocn6564]위의 명령 결과를 리턴합니다.

참고로 /etc 폴더 내에 있는 passwd 라는 파일은 원래 계정의 암호를 저장해 두는 파일입니다. 지금은 여기에 저장되지 않고 암호화 되어 다른 파일에 저장되지만, 파일 내에는 일반적인 계정 정보가 저장되어 있습니다. root 라는 계정은 일반적인 리눅스라면 다 있을 것이고, 이 계정이 저 파일 내에 존재하는 지 여부를 판단하는 명령입니다. 세번째는 오타를 적어서, grep 의 반응을 알아보는 거겠죠.
에디터 같은 걸로 /etc 폴더의 passwd 파일을 한 번 열어서 내용을 살펴 보세요. 물론 직접 편집하시면 안되는 파일입니다. 권한때문에 편집이 되지도 않지만 여튼 살펴만 보세요.

그리고,
grep 명령어의 기본 사용법을 알기 위해선,
grep --help
하시면 되구요.
더 자세한 설명을 보기 위해선,
man grep
아마 마지막 쯤에 리턴값에 대한 설명이 있을 겁니다.

$? 같은 것은 쉘에 대한 공부를 하게 되면 자세히 알 수 있씁니다. BASH 라는 검색어를 가지고 인터넷이나 책을 찾아보시면 될 겁니다.

그렇지만, 결론은,
이런 커맨드 명령보단, 일단 리눅스와 친해지시는 게 최고~!