Linux 명령어 | Linux 소개

유닉스 역사

Unix는 1969년 AT&T 벨 연구소인 켄 톰슨, 데니스 리치, 브라이언 카니한이 개발한 OS이다. 원래 벨 연구소에서 “Multics"라는 멀티 태스킹 OS를 개발했지만 시스템이 너무 커졌다. 그러나 Multics에서 놀이로 개발한 “Space Travel"이라는 게임을 할 목적으로 연구소의 한 구석에서 먼지를 쓰고 있던 DEC사의 PDP-7이라는 컴퓨터상에 Multics의 소형판이라고도 할 OS 를 개발하다. 이것은 Unix의 시작이다.

다양한 UNIX

Unix계 OS는 각사, 각 단체가 독자적인 강화를 실시해 System V(AT&T), BSD(California 대학 Berkeley교), Solaris(Sun Microsystems), HP-UX(HP), AIX(IBM), XENIX(Microsoft ), UnixWare(Novell), FreeBSD, NetBSD, OpenBSD 등 다양한 종류와 버전의 것이 개발되어 왔다. Unix계 OS의 표준화 단체(UNIX International, OSF, X/Open…)도 몇개가 발족 및 통폐합되어 현재는 The Open Group이라는 단체가 표준화를 행하고 있다.

UNIX와 Unix

“UNIX"라는 명칭은 The Open Group이 상표를 관리하고 있으며, IEEE가 정하는 Unix계 OS의 표준 사양인 “POSIX"를 확장한 “Single UNIX Specification"이라는 표준 사양을 만족하는 것만이 “UNIX"를 자칭할 수 있다. 그런데, 이 사양을 충족하는 것은 많지 않다. 사양을 충족하지 않는 OS는, “UNIX"가 아닌 “Unix계 OS"나, 소문자를 섞은 “Unix"라고 표기된다.

Linux 등장

헬싱키 대학(핀란드)의 리누스 토르발즈(Linus Torvalds)가 1991년 11월에 개발한 Unix계 OS의 하나이다. 오픈 소스로 공개되어 PC에서도 동작하기 때문에 급속히 퍼졌다. 엄밀히 말하면 Linux는 OS 커널 전용 이름이다. 이것에 GNU 프로젝트가 개발한 C언어 컴파일러(gcc)등의 각종 기본 소프트웨어를 더한 것을 GNU/Linux라고 부른다. 또, GNU/Linux 를 베이스로 인스톨러나 패키지 관리 시스템등을 추가한 각종 “Linux 배포판"이 존재한다.

운영체제 (Operating System) 컴퓨터를 활용적으로 사용할 수 있게 인터페이스를 구축한 것이다. ex) Window, Mac, Linux, Unix

Linux 배포판

초기에는 TurboLinux, Miracle Linux, Debian, Red Hat Linux 등 다양한 배포판이 난립했다. 현재는 데비안계와 Red Hat계가 주류가 되고 있다. 데비안계에서는, 염가판 PC용 OS로서도 채용되고 있던 우분투가 자주 이용되고 있다. Red Hat Linux는 상용 안정성을 향상시킨 Red Hat Enterprise Linux(RHEL)와 실험적으로 최신 기술을 통합하는 Fedora로 분화되었다. RHEL 호환 무료 CentOS도 자주 사용된다.

추기: CentOS는 RHEL의 무료 버전에 가깝다.

Unix/Linux 사용처

당초의 Unix계 OS는 주로 엔지니어링계의 업무에 사용되었지만, 현재는 Web 서버, 메일 서버, 라우터 등의 네트워크 기기, TV나 카 내비게이션 등 다양한 용도에 사용되고 있다. Mac도 Mac OS X에서 BSD Unix를 기반으로 다시 작성되었다. Google의 Android도 Linux를 기반으로 한다. Unix/Linux의 대국이라고도 할 수 있는 Microsoft Windows도 Unix계 OS라고까지는 불려지지 않지만, Unix계 OS의 기술이나 사상을 조금만 도입하고 있다.

