Terminal 시작

Joshua Kim·2022년 8월 31일
0

terminal

목록 보기
1/6

개발하다보면

이런 열받는 창에 열받는 문자들 쓸일이 많다.
왜 그런지 모르겠지만 맥 쓰다보면 개발자용 프로그램 설치 다 이걸로 해야한다.

이번에 github 블로그 설치할 때를 생각해보면

Tutorial: 일단 jekyll 설치할거면
brew install rbenv
gem install jekyll
이런거 입력하세요~

나: 했는데 안됐는데요? 구글 찾아봐야징

해서 구글 찾아보면 해결책은 더 복잡한 명령어 입력하는 거다.
뫼비우스의 띠처럼 구글과 터미널 창 왔다리갔다리 하다보면 인내심의 한계가 온다.

터미널 정리안하면 개발자 못하겠다는 생각이 들어 정리 시작한다.

이 창이 뭐고 왜 써야하는건가? windows처럼 exe 파일 다운받아서 프로그램 설치하면 얼마나 편할까?

일단 정확한 정의로부터 시작해보자.

터미널과 CLI

터미널: 틀딱시절에 컴퓨터 거대했을 때에 사람들이 접속하기 위해 쓴 단말기. 모니터와 키보드등으로 이루어져 있었다.

지금은 틀딱 시절이 아니니까 우리랑은 상관없는 용어 아닌가? 라고 생각할 수도 있다.

그렇지만 개발자들은 홍대병에 걸렸기 때문에 평범한 사람들처럼 마우스 안쓰고 옛날처럼 검은색 창에 명령어 넣어서 컴퓨터를 조작하는 방법을 선호한다. 그래서 옛날처럼 터미널 쓰는 것이다.

위에서 본 이 창 자체를 "터미널" 이라고 하고 이렇게 터미널에서 텍스트로 컴퓨터를 조정하는 방식CLI, command-line-interface 라고 한다.

참고로 윈도우에서 처럼 그냥 눈으로 보이는 걸 마우스로 클릭해서 컴퓨터 조정하는 방식은 GUI, graphical-user-interface 라고 한다.

쉘(Shell)

위의 스크린샷에서 창에 있는 zsh는 뭘까?
안궁금하다고?
그래도 알아야한다. CLI의 핵심이다.

zsh 말고도 sh, bash, ksh등이 있고, 이들을 쉘이라고 부른다.

셸(shell, 문화어: 쉘, 자령해석프로그램)은 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다

위키백과의 정의이다. 벌써부터 머리가 아프다.

아까의 정의로 돌아가서 다시 생각해보자. 결국 터미널을 이용하는 이유"컴퓨터를 조작" 하기 위함이다.
터미널은 창과 모니터, 키보드를 의미하고, CLI는 일종의 조작방법을 의미한다.
어떻게 컴퓨터를 조작하는지는 위의 두 정의로는 답이 나오지 않는다.

그렇게 생각해보면 그 중간과정이 쉘이라고 할 수 있다.
좀 더 쉘에 대해 알아보자.

"컴퓨터를 조작"하는 것의 정확한 정의는

어떤 입력을 처리하기 위해 프로그램에서 운영체제 커널에 명령을 보내고 커널에서는 물리적 컴퓨터의 연산능력을 사용해 계산한 결과를 출력해주는 일련의 과정이다.

말이 어렵지만 우리가 컴퓨터한테 010101로 연산을 직접 명령하지는 않지 않는가? 커널이 운영체제의 일부로서 아마 그 역할을 하지 않을까?

그림을 보면 더 이해가 쉬울수 있다.

기본적인 개념은 대충은 알것 같다. 개별 명령어에 대한 이해가 깊어지면 shell에 대한, 운영체제에 대한 이해가 깊어지지 않을까?

참고 문헌들)
https://dinfree.com/lecture/core/101_basic_3.html
https://www.44bits.io/ko/post/linux-and-mac-command-line-survival-guide-for-beginner

profile
정시템 22 김예준

0개의 댓글