U E D R , A S I H C RSS

데블스캠프2003/넷째날/Linux실습

1. 이 페이지는?

제로 페이지 데블스 캠프 4일째에 하는 리눅스를 신입생들이 간단히 체험해 보는 기회를 가지게 하는 페이지입니다.

2. 작성자

02 임영동Yggdrasil
원랜 재니가 맡기로 하였으나 MT 가는 바람에 제가 얼떨결에 맡게 되었습니다. 제가 거의 모르는 상태이기에 예제 같은 것은 못 하겠고, 그냥 따라하기... 정도만 될 것 같습니다.

3. 리눅스의 장점

척 보기에 리눅스는 윈도우 처럼 비쥬얼하지도 않고, 참 심심하게(?) 생겼음에도 불구하고 사용하는데, 그에는 아래와 같은 장점들이 있습니다.
  • 오픈 소스로서의 장점
    • 소스코드가 공개되어 변형이 가능
    • 저작권 비용 필요없음
    • 소스가 공개되어 버그 수정에 사용자가 참여할 수 있음
    • 개발업체가 망해도 소프트웨어는 존속될 수 있음
    • 소스코드로 인해 다른 환경의 시스템 통합시에 유연함
  • 리눅스의 장점
    http://www-903.ibm.com/kr/linux/value/advantage/
    • 제가 퍼와서 쓰느니 차라리 링크를 걸어두는 편이 나을 거 같네요.

4. 접속 프로그램

putty Client
여기서 다운 받아 실행한 후, Protocol을 SSH로 하고 Hostname을 zeropage.org로 하여 접속하세요. 그리고 부여받은 id와 비밀번호를 입력하면 됩니다.

5. 실습

5.1. 명령어 사용해보기

  • mkdir (디렉토리 만들기)
    • mkdir (디렉토리)
      • 예)cd temp_file
  • rmdir (디렉토리 지우기)
    • rmdir (디렉토리)
      • 예)rm temp_file
  • cd (디렉토리 이동)
    • cd (디렉토리)
      • 예)cd temp_file
    • cd .. 한 단계 상위 디렉토리로 이동한다.
      • 주의) 반드시 cd 다음 한 칸 띄어야 함.
  • ls (파일 보기)
    • ls -l (자세히 보여준다.)
    • ls -1 (한 줄에 하나씩 보여준다.)
    • 그 외에 다양한 옵션이 있다. 옵션을 여러개 한꺼번에 쓸땐 ls -1l 식으로 쓴다.
  • cp (카피)
    • cp (파일1) (파일2) => 파일1을 파일2란 이름으로 카피한다.
      • 예) cp aaa.txt bbb.txt
    • cp 파일1 temp_file => 파일1을 temp_file로 카피한다.
    • cp 파일1 ../temp_file => 파일1을 현재의 상위 디렉토리의 하위 디렉토리인 temp_file로 카피한다.
  • rm (파일 지우기)
    • rm (파일1) 파일1을 지운다.
  • mv (파일 옮기기)
    • cp와 비슷하지만 원본이 지워진다.
    • mv aaa.txt ccc.txt => aaa.txt를 ccc.txt로 이름을 바꾸는 용도로 쓸 수 있다.
    • mv aaa.txt ./temp_file => aaa.txt를 temp_file이란 하위 디렉토리로 옮긴다.
  • man (매뉴얼)
    • man (알고 싶은 명령어)의 형식으로 사용한다. cp명령어에 대해 알고 싶으면 man cp를 쓰면 된다.
  • chmod (권한 설정)
    • ls -l을 해보면 제일 왼쪽에 -rwxrwxrwx 등의 문자가 나오는데, 이것은 권한을 말한다.
    • 접근 권한에는 3종류가 있다. r: read, w: write, x: excute의 권한을 나타냄
    • 권한 부여 대상에도 3종류가 있다. 왼쪽의 rwx부터 차례로 u(user), g(group), o(others)의 순서.
    • 예제
      • chmod ugo+rwx aaa.txt => aaa.txt를 user, group, others에게 읽고 쓰고 실행시키는 권한을 준다.
      • chmod u-r aaa.txt => aaa.txt의 읽을 권한을 user로부터 빼앗는다.
      • chmod 701 aaa.txt => user에겐 rwx의 권한을 주고, group에겐 어떠한 권한도 안 주고, others에겐 x의 권한만 준다.


SeeAlso linux필수명령어