Linux의 특징

  • 권한을 갖는다.
    • 리눅스 시스템은 “소유권/허가권” 이라는 두 가지 권한을 사용한다.
  • 다중 사용자 환경을 지원한다.
    • 리눅스 시스템은 Multi-Users 및 Multi-Tasking 환경을 사용하므로 다수의 사용자가 한 번에 작업이 가능하다.
  • 대/소문자를 구분한다.
    • “Caps Lock"키의 On/Off를 확인해야 한다.
  • Windows의 파일 확장자 개념이 없다.

TUI와 GUI

  • TUI (Text User Interface)
    • 텍스트로 입 출력 되는 환경
  • GUI (Graphical User Interface)
    • 그래픽 환경

디렉토리와 폴더의 차이

TUI 환경에서는 디렉토리라고 부르고, GUI 환경에선 폴더라고 부른다.

사용자

UNIX에서는 사용자는 devkuma 라든지 kimkc 등의 사용자명으로 식별된다. 사용자 정보는 /etc/passwd라는 파일에 기록된다.

그룹

사용자는 여러 그룹에 속할 수 있다. 예를 들어, devkuma와 kimkc의 두 사람이 adm이라는 그룹에 소속되어 있다고 한다. 그룹 정보는 /etc/groups라는 파일에 기록된다.

권한

rwxr-xr-x와 같은 9자는 권한을 나타낸다.

쉘(Shell)

Windows 명령 프롬프트(이전 이름: MS-DOS 프롬프트)에 해당하는 UNIX의 명령을 셸이라고 한다. 텍스트 모드에서 명령을 입력하면 결과도 텍스트로 표시된다.

프롬프트(Prompt) 정의

명령어를 입력 받아 실행될 수 있는 대기 상태이다.

prompt 구조

Windows (MS-DOS)

  드라이버명//경로>
  C://windows>

Linux (Bash Shell)

구분자 의미
root 로그인한 사용자 계정 명
localhost 리눅스 시스템의 호스트 명
~ 현재 작업 디렉토리 위치
# 관리자 계정(#), 일반 계정($)
[root@localhost ~]#
[devkuma@localhost ~]$

환경 변수

프로그램간에 정보를 교환할 때 참조할 수 있는 특수한 변수를 환경 변수라고 한다. Windows의 “AUTOEXEC.BAT"에서 지정한 “PATH"와 같다. CGI는 환경 변수를 통해 WWW 서버와 CGI 스크립트간에 많은 정보를 교환합니다. 주요 환경 변수는 다음과 같다.

환경 변수 의미
PATH 명령 검색 경로. 예를 들어, PATH=/bin:/usr/bin일 때 ls 명령을 실행하면 쉘은 /bin/ls, /usr/bin/ls를 순서대로 찾아서 먼저 발견된 명령을 실행한다. 반대로 PATH로 설정되지 않은 명령은 /bin/ls와 절대 경로 이름으로 지정해야 한다.
TZ 시간대. 해당 지역의 시간대를 지정합니다. 예를 들어 한국의 경우는 TZ=KST-9(최근에는 TZ=Asia/Seoul)로 지정해 둔다. 그렇지 않으면 시스템에 따라 시간이 9시간 벗어날 수 있다.

환경 변수의 값을 알기 위해서는, 쉘의 경우는 printenv(printenv 를 사용할 수 없는 때는 set) 커멘드, perl 의 경우는 $ENV{‘환경 변수명’} 을 이용한다.

UNIX와 Windows의 차이

UNIX Windows
드라이브 개념 없다 있다
디렉토리 구분 기호 / \
파일 목록 ls dir
파일 복사 cp copy
파일 삭제 rm del
파일 이동 mv move
파일 이름 바꾸기 mv ren
디렉토리 생성 mkdir mkdir
디렉토리 삭제 rmdir rmdir
디렉토리 이동 cd cd
일반적인 도움말 보기 man command command /?
환경 변수 표시 set/printenv set
파일 이름 길이 256자 255자
파일명의 대소문자 구별한다 구별하지 않는다.
실행 파일 퍼미션으로 의해 확장자에 의해
텍스트 파일의 개행 문자 <LF> <CR><LF>
한자 코드 UTF-8(옛날에는 EUC) UTF-8