2022. 1. 3. 21:22ㆍLinux
안녕하세요. brandy 입니다. 오랜만에 올리는 IT 공부 관련 글이네요..!
방학 두 달 동안, Linux를 공부해보고자 합니다.
이전에 학교에서 Unix 명령어 위주로 공부하였었습니다.
Unix를 공부하면서 쉘 화면에 명령어 위주로 공부하는게 그리 재밌지만은 않았지만, 그래도 A+이라는 좋은 성적을 얻었고 기회가 된다면 Linux도 공부해보고 싶었습니다.
물론 두 언어 모두 크게 본질에서 벗어나지는 않는 터라, 복습 겸 공부하기 좋을 것 같습니다.
* 들어가기에 앞서
Unix와 Linux의 차이점은 무엇일까?
결국 Linux도 Unix에서 파생되었습니다. BSD(Berkley Software Distibution)도 Unix 파생의 한 예죠.
Unix는 미국 AT&T 사에서 1969년에 개발되었습니다. 여러 사용자가 동시에 UNIX 시스템을 사용할 수 있으며 여러 프로그램을 동시에 사용할 수 있습니다. UNIX는 다중 사용자 및 멀티 태스킹 환경을 지원하는 것이 가장 큰 특징입니다.
Unix
|
Linux
|
인터넷 서버, 워크스테이션, Solaris, Intel 등 PC에서 주로 사용하는 OS
|
컴퓨터 H/W, S/W, 게임 개발 등에서 사용하는 오픈소스이자 무료 OS
|
전체 시스템을 관리하는 중앙 집중식 OS 커널
|
완전한 OS가 아닌 커널
|
- H/W 제어, 메모리 관리, 파일 관리 및 작업 스케줄링과 같은 중요한 작업 수행
- 사용자가 커널과 통신 가능 |
- Unix는 이식성이 없지만 Linux는 이식성이 뛰어나 다양한 하드 드라이브에서 실행 가능
- 종류는 Ubuntu, Red Hat, CentOS, Devian, 페도라 등 |
Linux보다 비쌈 (무료도 있음)
|
Unix보다 저렴하거나 무료(오픈소스)
|
파일 시스템 지원 : zfs, js, hfx, gps, xfs, gps, xfs, vxfs
|
파일 시스템 지원 : xfs, ramfs, nfs, vfat, cramfsm, ext3, ext4, ext2, ext1, ufs 등
|
그렇다면 Linux는 어떻게 Unix로부터 파생되었을까요?
Linux는 1991년 리눅스 토르발즈가 처음 출시한 운영체제 커널인 리눅스 커널에 기반을 둔 오픈소스 유닉스 계열 운영체제 입니다.
처음에는 인텔 x86 아키텍처에 기반한 개인용 컴퓨터로 만들어졌으나, 기타 운영체제 외에 더 많은 플랫폼으로 이식되었습니다. 안드로이드 스마트폰(리눅스 기반)이 우세해지면서 리눅스는 범용 운영체제 가운데 가장 많은 설치 기반을 보유하고 있기도 합니다.
위에서도 유닉스는 미국 1969년 미국 AT&T사의 벨 연구소에서 켄 톰슨, 데니스 리치 등에 의해 구현되었으며 1971년 유닉스가 발표되었습니다. 당시에는 온전히 어셈블리어로 작성되었으며 당시 어셈블리어로 프로그램이 작성되는 것이 일상적이었습니다. 1973년은 데니스 리치가 선구자적 접근으로 일부 하드웨어 및 입출력 루틴을 제외하고 C언어로 재작성하였습니다. C언어로 작성되었기 때문에 고급 프로그래밍 언어로의 구현이 가능해짐으로써 다른 컴퓨터 플랫폼으로 이식이 가능하게 되었습니다.
그러나 컴퓨터 사업 진입을 금지하던 초기 미국의 '독점금지법'으로 AT&T는 운영체제의 소스코드를 모든 요청자에게 라이선스할 필요가 있었는데, 1984년 AT&T사는 벨 연구소와 분리되어 자유 라이선스를 요구하는 법적 책무를 면제하였고 그로부터 벨 연구소는 유닉스를 사유 제품으로 판매하기 시작하였습니다.
1983년 리처드 스톨만이 소스를 공개하지 못하도록 하는 분위기와 기술 상업화에 대한 반감을 가지고
GNU(GNU is Not Unix) 프로젝트를 시작으로 "완전한 유닉스 호환 소프트웨어 시스템"을 만드는 것을 목표로 하였으며 C언어로 작성된 Unix를 공개하였습니다.
이후에 스톨만은 GNU 프로젝트 운영을 위해 FSF(Free Software Foudation)을 설립하였으며 개발이 진행된 프로그램들은 GNU 프로그램들의 배포 라이선스인 GPL 하에서 판매되었으며 판매 수익은 프로젝트를 운영하는데 사용되었습니다.
그러나 1990년에 GNU 프로젝트는 거의 완성단계에 이르렀으나 운영체제에서 핵심이 되는 '커널'이 빠져있는 상황이었습니다. (커널에 대해서는 다시 다루도록 하겠습니다)
1990년대 초반, 헬싱키 대학교의 한 학생이었던 리눅스 토발즈는 GNU 프로젝트에 적합한 커널을 개발중이었는데, 이것이 바로 지금의 리눅스였습니다. 그 후에 진가를 알아본 FSF와 스톨만은 유닉스 커널과 호환 가능한 커널인 리눅스를 GNU 시스템의 커널로 채택하기로 하고, 리눅스는 GNU C컴파일러인 gcc로 컴파일러된 많은 응용프로그램을 가지게 되었고, 최대한의 사용자에게 확장 가능하고 사용자에게 제어권이 있으며, 어떠한 인터페이스에도 종속되지 않는 개발을 이끌고자 하는 의지가 있었습니다.
그 이후에 리눅스의 적용 범위가 넓어지면서, 현재까지 다양한 분야에 리눅스가 도입되고 있습니다.
저는 생활코딩 이고잉 님의 리눅스 강의로 공부하려고 합니다.
저는 이고잉 님께서 강의에서 소개해주신 AWS의 Cloud9를 사용하였는데요,
AWS에 가입한 지는 좀 됐는데 거의 처음 써보는 터라 앞으로 AWS과 조금이나마 친숙해질 수 있는
좋은 계기가 될 것 같습니다.
제가 설정한 Cloud9 IDE 환경입니다.
Linux Test라는 이름을 가지고 있습니다.
Type이 EC2라고 되어있는데, 궁금해서 찾아보니
EC2를 사용하면 하드웨어에 투자할 필요 없이 더 빠르게 애플리케이션 개발과 배포가 가능하며 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지 관리가 가능하다고 합니다.
Cloud9는 브라우저만으로 코드 작성 실행 디버깅할 수 있는 클라우드 기반 IDE입니다. 코드 편집기와 디버거 및 터미널이 포함되어 있어서 사용하기에 편리합니다. JavaScript, Python, PHP를 비롯하여 널리 사용되는 프로그래밍 언어를 위한 필수 도구가 사전에 패키징되어 제공되므로 새로운 프로젝트를 시작하기 앞서 파일 설치와 개발 머신을 구성할 필요가 없다는 점에서 매력적이었습니다.
사진 설명을 입력하세요.
왼쪽 패널을 보시면 폴더 Linux Test가 디렉토리이고, 그 밑에 있는 hellolinux, empty_file.txt는 디렉토리 내의 파일입니다.
ls (list) : 디렉토리(폴더)안의 파일과 디렉토리를 알 수 있는 Linux 명령어
여러가지 옵션이 존재하며 옵션은 혼합햇거 사용 가능
ex ) ls -al (옵션 앞에 -를 붙여주셔야 합니다!)
현 디렉토리 내의 모든 파일을 보여주고 파일의 자세한 내용을 출력 (a:모든 파일 보여주기. 숨김파일까지 보여준다, l: 파일의 자세한 내용을 보여준다)
앞에 d ~로 시작하면 디렉토리라는 뜻이며, d로 시작하지 않고 -r ~ 같이 시작하면 파일입니다.
d,r,w,x는 일단 간단히 설명드리자면 '권한'의 종류이며
r은 read 읽기, w는 write 쓰기, x는 execute 실행하기의 약자입니다.
- 파일 / d 디렉토리 / l 링크파일 / c 장치파일
pwd (print working directory) : 현재 디렉토리를 알려주는 Linux 명령어이며 유저가 어느 위치에 있는지 알려줍니다.
touch 파일명 : 파일명 빈 내용의 파일 생성
위에서 touch empty_file.txt empty_file이라는 빈 내용의 텍스트 파일을 하나 만들고 ls를 통해 현재 디렉토리 내 모든 파일을 출력해보았는데, empty_file.txt가 있죠?
empty_file.txt 파일에 따로 들어가보니 빈 내용입니다.
'Linux' 카테고리의 다른 글
220411 Linux) 리눅스 디렉토리 구조 (0) | 2022.04.12 |
---|---|
Linux 생활코딩 - I/O Redirection (output) (0) | 2022.01.20 |
Linux 생활코딩 (5) wget,git (0) | 2022.01.10 |
Linux 생활코딩 (4) nano,apt,yum (0) | 2022.01.07 |
Linux 생활코딩 (3) --help,man,mv,sudo (0) | 2022.01.07 |