5.2. vi 에디터 써보기

  • vi는 MS워드나 아래아 한글과는 달리 메뉴가 없습니다. 그래서 여러 기능을 쓰기 위해선 각 기능에 해당하는 버튼을 외워야 할 필요가 있습니다.

5.3. 사용법

  • 파일을 처음 만들고자 할때는 그냥 vi라고 치면 된다.
  • 전에 있던 파일을 고치고자 할 때는 vi (파일명)으로 들어가면 된다..
  • vi에는 다음과 같은 3가지 모드가 있습니다. 처음 실행하면 명령모드에서 시작된다.

5.3.1. 입력 모드

  • 문서를 편집할 수 있는 모드로 명령모드에서 i를 누르면 들어간다. 제일 밑에 INSERT라고 표시된다. 여기서 보통 문서 편집하는 것처럼 입력해 주면 된다.

5.3.2. 명령 모드

  • copy, paste 등 편집과 관련된 다양한 기능을 사용할 수 있다.
  • 방향키 => 커서를 움직일 수 있습니다.
  • G => 문서의 제일 끝으로
  • w => 다음 단어로
  • b => 이전 단어로
  • 등등의 다양한 명령을 쓸 수 있고, 이제부터 편집(copy&paste)에 관해서 설명합니다.
  • y => 복사하기
  • yy => 한줄 복사하기
  • nyy => 현재 줄 이하로 n개의 줄을 복사(n은 임의의 숫자)
  • yw => 한단어 복사
  • nym => n개의 단어 복사(n은 임의의 숫자)
  • p => 붙이기
  • 이런 것 외에도 수많은 복사 붙이기 관련 명령어가 있습니다.(n번 붙이기 등등)
  • 물론 명령모드에선 copy&paste만 할 수 있는 것이 아니라 지우기, 복구하기 등의 명령어가 있습니다.

5.3.3. 콜론 모드

  • save, exit 등을 할 수 있는 모드로 제일 끝 줄의 왼쪽에 콜론이 표시된다.
  • q! =>종료
  • wq 저장한 후 종료. 처음 만든 파일의 경우는 wq (파일명)을 써 주어야 한다.

5.4. vi에서 C 컴파일 해보기

  • 우선 vi 편집기를 실행한다.
  • C 소스를 입력합니다. 단, C++ 스타일이 아닌 C 스타일로. 즉, stdio.h와 printf등을 사용하라는 뜻이죠. 주의할 점은, 여기서 주의할 점은 main() 함수의 리턴값은 void로 해주면 안 되고 int로 해주어야 합니다.(왜 그런지는 모르겠으나 컴파일 에러가 나더라고요.)
  • 저장합니다. 확장자는 cpp가 아닌 c로 할 것.
  • vi에디터를 나와서 gcc (파일명)을 치면 컴파일이 되는데, 무조건 실행파일은 a.out으로 나옵니다.
  • a.out으로 실행하면 됩니다.
  • 이런 식으로 HelloWorld와 구구단을 만들어 봅시다.


Unix Philosophy를 경험하게 해주는 건 어떨까요? 예컨대 Software Tools 철학을 경험하게 해주는 것이죠. 개별적인 커맨드를 하나씩 가르쳐주는 것도 의미있을 수 있지만 학습은 학습자 스스로 뭔가를 "구성"해 볼 때 발생합니다. 단순 암기는 피해야 할 것입니다.

예를 들면, apache 로그 파일을 줍니다. 그리고 sort, uniq, cut, grep, head 등의 명령어의 사용법을 간단히 가르쳐 줍니다. 그리고 이들을 파이프로 연결해서 2003년 6월에 접속한 IP 중에 가장 자주 접속한 IP 베스트 10을 1등부터 뽑아내라고 합니다. (~cpp grep "Jul/2003" access.log| cut -d' ' -f1 |sort|uniq -c|sort -rn|head -10| cut -f2)

훨씬 더 많은 것을 배우게 될 것입니다.

--JuNe
지금 해보고 있습니다.. 재밌겠네요.. 내년에라도 해보면 좋을 것 같습니다.^^; --창섭

확실히 명령어를 하나씩 가르쳐 주는 것은 한계가 있다고 봅니다. 그러나 제가 아는 게 없어서 이런 식으로 밖에 못 하겠습니다. 저 역시 리눅스 같은 것을 접한 적이 거의 없고, 이번 데블스캠프를 위해서 저도 처음 접했습니다.(작년 데블스캠프 제외) 그래서 지금 저의 수준에선 이 정도 밖에 할 수가 없었습니다. --영동

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:56
Processing time 0.0245 sec